Параметры пакетов
Итак, по каким параметрам можно фильтровать пакеты:
Источник пакета
Для фильтрации по источнику используется опция -s. Например, запретим все входящие пакеты с узла 192.168.133.133:
iptables -A INPUT -s 192.168.133.133 -j DROP
Можно использовать доменное имя для указания адреса хоста, то есть:
iptables -A INPUT -s test.host.jp -j DROP
Также можно указать целую подсеть (т.е. диапазон адресов):
iptables -A INPUT -s 192.168.133.0/24 -j DROP
Вы можете использовать отрицание (знак !). Например, все пакеты с хостов, отличных от 192.168.133.156 будут уничтожаться:
iptables -A INPUT ! -s 192.168.133.156 -j DROP
Адрес назначения
Для этого нужно использовать опцию -d. Например, запретим все исходящие пакеты на хост 192.168.156.156:
iptables -A OUTPUT -d 192.168.156.156 -j DROP
Как и в случае с источником пакета, можно использовать адреса подсети и доменные имена. Отрицание также работает.
Протокол
Опция -p указывает на протокол. Можно использовать all, icmp, tcp, udp или номер протокола (из файла /etc/protocols).
Порт источника
Указывает на порт, с которого был прислан пакет. Синтаксис такой:
iptables -A INPUT -p tcp --sport 80 -j ACCEPT
Для указания порта необходимо указать протокол (tcp или udp). Можно использовать отрицание.
Порт назначения
Порт назначения. Синтаксис: iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Как и в случае с портом источника, нужно указать протокол. Можно использовать отрицание.
Пакеты установления ТСР-соединения
Опция –p tcp --syn дает возможность применять правила только к TCP пакетам с флагом SYN (пакетам установления соединения). Например, с целью запретить устанавливать соединение с некоторым портом. И обратное, опция –p tcp ! --syn означает все пакеты, кроме пакетов установления соединения.
Входящий и исходящий интерфейс
Опции –i <interface_name> и –o <interface_name> позволяют применять правила только к пакетам, поступающим (или отсылаемых) через определенный физический сетевой интерфейс (eth0, eth1, ppp0, ppp1…).
Фильтрация icmp пакетов
Опция –p icmp –icmp-type <type> позволяет указывать типы icmp- пакетов (наиболее популярные – echo-request и echo-reply).
Действия над пакетами
Правила в цепочке просматриваются последовательно на предмет соответствия текущему обрабатываемому пакету. Если пакет удовлетворяет правилу фильтрации, то к пакету применяется «действие». .Нужно указать, что надо с ним делать. Для этого служит опция -j. Рассмотрим основные действия:
ACCEPT - разрешить пакет (и передать дальше).
DROP - уничтожить пакет.
REJECT - будет отправлено ICMP сообщение «порт недоступен».
LOG - информация об этом пакете будет добавлена в системный журнал Syslog. Пакет при этом продолжает «движение» по цепочке дальше.
В качестве действия можно указать и имя пользовательской цепочки. Например, перекинем все пакеты с локальной сети в цепочку, где будет производиться дополнительная проверка:
iptables -A INPUT -s 192.168.200.0/24 -j LOCAL_NET
Т.е. существует возможность создавать пользовательские цепочки, куда будут перенаправляться пакеты (проверка сигнатуры пакета переходит к пользовательской цепочке). Если пакет «пройдет» пользовательскую цепочку до конца и никакое действие над ним не будет выполнено, то он «вернется» в вызвавшую цепочку к следующему правилу.
