Home > FreeBSD > Использование ipfw table

Использование ipfw table

March 19th, 2009

Использование таблиц файрвола IPFW в некоторых случаях может быть очень удобным. Например, если нужно заблокировать много ip при dos-атаке. Суть в том, что все ip-адреса помещаются в таблицу и в правилах файрвола оперируем уже таблицей целиком.

ipfw table 3 add 10.10.11.1 #добавление в таблицу
ipfw table 3 add 10.11.11.2/24 #добавление в таблицу
ipfw table 3 list #посмотреть что в таблице
ipfw add deny ip from table\(3\) to me #пример исп-я. Слэши нужны!
ipfw table 3 delete 10.10.11.1 #удаляем
ipfw table 3 flush #чистим всю таблицу

Оперативно обновлять таблицу можно, к примеру, так:

#!/bin/sh
ipfw table 3 flush
cat /etc/ip.txt | while read ip; do
  ipfw table 3 add $ip
done

FreeBSD ,

  1. ares
    October 14th, 2010 at 16:20 | #1

    Очень помогло, пасибо!

  2. July 31st, 2012 at 16:18 | #2

    А я добавляю вот таким нехитрым скриптом, который выделяет из файла ip адреса, и отбрасывает комментарии(; – Точка с запятой или # – решетка).
    При желании это можно использовать в самом скрипте rc.firewall, для удобства загрузки таблиц в описании правил, что в принципе у меня и реализовано, если кому нужно, могу опубликовать весь rc.firewall.

    #!/bin/sh –

    TABLE_NAME=’3′ # Имя таблицы
    TABLE_FILE=’/etc/ip.txt’ # Файл со списком ip
    fwcmd=”/sbin/ipfw -q”

    ${fwcmd} /dev/stdin <<_END_OF_RULESET_
    `awk '{ \
    sub(/[;#].*/,"",$0); \
    if ( $1 ~ /^[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]\.[0-9]?[0-9]?[0-9]$/ ) \
    print "table '$TABLE_NAME' add " $1 \
    }' $TABLE_FILE`
    _END_OF_RULESET_

  3. admin
    July 31st, 2012 at 16:53 | #3

    Удобный скрипт, спасибо.

  1. No trackbacks yet.