Firewall под Юниксами - настройка и использование
Спецвыпуск Хакера, номер #005, стр. 005-088-2
Иногда, когда в твоем файле правил содержится большое количество условий, то будет возникать задержка при проходе пакетов из-за того, что IPFilter будет просматривать все строчки до конца. Чтобы этого избежать, можно использовать ключевое слово 'quick':
block in quick all
pass in all
Если пакет удовлетворяет правилу и в правиле присутствует ключевое слово 'quick', то IPFilter не будет продолжать дальнейшее чтение, а сразу применит к пакету заданное правило.
Фильтровка по IP-адресам
Для фильтровки по заданным адресам существуют ключевые слова 'from' и 'to'. Слово 'any' подразумевает любой возможный IP-адрес. Пример правила:
block in quick all from 192.168.0.0/16 to any
Фильтровка по протоколам
Для фильтровки пакетов по протоколам используется ключевое слово 'proto'. Эта фича очень полезна для предотвращения некоторых типов атак. Вот пример блокировки ICMP пакетов:
block in quick proto icmp any to any
Такое правило будет блокировать ВСЕ ICMP пакеты, что не очень правильно, так как ICMP выполняет много важных задач в работе сети. Нам требуется запретить только ICMP пакеты типа Echo Request (8), которые чаще всего используются для флуд-атак. Для решения этой задачи существует ключевое слово 'icmp-type':
block in quick proto icmp from any to any icmp-type 8
Теперь пинга от нас никто не дождется ;). Далее следует неполный список основных типов и кодов ICMP пакетов, а также их описание.
0 - echo reply (ответ на ping)
3 - цель не доступна
3 (код 0) - сеть не доступна
3 (код 1) - узел не доступен
3 (код 2) - протокол не доступен
3 (код 3) - порт не доступен
4 (код 4) - временная приостановка передачи
5 - перенаправление
5 (код 0) - перенаправление для сети
5 (код 1) - перенаправление для узла
8 - echo request (запрос на ping)
Код для типа ICMP-пакета задается ключевым словом 'code'. В качестве примера запретим пакеты 5-го типа с кодом 1. Дело в том, что в атаке Winfreez используется флуд ICMP пакетами именно этого типа и кода с адреса маршрутизатора. При этом у атакуемого хоста быстро изменяется таблица маршрутизации, результатом чего является подвисание машины. Итак, наше запрещающее правило будет выглядеть следующим образом:
block in quick proto icmp from any to any icmp-type 5 code 1
Фильтровка по интерфейсам
Данная возможность позволяет фильтровать пакеты, идущие с разных сетевых интерфейсов. Для этого существует ключевое слово 'on':
block in quick on ppp0 proto igmp from any to any
Данное правило запретит все IGMP пакеты, идущие с сетевого интерфейса ppp0.
Если ты не знаешь имена своих сетевых интерфейсов, воспользуйся командой ifconfig:
[zlob]: ifconfig -a
lo0: flags=8009<UP,LOOPBACK,MULTICAST> mtu 32972
inet 127.0.0.1 netmask 0xff000000
de0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500
media: Ethernet 10baseT
status: active
inet 192.168.0.1 netmask 0xffffff00 broadcast 192.168.0.255
ne0: flags=8863<UP,BROADCAST,NOTRAILERS,RUNNING,SIMPLEX,MULTICAST> mtu 1500