Руководство FreeBSD

Изменение правил IPFW


Синтаксис этой формы команды такой:

ipfw [-N] команда [номер] действие [log] протокол адреса [параметры]

При использовании этой формы команды доступен один флаг:

-N

Разрешение адресов и имен сервисов при отображении.

Задаваемая команда может быть сокращена до более короткой уникальной формы. Существующие команды:

add

Добавление правила к списку фильтрации/учета

delete

Удаление правила из списка фильтрации/учета

Предыдущие версии IPFW использовали отдельные записи для фильтрации и учета пакетов. Современные версии учитывают пакеты для каждого правила.

Если указано значение номер, оно используется для помещения правила на определенную позицию в цепочке. Иначе правило помещается в конец цепочки с номером на 100 больше, чем у предыдущего правила (сюда не включается правило по умолчанию с номером 65535).

С параметром log соответствующие правила выводят информацию на системную консоль, если ядро собрано с опцией IPFIREWALL_VERBOSE.



Существующие действия:

reject

Отбросить пакет и отправить в адрес источникаICMP пакет, сообщающий о недостижимости хоста или порта.

allow

Пропустить пакет как обычно. (синонимы: pass, permit, и accept)

deny

Отбросить пакет. Источнику не выдается ICMP сообщение (как если бы пакет вообще не достиг цели).

count

Обновить счетчик пакета, но не применять по отношению к нему правила allow/deny. Поиск продолжится со следующего правила в цепочке.

Каждое действие может быть записано в виде более короткого уникального префикса.

Могут быть определены следующие протоколы:

all

Соответствует всем IP пакетам

icmp

Соответствует ICMP пакетам

tcp

Соответствует TCP пакетам

udp

Соответствует UDP пакетам

Поле адреса формируется так:

источник адрес/маска [порт] цель адрес/маска [порт] [via интерфейс]

Вы можете указать port только вместе с протоколами, поддерживающими порты (UDP и TCP).

Параметр via опционален и может содержать IP адрес или имя домена локального IP интерфейса, или имя интерфейса (например ed0), он настраивает правило на соответствие только тем пакетам, которые проходят через этот интерфейс.
Номера интерфейсов могут быть заменены на опциональную маску. Например, ppp* будет соответствовать PPP интерфейсам ядра.

Синтаксис, используемый для указания адреса/маски:

адрес

или

адрес/маска-биты

или

адрес:маска-шаблон

Вместо IP адреса возможно указание существующего имени хоста. маска-биты это десятичный номер, указывающий количество бит, которые должны быть установлены в маске адреса. Например, 192.216.222.1/24 создаст маску, соответствующую всем адресам подсети класса C (в данном случае, 192.216.222). A valid hostname may be specified in place of the IP address. маска-шаблон это IP, который будет логически перемножен с заданным адресом. Ключевое слово any может использоваться для обозначения ``любого IP адреса''.

Номера портов указываются в следующем формате:

порт [,порт [,порт [...]]]

для указания одного порта или списка портов, или

порт-порт

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

Доступные параметры:

frag

Срабатывает, если пакет не является первым пакетом дейтаграммы.

in

Соответствует входящим пакетам.

out

Соответствует исходящим пакетам.

ipoptions spec

Срабатывает, если заголовок IP содержит перечисленный через запятую список параметров, указанных в spec. Поддерживаемые параметры IP: ssrr (strict source route), lsrr (loose source route), rr (record packet route), и ts (time stamp). Действие отдельных параметров может быть изменено путем указания префикса !.

established

Срабатывает, если пакет является частью уже установленного TCP соединения (т.е. если установлены биты RST или ACK). Вы можете поднять производительность межсетевого экрана, поместив правило с established

близко к началу цепочки.

setup

Соответствует, если пакет является попыткой установки TCP соединения (установлен бит SYN, а бит ACK не установлен).

tcpflags флаги

Срабатывает, если заголовок TCP содержит список перечисленных через запятую флагов. Поддерживаемые флаги: fin, syn, rst, psh, ack, и urg.Действие правил по отдельным флагам может быть изменено указанием префикса !.

icmptypes типы

Срабатывает, если тип пакета ICMP находится в списке типы. Список может быть указан в виде любой комбинации диапазонов и/или отдельных типов, разделенных запятыми. Обычно используемые типы ICMP: 0 echo reply (ping reply), 3

destination unreachable, 5 redirect, 8 echo request (ping request), и 11 time exceeded (используется для обозначения истечения TTL, как с traceroute(8)).


Содержание раздела