Использование таблиц файрвола 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
FreeBSD, ipfw
firewall_enable="YES"
firewall_script="/usr/local/etc/ipfw.rules"
создать файл с правилами, проверить что в них нам будет доступ по ssh. Например такой:
#!/bin/sh
ipfw -q -f flush
cmd="ipfw -q add "
sshport="222"
# remote control
$cmd 150 allow tcp from 1.2.3.1 to me dst-port $sshport
# services
$cmd 1000 allow icmp from any to any
$cmd 1020 allow tcp from any to me dst-port 21,25,80
$cmd 1021 allow udp from any 53 to me
$cmd 1022 allow udp from any to me 53
$cmd 1023 allow udp from any to me 161
# general
$cmd 1035 allow ip from any to any via lo0
$cmd 1040 allow ip from me to any
$cmd 1050 allow ip from any to any established
# all traffic for some hosts
$cmd 1070 allow ip from 1.2.3.1 to me
/etc/rc.d/ipfw forcestart &
система сама подгрузит модуль ядра. Необходимо отметить, что в данном случае последним будет добавлено правило запрещающее весь трафик, поэтому нужно убедиться, что мы не отключим доступ для нас самих.
Перед включением рекомендуется поставить задачу в кронтаб, на всякий случай, чтобы сработала через пару минут:
25 22 * * * root ipfw -q add 10 allow all from any to any
FreeBSD
FreeBSD, ipfw