Firewall под Юниксами - настройка и использование

Спецвыпуск Хакера, номер #005, стр. 005-088-3

media: Ethernet manual

inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255

sl0: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 296

sl1: flags=c010<POINTOPOINT,LINK2,MULTICAST> mtu 296

ppp0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500

ppp1: flags=8010<POINTOPOINT,MULTICAST> mtu 1500

tun0: flags=10<POINTOPOINT> mtu 3000

tun1: flags=10<POINTOPOINT> mtu 3000

bridge0: flags=0<> mtu 1500

bridge1: flags=0<> mtu 1500

Фильтровка пакетов по портам

Этот метод чаще всего используется администраторами для запрещения использования некоторых сетевых сервисов из внешнего мира. Например:

block in quick on de0 proto tcp from any to server1 port = 23

pass in quick on ne0 proto tcp from 192.168.0.0/24 to server1 port = 23

Данное правило запретит все соединения, идущие с интерфейса de0 с протоколом tcp на 23 порт (telnet) и разрешит подключения с интерфейса ne0 из локальной сети на сервер, сетевое имя которого в нашем примере server1, на 23 порт. Возможные операции для определения порта: = , != , > , < , <= , =>.

Также возможна фильтровка по диапазонам портов:

порт1 <> порт2 вступит в силу, если пакет идет на порт больше значения порт1 и меньше значения порт2.

порт1 >< порт2 вступит в силу, если пакет идет на порт меньше значения порт1 и больше значения порт2.

Например:

block in quick from any to any port 137<>139

Это правило запретит все входящие соединения на порты 137,138,139.

Ответ на блокируемые пакеты

При обычном сканировании TCP портов, если идет попытка подключения на блокируемый нами порт, результатом будет timeout подключения. В нормальной же ситуации, если бы на этом порту ничего не было и мы не блокировали бы его, система, которая пыталась подключиться к нам, получила бы обратно TCP пакет с RST флагом. Чтобы достичь такого же эффекта, используется ключевое слово return-rst. В следующем примере на попытку подключения на 23 порт (telnet) с интерфейса ppp0 мы возвращаем TCP пакет с флагом RST - это будет являться для сканирующей системы знаком, что порт якобы закрыт:

block return-rst in quick on ppp0 proto tcp from any to any port = 23

Такая возможность существует и для возврата заданных типов ICMP пакетов на блокируемые пакеты:

block return-icmp(3) in quick proto icmp from any to any icmp-type 8

В данной ситуации ICMP-пакет будет послан с обратным адресом системы, на которой установлен firewall, а не той системы, которой предназначался пакет. Если же необходимо послать icmp-пакет с обратным адресом системы, которой предназначался пакет, то используется ключевое слово return-icmp-as-dest:

block return-icmp-as-dest(3) proto udp from any to 20.20.20.0/24 port = 111

Запись пакетов в лог

Как и в любом firewall'е, в IPFilter предусмотрена возможность записи пакетов в лог, используя ключевое слово 'log':

block in quick log from proto tcp any to any port = 139

Теперь все TCP пакеты, идущие на 139 порт, будут блокированы и записаны в лог.

В следующем примере мы блокируем и записываем в лог все пакеты, идущие на broadcast адреса с ppp0 интерфейса. Это правило может быть использовано для предотвращения использования твоей сети для smurf атак.

Назад на стр. 005-088-2  Содержание  Вперед на стр. 005-088-4

ttfb: 2.9900074005127 ms