1

Linux: IPTABLES — руководство: часть 3 — параметры правил

Опубликовано:

IPTABLES — руководство: часть 1 — основы IPTABLES

IPTABLES — руководство: часть 2 — управление IPTABLES

IPTABLES — руководство: часть 4 — цели для правил

Содержание:

Ниже приведены параметры, которые могут использованы при создании правил и примеры с ними.

Основные параметры правил

-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

TCP

Параметры правил 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

Понравилась статья, расскажи о ней друзьям, нажми кнопку!

Комментирование закрыто.