ipfirewall синтаксис фильтров


СИНТАКСИС

[interface] disp proto [modifiers] from endpoint to endpoint
ОПИСАНИЕ
Здесь приводится полное описание синтаксических правил для составления пакетных фильтров. В основном рассматривается именно синтаксис (т.е. строка описания фильтра), но и вопросам семантики (т.е. назначению фильтра) тоже уделяется некоторое место.

Общая форма описания фильтра приведена выше в подразделе СИНТАКСИС. Необязательное поле interface определяет имя сетевого интерфейса, к которому применим данный фильтр. Имя интерфейса зависит от конкретной модели маршрутизатора и может, например, иметь вид eth1 или ar2
для обозначения ethernet или радио-интерфейса соответственно. Если поле interface задано, то фильтр будет применяться только к тем пакетам, которые поступают через этот интерфейс.

Поле disp (сокращение от disposition) определяет действие, которое должно быть выполнено в случае срабатывания данного фильтра. Возможные значения: accept, accept log или reject. Если указано accept, то пакет свободно пройдёт сквозь фильтр. Если указано accept log, то пакет свободно проходит сквозь фильтр и информация о нём отображается на системной консоли. Использование reject приводит к тому, что пакет будет отброшен фильтром и информация о нём будет отображена на системной консоли.

Поле proto определяет конкретный протокол семейства IP, используемый фильтром. Возможные значения: tcp, udp, icmp и all.

Необязательное поле modifiers может быть использовано для указания некоторых дополнительных характеристик пакета. Они описаны позже на этой странице.

Обязательное ключевое слово from разделяет поля proto и  modifiers от адреса источника (endpoint).  Ключевое слово to отделяет адрес источника от адреса получателя (endpoint).

endpoint определяет адреса источника или получателя. Точный синтаксис полей  endpoint зависит от значения поля  proto. Если proto указан как all или icmp, то endpoint содержит адресную информацию. Если  proto задано как udp или tcp , то endpoint содержит адресную информацию и необязательный список портов.

Адресная информация задаётся как IP адрес и необязательная маска (mask). IP адрес должен задаваться в традиционном числовом формате (nn.nn.nn.nn). Необязательная маска может быть задана как длиной маски в битах, так и числовым значением в формате (nnn.nnn.nnn.nnn).
Возможные форматы задания адресной информации:
nn.nn.nn.nn
nn.nn.nn.nn:xxx.xxx.xxx.xxx
nn.nn.nn.nn/NN
Двоеточие указывает на то, что маска задана в числовом адресном формате.
Символ "/"  указывает на использование длины маски (число начальных бит, установленных в единицу, остальные будут установлены в ноль).

Например: 192.168.9.0/24 описывает адрес сети 192.168.9.0  с длиной маской в 24 бита.
Второй вариант:  192.168.9.0:255.255.255.0.
Запись 0/0  описывает все возможные  IP адреса.

Список портов задаётся в виде простого перечисления номеров портов разделённых пробелами.
Первый элемент в списке может быть парой портов, разделённых двоеточием. Эти порты будут определять диапазон номеров (от меньшего к большему,  включая указанные).
В текущей реализации может быть указано до 10 номеров портов в списке.

Заметьте, что пакеты, которые не являются первым фрагментом фрагментированного IP-пакета, не проверяются на номер порта (поскольку номер порта фигурирует только в первом фрагменте). Это не является серьёзным ограничением, поскольку если первый фрагмент будет отвергнут фильтром, то остальные фрагменты будут отвергнуты IP протоколом на целевой машине.

Поле modifiers используется для указания дополнительных характеристик пакета, которые должен учитывать фильтр.
Возможные значения:

tcp_connection
определяет, что фильтр относится только к пакетам установления TCP соединения.
connection является синонимом tcp_connection.

Технически,  пакет запроса соединения имеет TCP заголовок с установленным флагом SYN и сброшенным флагом ACK.
ip_fragment
указывает, что фильтр относится только к фрагментированным пакетам.

Технически, либо поле offset в заголовке пакета имеет ненулевое значение, либо установлен бит more fragments.
ip_head_fragment
указывает, что фильтр применим только к первому фрагменту фрагментированного пакета.

Технически, поле offset равно нулю и бит more fragments установлен.
ip_tail_fragment
указывает, что фильтр применим ко всем фрагментам фрагментированного пакета, кроме первого.

Технически, поле offset ненулевое (значение бита more fragments не имеет значения).
ip_option
фильтр применим к IP-пакетам, которые имеют любые установленные IP опции (кроме опции  NO-OP).

ip_recroute_option
фильтр применим только к IP-пакетам, которые имеют включенные опции record-route или timestamp IP и не имеют никаких других опций.

Эти опции могут использоваться злоумышленниками для построения карты вашей сети. Они не несут никакой другой угрозы.
ip_misc_option
фильтр применим только к пакетам, имеющим одну или более IP-опций кроме record-route, timestampIP или NO-OP.

Многие из IP опций группы misc могут быть использованы и используются злоумышленниками для обхода фильтров и проникновения в чужую сеть.
 
Есть несколько дополнительных правил для поля modifiers , которые нужно отметить: