Изменение правил 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)).