ПОСТРОЙ СЕБЕ САМ:
БЫСТРЫЙ СПОСОБ ПОЗНАКОМИТЬСЯ С IPTABLES

ViTLS (vitls@beshtau.ru)

Спецвыпуск Xakep, номер #024, стр. 024-062-4


--------------------------------------------------------------------------------

#!/bin/sh

IPT=/usr/sbin/iptables

$IPT -F INPUT

$IPT -A INPUT -i ppp0 -p tcp -s 0/0 --sport 0:65535 -d 0/0 --dport 80 -j ACCEPT

$IPT -A INPUT -i ppp0 -p tcp -s 0/0 --sport 0:65535 -d 0/0 --dport 1:1024 -j DROP

$IPT -A INPUT -i ppp0 -p udp -s 0/0 --sport 0:65535 -d 0/0 --dport 53 -j ACCEPT

$IPT -A INPUT -i ppp0 -p udp -s 0/0 --sport 0:65535 -d 0/0 --dport 1:1024 -j DROP

--------------------------------------------------------------------------------

Теперь построчно:

#!/bin/sh

В этой строке мы говорим командной оболочке, что данный сценарий будет выполняться программой /bin/sh.

IPT=/usr/sbin/iptables

Объявляем переменную IPT, куда заносим строку, содержащую путь к тому месту, где находится утилита iptables. В данном случае /usr/sbin/iptables. В своей системе ты этот путь можешь узнать, выполнив в командной строке команду whiсh iptables.

$IPT -F INPUT

В результате выполнения сценария $ITP будет заменена на /usr/sbin/iptables, то есть мы обозначаем саму утилиту iptables. Это нужно для удобства, чтобы по десять раз не писать одно и то же. Команда -F INPUT приказывает очистить цепочку INPUT.

$IPT -A INPUT -i ppp0 -p tcp -s 0/0 --sport 0:65535 -d 0/0 --dport 80 -j ACCEPT

Данная строка добавляет в цепочку INPUT фильтр по критериям: пакет должен прийти с интерфейса ppp0 (-i ppp0), пакет должен быть по протоколу tcp (-p tcp), прийти с любого адреса (-s 0/0), с любого из портов, указанных в диапазоне (--sport 0:65535), пакет должен быть адресован любому адресу (-d 0/0) и прийти на порт 80 (--dport 80). Если пакет подходит под ВСЕ условия, он направляется в цепочку ACCEPT (-j ACCEPT). То есть принимается системой. Если пакет не подходит под данное правило фильтрации, то он переходит к следующему правилу в цепочке:

$IPT -A INPUT -i ppp0 -p tcp -s 0/0 --sport 0:65535 -d 0/0 --dport 1:1024 -j DROP

Данная строка добавляет в цепочку INPUT фильтр по критериям: пакет должен прийти с интерфейса ppp0 (-i ppp0), пакет должен быть по протоколу tcp (-p tcp), прийти с любого адреса (-s 0/0), с любого из портов, указанных в диапазоне (--sport 0:65535), пакет должен быть адресован любому адресу (-d 0/0) и прийти на любой порт в указанном диапазоне (--dport 1:1024). Если пакет подходит под ВСЕ условия, он направляется в цепочку DROP (-j DROP). То есть уничтожается системой.

Короче, в этом правиле уничтожаются все пакеты на порты от 1 до 1024, которые не подпадают под предыдущее правило. Задача же стояла закрыть все, кроме 80-го порта, вот мы и сделали это.

Далее:

$IPT -A INPUT -i ppp0 -p udp -s 0/0 --sport 0:65535 -d 0/0 --dport 53 -j ACCEPT

Данная строка добавляет в цепочку INPUT фильтр по критериям: пакет должен прийти с интерфейса ppp0 (-i ppp0), пакет должен быть по протоколу udp (-p udp), прийти с любого адреса (-s 0/0), с любого из портов, указанных в диапазоне (--sport 0:65535), пакет должен быть адресован любому адресу (-d 0/0) и прийти на порт 53 (--dport 53). Если пакет подходит под ВСЕ условия, он направляется в цепочку ACCEPT (-j ACCEPT). То есть принимается системой.

Назад на стр. 024-062-3  Содержание  Вперед на стр. 024-062-5