IPTABLES — руководство: часть 1 — основы IPTABLES
IPTABLES — руководство: часть 2 — управление IPTABLES
IPTABLES — руководство: часть 4 — цели для правил
Содержание:
- Основные параметры правил
- Параметры правил TCP
- Параметры правил UDP
- Параметры правил ICMP
- Дополнительные модули и параметры
Ниже приведены параметры, которые могут использованы при создании правил и примеры с ними.
Основные параметры правил
-p, --protocol
— правило сработает для протокола; имя протокола должно быть указано явно, в видеTCP, UDP или ICMP, и должно присутствовать в файле
/etc/protocols
Примеры:
iptables -A INPUT -p tcp
-s, --src, --source
— фильтр по исходному (source — источник) адресу; можно указать как один адрес — так и подсеть; при установленном флаге ! перед указанием фильтра — значение будет инвертировано (обратное значение: —source адрес является > —source ! адрес не является);
Примеры:
iptables -A INPUT -s 192.168.1.1
iptables -A INPUT -s ! 192.168.1.1
-d, --dst, --destination - фильтр по адресу назначения (destination - назначение); остальные правила аналогичны --source
Пример:
iptables -A INPUT -d 192.168.1.1
-i, --in-interface
— правило для входящего трафика на указанном интерфейсе; используется только в цепочках INPUT, FORWAR и PREROUTING; допустимо использовать маски, например + — для всех интерфейсов, или eth+ — для всех интерфейсов eth0, eth1 и т.д.; допустимо использование инвертации;
Примеры:
iptables -A INPUT -i eth0
iptables -A INPUT -i eth+
iptables -A INPUT -i ! eth0
-o, --out-interface
— правило для исходящего трафика на указанном интерфейсе; остальные правила аналогичны
--in-interface
Параметры правил TCP
--sport, --source-port
— правило для порта-источника; если не указан порт — сработает для всех портов; можно указывать имя сервиса, либо порт в виде цифр; при указании имени сервиса — оно должно присутствовать в файле
/etc/services
использование портов вместо имён сервисов уменьшит нагрузку и ускорит обработку; допустимо указать диапазон портов, например 80:1024 — для всех портов от 80 до 1024 включительно, либо :80 — для всех портов от 0 до 80 включительно; допустимо инвертирование значения (!);
Примеры:
iptables -A INPUT -p tcp --sport 22
iptables -A INPUT -p tcp --sport ssh
iptables -A INPUT -p tcp --sport 80:1024
iptables -A INPUT -p tcp --sport :80
iptables -A INPUT -p tcp --sport ! 80
--dport, --destination-port
— правило для порта назначения; остальные правила аналогичны
--source-port
Примеры:
iptables -A INPUT -p tcp --dport 22
--tcp-flags
— правило сработает при наличии TCP-флагов;
Пример:
iptables -p tcp --tcp-flags SYN,FIN,ACK SYN
Параметры правил UDP
--sport, --source-port
— аналогично
--source-port
TCP
--dport, --destination-port
— аналогично
--destination-port
Параметры правил ICMP
iptables -A INPUT -p icmp --icmp-type 8
--icmp-type
— проверяет соответствие типа ICMP — пакета;,
Дополнительные модули и параметры
Перечислю только наиболее интересные и используемые.
Модули подключаются с помощью опции
-m
.
Addrtype — фильтрация на основе типа адреса.
--src-type
— фильтр на основе типа адреса источника; можно указать один или несколько типов, разделив их запятой; допустимо инвертирование значения (!);
Примеры:
iptables -A INPUT -m addrtype --src-type UNICAST
iptables -A INPUT -m addrtype --src-type ! UNICAST
iptables -A INPUT -m addrtype --src-type MULTICAST, BROADCAST
—dst-type — то же самое, но для адреса получателя пакета;
Модуль Comment — добавление своего комментария к фильтру.
--comment
— добавление своего комментария к фильтру; максимальное значение — 256 символов;
Пример:
iptables -A INPUT -m comment --comment "This is comment"
Модуль Connmark — действие на основе метки, установленной действием
CONNMARK
или
MARK --set-mark
(действия смотрите в следующей части).
--mark
— фильтр на основе наличия указанной метки;
Примеры
iptables -A INPUT -m connmark --mark 12 -j ACCEPT
Модуль IP range — расширенный аналог
--source
и
--destination
. Позволяет указывать даиапазонIP.
--src-range
— диапазон IP источников; в отличии от
--source
и
--destination
позволяет указать диапазон между двумя конкретными адресами, а не подсетью; допустимо инвертирование (!);
Пример:
iptables -A INPUT -p tcp -m iprange --src-range 192.168.1.13-192.168.2.19
--dst-range
— аналогично
--src-range
, но для адресов назначения;
Модуль Length — фильтрация по длине пакета.
--length
— допустимо указание диапазона размеров, например 1400:1500; допустимо инвертирование значения;
Примеры:
iptables -A INPUT -p tcp -m length --length 1400
iptables -A INPUT -p tcp -m length --length 1400:1500
Модуль Limit — ограничение количества пакетов в единицу времени. Хорошо описан тут>>>.
--limit
— средняя скорость заполнения «счётчика»; это же значение учитывается для уменьшения счётчика в
--limit-burst
указывается в виде число пакетов/время, где время указывается в виде /second /minute /hour /day; по-умолчанию 3 пакета в час, или 3/hour; использование инвертирования невозможно;
Пример:
iptables -A INPUT -m limit --limit 3/hour
--limit-burst
— максимальное значение счётчика для срабатывания правила; каждый раз, когда значение
--limit
превышается — счётчик увеличивается на единицу, пока не достигнет
--limit-burst
, после чего срабатывает правило, в котором используется
--limit-burst
Пример:
iptables -A INPUT -m limit --limit-burst 5
Модуль Mac — фильтрация по MAC (Ethernet Media Access Control).
--mac-source
— MAC-адрес источника; допустимо использование инвертирования (!); используется только в цеочках P
REROUTING, FORWARD
и
INPUT
Примеры
iptables -A INPUT -m mac --mac-source 00:00:00:00:00:01
Модуль Mark — фильтр на основе метки (действия
CONNMARK
и
MARK
см. в следующем посте).
--mark
— метка, установленная
MARK
Пример:
iptables -t mangle -A INPUT -m mark --mark 1
Модуль Multiport — фильтр по нескольким портам. В отличии от
--sport
допускает использование нескольких независимых портов, а не диапазона.
--source-port
— список портов источника; максимум 15 значений, разделённых запятыми; должен использоваться только с
-p tcp
или
-p udp
Пример:
iptables -A INPUT -p tcp -m multiport --source-port 22,53,80,110
--destination-port
— аналогично
--source-port
, но для портов назначения;
Пример:
iptables -A INPUT -p tcp -m multiport --destination-port 22,53,80,110
--port
— аналогично для обоих значений
--source-port
и
--destination-port
, для обоих направлений; сработает только в случае, если порт источника и порт назначения идентичны;
Пример:
iptables -A INPUT -p tcp -m multiport --port 22,53,80,110
Модуль Owner — фильтры на основе владельца пакета.
--cmd-owner
— фильтр по имени сервиса, который сгенерировал пакет; допустимо использование инвертации с помощью(!);
Пример:
iptables -A OUTPUT -m owner --cmd-owner httpd
--uid-owner
— фильтр по UID (User ID) пользователя, который сгенерировал пакет;
Пример:
iptables -A OUTPUT -m owner --uid-owner 500
--gid-owner
— аналогично, но для GID (Group ID
);
Пример:
iptables -A OUTPUT -m owner --gid-owner 0
--pid-owner
— аналогично, но для PID (Process ID
);
Пример:
iptables -A OUTPUT -m owner --pid-owner 78
--sid-owner
— аналогично, но для SID (Service ID
);
Пример:
iptables -A OUTPUT -m owner --sid-owner 100
Модуль Packet type — фильтры на основе типа адресации пакета.
--pkt-type
— допустимо использование unicast , broadcast или multicast типов; допустим использование инвертации;
Пример:
iptables -A OUTPUT -m pkttype --pkt-type unicast
Модуль State — фильтры на основе состояния соединения.
--state
— указывает состояние пакета в соединении; могут быть использованы четыре тип состояния —INVALID, ESTABLISHED, NEW
и RELATED
. INVALID
означает, что пакет ассоциируется с неизвестным стримом или соединением и может содержать некорретные данные или заголовки. ESTABLISHED
— пакет принадлежит к уже установленному в обоих направлениях соединению и полностью валиден. NEW
— пакет устанавливает или будет устанавливать новое соединение, или пакет соединения,у которого ещё не было передачи данных в обоих направлениях; RELATED
— пакет, который устанавливает новое соединение, которое ассциировано с уже установленным соединением (пример — пассивный режим FTP, или ошибкаICMP, связанная с каким-то TCP или UDP соединением );
Пример:
iptables -A INPUT -m state --state RELATED,ESTABLISHED