четверг, 20 апреля 2017 г.

Немного об iptables часть 1


iptables - утилита для работы с межсетевым экраном (Netfilter) в Linux.
В Netfilter сетевые пакеты пропускаются через цепочки правил, существует 5 типов:
  1. PREROUTING — для первичной обработки входящих пакетов.
  2. INPUT — для входящих пакетов.
  3. OUTPUT — для выходящих пакетов.
  4. FORWARD — для входящих пакетов, перенаправленных на выход (заметьте, что перенаправляемые пакеты проходят сначала цепь PREROUTING, затем FORWARD и POSTROUTING).
  5. POSTROUTING — для окончательной обработки исходящих пакетов.
Цепочки организованы в таблицы, существует 4 таблицы: raw, mangle, nat, filter
Таблица filter используется по умолчанию для фильтрации пакетов. т.е например при добавлении правила в цепочку:
 iptables -A INPUT -s 153.99.0.0/16 -j DROP (блокировка всех входящих пакетов из сети 153.99.0.0/16)
оно попадет в цепочку filter. Чтобы добавить цепочку в конкретную таблицу используют ключ -t: 
iptables -t nat -A INPUT правило
Действий, которые совершаются над пакетами (политики), довольно много, но вот три основных:
Пропустить/разрешить (ACCEPT)
Отбросить без уведомления (DROP)
Отбросить с уведомлением (REJECT)
 Некоторые параметры iptables(регистр учитывается):

-A - добавить правило в цепочку;
-С - проверить все правила;
-D - удалить правило;
-I - вставить правило с нужным номером;
-L - вывести все правила в текущей цепочке;
-n - чтобы вывод был только числовой, без перевода ip в доменное имя, портов в их названия и т.п.
-v - чтобы вывод был более информативным (verbose)
-S - вывести все правила;
-F - очистить все правила;
-N - создать цепочку;
-X - удалить цепочку;
-P - установить действие по умолчанию.
-p - указать протокол, один из tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp,
mh;
-s - указать ip адрес устройства-отправителя пакета;
-d - указать ip адрес получателя;
-i - входной сетевой интерфейс;
-o - исходящий сетевой интерфейс;
-j - выбрать действие, если правило подошло.

Часть два: пример использования iptables