Листинг файла /etc/rc.conf
firewall_enable=»YES»
firewall_script=»/etc/rc.firewall»
Для начала создадим 2 обычных текстовых файла, содержащих списки «хороших» и «плохих» ip-адресов и сетей. Назовем их badip.cfg и goodip.cfg:
# cd /etc
# touch badip.cfg
# touch goodip.cfg
Заполняем файлы ip-адресами и сетями в формате CIDR, например:
# echo "10.10.10.10/24" > badip.cfg
Затем напишем небольшой скрипт addip.sh, который будет загружать ip-адреса из файлов в таблицы ipfw:
#!/bin/sh
##################
fwcmd="/sbin/ipfw"
goodip="/usr/local/etc/webmin/ipfw/allow"
badip="/usr/local/etc/webmin/ipfw/deny"
##################
$fwcmd -f table all flush # очищаем все таблицы
##################
cat $goodip |while read line; do
$fwcmd table 1 add $line
done
##################
cat $badip |while read line; do
$fwcmd table 2 add $line
done
##################
Редактируем скрипт ipfw, добавляя в него следующие строки:
cmd="/sbin/ipfw -q add"
ipfw -f table all flush
/usr/local/etc/webmin/ipfw/addip.sh
...
$cmd 0100 allow ip from "table(1)" to me # разрешаем доступ от "хороших" хостов и сетей
$cmd 0200 deny ip from "table(2)" to me # баним всех "плохишей"
В дальнейшем, мы можем вносить изменения в файлы и, выполняя скрипт addip.sh, динамически менять содержимое таблиц ipfw, подгружая в них новую информацию.
Содержимое таблиц можно посмотреть командой:
# ipfw table 1 list
Полностью очистить таблицу можно так:
# ipfw table 1 flush
Полезный совет:
Во FreeBSD есть хорошая утилита at, которая позволяет однократно выполнить ту или иную команду в заданное время. Таким образом, настраивая фаервол удаленно, Вы можете подстраховать себя, введя отключение фаервола через указанное время. Например, вы настроили все правила и думаете — Сейчас я включу все, а вдруг потеряю доступ? Ответ — Легко может такое произойти. Но, используя утилиту at, мы себя подстрахуем:
Синстаксис у нее простой:# at time
Используем его, введем:at 23:55
ipfw -q -f flush
Что бы выйти из режима, нажмите CTRL+DJob 10 will be executed using /bin/sh
Все. Можно включать наш фаервол, через 1 минуту он будет отключен автоматически и в случае чего Вы вернете себе доступ
Источник: http://www.dwolfix.ru/tablitsy-fayervola-ipfw.html
Примеры использования таблиц файрвола IPFW.
Очень удобно, если нужно заблокировать много ip адресов.
ipfw table 10 add 192.168.1.5 #добавление в таблицу ipfw table 10 add 192.168.1.0/24 #добавление в таблицу подсеть ipfw table 10 list #посмотреть что в таблице ipfw add deny ip from table(10) to me # Все с таблицы 50 ко мне ipfw table 10 delete 192.168.1.5 #удаляем из таблицы ipfw table 10 flush #чистим всю таблицу