Linux netfilter что это

Для системного администратора

—>
Notice: Undefined variable: t in /var/www/user97185/data/www/system-administrators.info/yandex-ad.php on line 15

Notice: Undefined variable: r in /var/www/user97185/data/www/system-administrators.info/yandex-ad.php on line 15
Рекомендую: Фриланс-биржа | Кэшбэк-сервис | Интернет-бухгалтерия

netfilter и iptables в Linux: принципы работы, настройка

netfilter (встроенные в ядро linux в отличие от ipchains умеет отслеживать соединения (stateful packet filtering), при этом пакеты обязательно дефрагментриуются; цепочки правил объединяются в таблицы различного назначения (filter, nat, mangle), используются специальные модули для различных протоколов (в т.ч. прикладного уровня). Также позволяет менять заголовки пакетов и помечать пакеты для дальнейшего использования при маршрутизации и управлении трафиком. В основном, работает на межсетевом уровне TCP/IP, но захватывает транспортный уровень (TCP, UDP)и уровень доступа к сети (MAC адреса).Одновременное использование данных из 2 пакетов по-прежнему невозможно, для настоящей фильтрации на прикладном уровне пользуйтесь прокси серверами.

В статье описываются:

  • предварительные условия использования netfilter
  • основные понятия (таблицы, цепочки, правила) и путь пакета
  • отслеживание соединений
  • утилита управления цепочками iptables
  • действия (target)
  • шаблоны (match)
  • утилиты iptables-save и iptables-restore
  • сервис в Red Hat Linux
  • примеры и советы

Предварительные условия

Для работы netfilter необходимо иметь ядро 2.3.15 или более новое,
при генерации которого включены CONFIG_NETFILTER, CONFIG_IP_NF_IPTABLES, CONFIG_IP_NF_FILTER (таблица filter), CONFIG_IP_NF_NAT (таблица nat), CONFIG_BRIDGE_NETFILTER, а также многочисленные дополнительные модули: CONFIG_IP_NF_CONNTRACK (отслеживание соединений), CONFIG_IP_NF_FTP (вспомогательный модуль для отслеживания FTP соединений), CONFIG_IP_NF_MATCH_* (дополнительные типы шаблонов соответствия пакетов: LIMIT, MAC, MARK, MULTIPORT, TOS, TCPMSS, STATE, UNCLEAN, OWNER), CONFIG_IP_NF_TARGET_* (дополнительные действия в правилах:REJECT, MASQUERADE, REDIRECT, LOG, TCPMSS), CONFIG_IP_NF_COMPAT_IPCHAINS для совместимости с прочие CONFIG_IP_NF_* и CONFIG_IP6_NF_*.Полезно также указать CONFIG_PACKET.

Наличие netfilter в ядре определяется по файлам /proc/net/ip_tables_names (список используемых таблиц), /proc/net/ip_tables_targets (2.6) и /proc/net/ip_tables_matches (2.6).

Управление осуществляется с помощью утилиты iptables.

Функциональность netfilter может расширяться с помощью модулей ядра. Головной модуль ядра называется iptable_filter, модуль поддержки утилиты iptables называется ip_tables, вспомогательные модули обычно имеют префикс “ipt_” (ipt_state, ipt_REJECT, ipt_LOG; хотя – ip_conntrack). Большинство модулей загружается автомагически, но некоторые всё же приходиться загружать вручную (ip_conntrack_ftp – иначе может не работать в режиме Active; ip_conntrack_irc – иначе может не работать отсылка файлов по DCC; ip_nat_ftp; ip_nat_irc).

Управление дополнительными модулями ядра осуществляется с помощью разделяемых библиотек(см. /lib/iptables/) для утилиты iptables. netfilter позволяет эмулировать ipfwadm и ipchains с помощью модулей ядра (с некоторых пор перестали включаться в стандартное ядро), при этом модуль ip_tables необходимо
выгрузить.

Таблицы, цепочки, путь пакета

Каждый проверяемый IP-пакет проходит по цепочке (“сквозь строй”) правил, определяющих, что с ним делать. Правило состоит из шаблона, которому должен соответствовать пакет, и действия. Каждая цепочка имеет действие по умолчанию (политику).В отличие от ipchains правила входной цепочки (INPUT) применяются после принятия решения о том, что это “наш” пакет и маршрутизировать его не надо; правила выходной цепочки (OUTPUT) применяются не только к исходящим наружу пакетам, но и к передаваемым на локальный интерфейс. Правила цепочки FORWARD применяются только к транзитным пакетам. Имеется возможность добавлять к набору свои цепочки. netfiler обрабатывает несколько наборов (таблиц) цепочек: таблица filter приблизительно соответствует набору цепочек в ipchains, таблица nat обеспечивает функциональность подстановки адресов (только первый пакет соединения обрабатывается полностью, в последующих пакетах соединения адреса подменяются по аналогии с первым пакетом, остальные действия не производятся), таблица mangle – преобразование пакетов (манипулирование TOS, TTL, маркеры).

Приблизительная схема обработки пакетов (взята из NAG2, по-моему, ради красоты
картинки художник пожертвовал истиной: пропал маршрут из второй точки маршрутизации на localhost,он не проходит через FORWARD):

В таблицах nat и mangle имеются цепочки PREROUTING и POSTROUTING.Правила цепочки PREROUTING применяется к пакетам сразу после получения пакета на входе интерфейса перед выбором маршрута, а правила цепочки POSTROUTING непосредственно перед выводом пакета через интерфейс. В таблице nat нет цепочек INPUT и FORWARD.

Реальная последовательность обработки входящего пакета, предназначенного для локального процесса такова:

  1. просматривается цепочка PREROUTING таблицы mangle (используется для преобразования пакетов),здесь же происходит отслеживание соединений
  2. просматривается цепочка PREROUTING таблицы nat (используется для DNAT,
    фильтровать здесь не стоит)
  3. маршрутизация: если пакет надо маршрутизовать вовне, то переходим к обработке проходящего пакета
  4. просматривается цепочка INPUT таблицы mangle
  5. просматривается цепочка INPUT таблицы filter

Реальная последовательность обработки пакета, уходящего с нашего хоста такова:

  1. маршрутизация: определение исходящего адреса, адреса назначения, используемого интерфейса; если пакет маршрутизируется внутрь, то переходим к предыдущей процедуре (п. 1 или 4?)
  2. просматривается цепочка OUTPUT таблицы mangle, фильтровать здесь не стоит,
    здесь же происходит отслеживание локально создаваемых соединений
  3. просматривается цепочка OUTPUT таблицы nat (NAT для локально сгенерированных пакетов)
  4. повторная маршрутизация, т.к. в таблицах mangle и nat пакет мог быть изменён; если пакет маршрутизируется внутрь, то переходим к предыдущей процедуре (п. 1 или 4?)
  5. просматривается цепочка OUTPUT таблицы filter
  6. просматривается цепочка POSTROUTING таблицы mangle
  7. просматривается цепочка POSTROUTING таблицы nat (используется для SNAT, фильтровать здесь не стоит)

Реальная последовательность обработки проходящего пакета (от п.3 первой процедуры):

  1. просматривается цепочка FORWARD таблицы mangle
  2. просматривается цепочка FORWARD таблицы filter
  3. повторная маршрутизация, т.к. в таблице mangle пакет мог быть изменён;
    если пакет маршрутизируется внутрь, то переходим к первой процедуре (п. 1 или 4?)
  4. просматривается цепочка POSTROUTING таблицы mangle
  5. просматривается цепочка POSTROUTING таблицы nat (используется для SNAT и Masquerading, фильтровать здесь не стоит)

Текст и иллюстрации документации netfilter имеют множество разночтений, оставляя свободу воли (то ли пакетов, то ли разработчиков ;). Автор iptables-tutorial рекомендует использовать тестовый набор правил, записывающий в журнал имя каждой пройденной пакетом цепочки и таблицы.

Отслеживание соединений

netfilter отслеживает соединения с помощью модуля ip_conntrack (имеет параметр hashsize, задающий размер хеша) и протоколозависимых модулей (icmp, tcp, ftp, tftp, irc, amanda, sctp) при обработке цепочки PREROUTING таблицы nat (для локально сгенерированных пакетов при обработке цепочки OUTPUT) и хранит их в специальной таблице. При этом все пакеты обязательно дефрагментируется. Соединения удаляются из таблицы по истечению интервала ожидания при отсутствии очередного пакета. При выгрузке модуля (см. IPTABLES_MODULES_UNLOAD в /etc/sysconfig/iptables-config) таблица соединений очищается. Рассматриваемый пакет может находиться с точки зрения настройки (у ядра своя таблица состояний) в одном из 4 состояний относительно ранее отслеженных соединений:

  • NEW (замечен первый пакет в соединении; обычно это пакет с флагом SYN, но может быть и без него: в результате удаления из таблицы по истечению периода ожидания ранее установленного соединения или балансировки нагрузки по нескольким сетевым экранам; однако, см. ниже /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_loose)
  • ESTABLISHED (после получения ответного пакета соединение переходит в это состояние из состояния NEW или RELATED; в частности, второй пакет при установлении TCP-соединения (SYN/ACK) уже находится в состоянии ESTABLISHED; для ICMP: Echo, Timestamp, Information, Address mask; [ответы ICMP также могут иметь это состояние, если они являются результатом посланного нами пакета?])
  • RELATED (соединение, порождённое соединением в состоянии ESTABLISHED, например, передача ftp данных, порождённая управляющим ftp соединением, или DCC для IRC или ICMP сообщение об ошибке; требуется протоколозависимый модуль)
  • INVALID (классифицировать пакет не удалось; например, ICMP ответ на несуществующий пакет; такие пакеты рекомендуется выбрасывать)
Читайте также:  Windows installer all versions

Пакет в состоянии NEW с точки зрения conntrackможет быть продолжением реального соединения (т.е. не иметь бита SYN), например, в результате изменения цепочек, загрузки модуля и т.д.. В любом случае, при “отлове” подозрительных соединений необходимо предусмотреть сброс попыток соединений, в которых мошенниками подставлен наш адрес:

Максимально возможное число отслеживаемых соединений задаётся в файле /proc/sys/net/ipv4/ip_conntrack_max (каждое соединение занимает 350 байт невытесняемой памяти). Набор заплаток tcp-window-tracking для ядра 2.4 (входит в ядро 2.6) обеспечивает возможность задать значения по умолчанию для интервалов ожидания при удалении записи о соединении из таблицы для различных ситуаций в /proc/sys/net/ipv4/netfilter/ip_conntrack_*_timeout* (в секундах). Мне пришлось записать 600 в ip_conntrack_tcp_timeout_close[_wait] по всей цепочке, иначе завершение соединения блокировалось (FIN/ACK от клиента или RST от сервера), часть завершающих пакетов всё равно “режется” (клиент закрывает полузакрытый сокет только когда ему требуется следующее соединения, а запись о соединении из таблицы conntrack уже удалена, а увеличивать ip_conntrack_tcp_timeout_close до суток не хочется). Также позволяет “порулить” поведением машины состояний через переменные (/proc/sys/net/ipv4/netfilter/):

  • ip_conntrack_tcp_be_liberal
    1. все пакеты, не попадающие в окно, считаются INVALID
    2. только RST пакеты, не попадающие в окно, считаются INVALID (пришлось поставить)
  • ip_conntrack_log_invalid (выводить в журнал INVALID пакеты)
  • ip_conntrack_tcp_loose (при “подхватывании” уже установленного
    соединения сколько пакетов требуется в обоих направлениях для подтверждения;если 0, то установленное соединение не подхватывается вовсе; по умолчанию – 3)
  • ip_conntrack_max_retrans (число повторных пакетов без подтверждения ACK, которое требуется для удаления соединения из таблицы после дополнительного
    ожидания ip_conntrack_timeout_max_retrans секунд; по умолчанию – 3)

Таблицу текущих соединений можно посмотреть в файле /proc/net/ip_conntrack

  • тип протокола
  • номер протокола
  • осталось секунд до удаления этого соединения из таблицы
  • [состояние-соединения-в-терминах-ядра]
  • исходящий адрес
  • адрес назначения
  • исходящий порт или ICMP-тип
  • порт назначения или ICMP-код
  • [ICMP-идентификатор]
  • [UNREPLIED] (соединение в состоянии ESTABLISHED, но ждёт подтверждения от протоколозависимого модуля, например, это был второй пакет при установлении TCP-соединения)
  • ожидаемые адреса и порты (ICMP-тип и код) ответного пакета
  • [ASSURED] (соединение перешло в состояние ESTABLISHED и протоколозависимый модуль подтвердил наличие соединения, например, завершён третий этап установления TCP-соединения)
  • use=1 (?)

Управление цепочками производится с помощью программы iptables.

После загрузки определены цепочки (все с политикой ACCEPT) INPUT, FORWARD и OUTPUT в таблице filter; PREROUTING, POSTROUTING и OUTPUT в таблице nat;
PREROUTING, INPUT, FORWARD, OUTPUT и POSTROUTING в таблице mangle. Удалить их нельзя. Формат команды:

  • -A имя-цепочкиправило(добавить правило в конец цепочки; ключ –set-counters позволяет установить счётчики пакетов и байтов)
  • -I имя-цепочкиномерправило (вставить правило в цепочку перед правилом с указанным номером, нумерация с 1; ключ –set-counters позволяет установить счётчики пакетов и байтов)
  • -R имя-цепочкиномерправило (заменить;
    ключ –set-counters позволяет установить счётчики пакетов и байтов)
  • -D имя-цепочкиномер (удалить правило с указанным номером, нумерация с 1)
  • -D имя-цепочкиправило (удалить правило по текстуальному совпадению)
  • -C имя-цепочкипакет (тестировать прохождение пакета;
    исходящий адрес, адрес назначения, протокол, интерфейс, порты задаются соответствующими ключами)
  • -L [имя-цепочки] (показать список правил; дополнительные ключи:
    • -v (вывести дополнительную информацию, в частности, счётчики)
    • –exact (показывать счётчики без округления до KB, MB и т.д.)
    • –numeric (показывать адреса и номера портов в виде чисел)
    • –line-numbers (выводить номера правил)
  • -F имя-цепочки (удалить все правила из цепочки)
  • -Z имя-цепочки (обнулить счетчики)
  • -N имя-цепочки (создать цепочку)
  • -X имя-цепочки (удалить пустую цепочку, на которую нет ссылок)
  • -P имя-цепочкидействие (изменить действие по умолчанию: ACCEPT,
    DROP, QUEUE, RETURN)
  • -E старое-имя-цепочкиновое-имя-цепочки (переименовать цепочку)

Действия (target)

Действия (действие в недопустимом месте эквивалентно DROP), при завершении
просмотра текущей цепочки, производится просмотр следующих по порядку таблиц:

  • ACCEPT – пропустить пакет; просмотр таблицы завершается
  • DROP – выбросить молча; просмотр завершается не только для текущей цепочки, но и для других таблиц
  • REJECT – выбросить, известив отправителя (–reject-with тип-извещения); типы извещения: tcp-reset (только для TCP!), icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable (по умолчанию), icmp-proto-unreachable, icmp-net-prohibited или icmp-host-prohibited; для цепочек INPUT, FORWARD и OUTPUT; просмотр завершается не только для текущей цепочки, но и для других таблиц
  • LOG – записать в журнал syslog; приоритет по умолчанию – warning (–log-level приоритет); источник всегда – kern; каждая запись содержит имена входного (IN=) и выходного (OUT=) интерфейсов, MAC адреса (MAC=), исходный IP-адрес (SRC=), IP-адрес назначения (DST=), длину пакета,
    флаги и указатели TCP (SYN, URGP=, WINDOW=), ToS (TOS=), ? (PREC=), TTL (TTL=), флаги IP (DF), идентификатор (ID=), протокол (PROTO=), порты источника (SPT=) и назначения (DPT=), ? (RES=); в начале записи можно вставить свою строку длиной до 29 символов (–log-prefix “строка);
    можно добавить в журнал номера TCP-последовательностей (–log-tcp-sequence), TCP опции (–log-tcp-options) и IP опции (–log-ip-options)
  • ULOG – записать в собственный журнал (используется интерфейс netlink и групповая рассылка; позволяет делать такие вещи, как запись журнала в MySQL, обработка в реальном времени и т.д. (см. проект ULOGD);
    параметры: –ulog-nlgroup netlink-группа, –ulog-prefix “строка”, –ulog-cprange длина, –ulog-qthreshold пакетов-в-группе
  • имя пользовательской цепочки – происходит переход на выполнение подпрограммы (пользовательской цепочки), по завершении её выполняется следующее правило, если в подпрограмме не было выполнено какое завершающее просмотр действие (ACCEPT, DROP, REJECT)
  • RETURN – завершение просмотра текущей цепочки; если это была пользовательская цепочка, то происходит возврат к месту вызова; для базовой цепочки производится действие по умолчанию
  • QUEUE – поставить пакет в очередь на обработку пользовательской программой
    (см. Netfilter Hacking HOW-TO)
  • действия только для таблицы nat:
    • DNAT – подмена в пакете адреса назначения; проверка производится только для первого пакета соединения (цепочка PREROUTING или OUTPUT), остальные пакеты преобразуются “по аналогии”; ответные пакеты преобразуются соответственно; новый адрес назначения (или адреса для балансировки нагрузки) задаётся параметром
      –to-destination IP-адрес[:порт][IP-адрес]; используется для “проброса” соединения из интернет на сервер, находящийся внутри; чтобы к такому серверу можно было обратиться изнутри сети по внешнему адресу, необходимо в дополнение к DNAT преобразовать исходный адрес (SNAT), иначе ответы сервера пойдут клиенту напрямую минуя обратное преобразование DNAT, а клиент их не примет; к сожалению, при этом в журнал сервера не попадут реальные IP адреса клиентов; также при этом легко получить open relay из своего SMTP сервера; поэтому SNAT необходимо ограничить локальными исходящими адресами; проблему можно решить, сделав отдельный DNS сервер для локальной сети; и не забудьте добавить аналогичное (DNAT) правило в цепочку OUTPUT для доступа к серверу с самого сетевого экрана (если это необходимо) и правила в таблицу filter
    • SNAT – подменить в пакете исходящий адрес на указанный или из указанного интервала, при необходимости исходящий номер порта на случайный номер своего порта из заданного интервала, занести эту информацию в таблицу, чтобы при получении ответа было можно проделать обратную операцию; новый исходящий адрес (или адреса для балансировки нагрузки) задаётся параметром
      –to-source IP-адрес[IP-адрес][:портпорт];
      проверка производится только для первого пакета соединения (цепочка POSTROUTING), остальные пакеты преобразуются “по аналогии”; ответные пакеты преобразуются соответственно; используется для скрытия структуры внутренней сети при выходе пользователей в интернет или при нехватке общемаршрутизируемых IP-адресов;
      если свой IP-адрес получается динамически, то лучше воспользоваться MASQUERADE;
    • MASQUERADE – подменить в пакете исходящий адрес на адрес своего исходящего интерфейса (этот адрес может выделяться динамически по DHCP или PPP), при необходимости исходящий номер порта на случайный номер своего порта из заданного интервала, занести эту информацию в таблицу, чтобы при получении ответа было можно проделать обратную операцию; интервал портов задаётся параметром –to-ports портпорт; проверка производится только для первого пакета соединения (цепочка POSTROUTING), остальные пакеты преобразуются “по аналогии”; ответные пакеты преобразуются соответственно; таблица очищается при отключении интерфейса; используется для скрытия структуры внутренней сети при выходе пользователей в интернет
      или при нехватке общемаршрутизируемых IP-адресов при динамическом получении внешнего IP-адреса; более общее средство – см. SNAT
    • REDIRECT – подмена в пакете номера порта назначения на указанный порт, адрес назначения на свой адрес (?); локальные пакеты перенаправляются на адрес 127.0.0.1; проверка производится только для первого пакета соединения (цепочка PREROUTING или OUTPUT),
      остальные пакеты преобразуются “по аналогии”; ответные пакеты преобразуются соответственно; новый порт (интервал портов?) назначения задаётся параметром –to-ports портпорт;
      используется для организации прозрачного прокси
    • MIRROR – удалён в ядре 2.6 (меняет местами исходящий IP адрес и IP адрес назначения; предполагалось удивить хакеров)
  • действия только для таблицы mangle:
    • CLASSIFY – установка маркера классификации при управлении трафиком (tc, qdiscs), цепочка POSTROUTING (–set-class MAJOR:MINOR)
    • TOS – установка или изменение полей TOS (–set-tos тип-сервиса);
      типы сервиса: Normal-Service, Minimize-Cost, Maximize-Reliability, Maximize-Throughput, Minimize-Delay; только в цепочках FORWARD и OUTPUT; используется при маршрутизации
    • DSCP – установка или изменение полей Differentiated Services, развитие ToS(–set-dscp число или –set-dscp-class класс)
    • ECN – сброс полей ECN (–ecn-tcp-remove)
    • TTL – изменение TTL (–ttl-set число; –ttl-dec число; –ttl-inc число); можно использовать увеличение на 1 в дополнение к NAT,
      чтобы скрыть наличие сетевого экрана, или установку в одно и то же значение, чтобы скрыть внутреннюю структуру сети
    • TCPMSS – изменение размера TCP сегмента (Maximum Segment Size) явно
      (–set-mss байт) или с привязкой к размеру MTU (–clamp-mss-to-pmtu устанавливает MSS равным Path MTU – 40);
      только в момент установления соединения (т.е. у пакета д.б. установлен флаг SYN); особенно полезен, если ISP блокирует сообщения ICMP о необходимости фрагментации, а в результате при пересылке маленьких блоков (ssh) всё работает, а когда доходит до больших блоков (scp), то соединение “подвисает”
    • MARK – устанавливается маркер данного пакета (–set-mark число);
      сохраняется только в пределах хоста; используется при маршрутизации
    • NETMAP – адреса из указанной исходящей сети преобразуются в новые указанные адреса (–to); номера хостов внутри сети не изменяются; используется вместо перенумерации сети; использовать в цепочке PREROUTING; аналогичный результат (но более эффективно) можно получить с помощью iproute2
    • SAME – адреса из указанной исходящей сети преобразуются в новые указанные адреса (–to); номер хоста изменяется (интервал новых IP-адресов меньше исходного), но только при необходимости; использовать в цепочке PREROUTING
  • имя цепочки, определяемой модулем расширения
  • пустое действие – только увеличить счетчики байтов и пакетов и перейти к следующему правилу в цепочке, счетчики – 64-битные

Шаблоны

Шаблон правила может включать (если в качестве адреса хоста указывается
имя, соответствующее нескольким адресам, то добавляется соответствующее
количество правил; восклицательный знак инвертирует шаблон; несколько подшаблонов действуют как “И”):

  • –proto[col] | -p [!] протокол
    (можно указывать имя протокола (см. /etc/protocols) или номер протокола; имя протокола ALL означает tcp или udp или icmp)
  • –source | -s | –src [!] address[/mask]
    (маска может быть записана как в виде 4-х десятичных чисел через точку, так и указанием длины маски сети)
  • –destination | -d | –dst [!] address[/mask]
  • –in-interface | -i [!] имя[+] (имя входного интерфейса;
    например, ppp0, lo, eth0; шаблон “+” – соответствует любой подстроке; можно использовать только в цепочках INPUT, FORWARD и PREROUTING)
  • –out-interface | -o [!] имя[+] (имя выходного интерфейса;
    например, ppp0, lo, eth0; шаблон “+” – соответствует любой подстроке; можно использовать только в цепочках OUTPUT, FORWARD и POSTROUTING)
  • [!] –fragment | -f (только для последующих кусков фрагментированных пакетов; при использовании отслеживания соединений все пакеты
    дефрагментируются при обработке цепочки PREROUTING таблицы nat)
  • –match | -mимя-модуля-расширения (модули tcp, udp и icmp
    приводятся в действие неявно, при использовании шаблона –protocol)

Параметры модуля расширения tcp

  • –source-port [!] [port[:port]]
    (можно использовать номера портов или имена сервисов из /etc/services; если опустить первый порт интервала, то подразумевается 0; если опустить последний порт интервала, то подразумевается 65535)
  • –destination-port [!] [port[:port]]
  • –tcp-flags [!] маска-флагов обязательные-флаги
    (маска-флагов – список через запятую проверяемых флагов (SYN, ACK, FIN, RST, URG, PSH, ALL, NONE); обязательные-флаги – список через запятую флагов, которые д.б. установлены в пакете; остальные флаги из числа проверяемых должны быть сброшены)
  • [!] –syn | -y (пакеты с установленным флагом SYN, эквивалент записи “–tcp-flags SYN,RST,ACK SYN”; отрицание обеспечивает соответствие пакетов, не имеющих флагов SYN и ACK одновременно)
  • [!] –tcp-option номер-опции

Параметры модуля расширения udp

  • –source-port [!] [port[:port]]
  • –destination-port [!] [port[:port]]

Параметры модуля расширения icmp

  • –icmp-type [!] тип-сообщения[/код]
    (можно использовать номера или имена типов и кодов: 8, 8/0, network-redirect;
    чтобы получить список допустимых имён, выполните команду: iptables -p icmp –help)

Параметры модуля расширения mac

  • –mac-source [!] MAC-адрес (только в цепочках PREROUTING, FORWARD
    и INPUT)

Параметры модуля расширения mark

  • –mark [!] число (маркер пакета (число без знака) устанавливается действием MARK, только в пределах данного хоста)

Параметры модуля расширения limit (защита от DoS атак или ограничение записей в журнал; используется модель дырявого ведра: задаётся объём ведра и скорость его самоопустошения, шаблону соответствуют пакеты, помещающиеся в ведро):

  • [!] –limit штук/единица-времени(задаёт скорость самоопустошения ведра; допустимы следующие единицы времени: second, minute, hour, day)
  • –limit-burst штук (задаёт ёмкость ведра)

Параметры модуля расширения iprange (задание интервалов IP-адресов)

  • [!] –src-range начальныйIPадрес-конечныйIPадрес
  • [!] –dst-range начальныйIPадрес-конечныйIPадрес

Параметры модуля расширения multiport (список портов, до 15 портов)

  • –source-port список,портов,через,запятую
  • –destination-port список,портов,через,запятую
  • –port список,портов,через,запятую (из порта в порт с тем же номером)

Параметры модуля расширения length (длина пакета)

  • [!] –length от:до

Параметры модуля расширения owner (только в цепочке OUTPUT, не всегда срабатывает)

  • –uid-owneruid
  • –gid-ownergid
  • –pid-ownerpid
  • –sid-ownersession-id

Параметры модуля расширения pkttype

Параметры модуля расширения recent (динамическая генерация правил по событию;
ведётся несколько именованных списков событий, для каждого события записывается время, исходящий адрес, исходящий порт, число пакетов, TTL)

  • –nameимя (какой список использовать)
  • [!] –set (добавить событие в список)
  • [!] –rcheck (проверить, что исходящий адрес данного пакета имеется в списке
    событий)
  • [!] –update (проверить, что исходящий адрес данного пакета имеется в списке
    событий и обновить время)
  • [!] –remove (проверить, что исходящий адрес данного пакета имеется в списке
    событий и удалить)
  • –secondsсекунд (только в сочетании с –rcheck или –update; какой интервал
    времени допустим)
  • [!] –hitcountштук (только в сочетании с –rcheck или –update;
    можно в сочетании с –seconds; соответствие после указанного числа пакетов)
  • [!] –rttl (дополнительно проверить, что TTL такой же)
  • –rdest (сохранить в списке адрес и порт назначения)

Параметры модуля расширения state (состояние соединения согласно conntrack):

  • –stateперечень,состояний,через,запятую (состояния:
    INVALID, ESTABLISHED, NEW, RELATED)

Параметры модуля расширения conntrack (расширение возможностей модуля state):

  • [!] –ctstate список,состояний,соединения (допустимо использовать
    имена состояний: INVALID, ESTABLISED, NEW, RELATED, SNAT, DNAT)
  • [!] –ctstatus список,внутренних,состояний,соединения (допустимо использовать
    имена внутренних состояний: NONE, EXPECTED, SEEN_REPLY, ASSURED
  • [!] –ctprotoпротокол
    (можно указывать имя протокола (см. /etc/protocols) или номер протокола)
  • –ctorigsrc [!] address[/mask]
    (проверка исходящего адреса до преобразования)
  • –ctorigdst [!] address[/mask]
    (проверка адреса назначения до преобразования)
  • –ctreplsrc [!] address[/mask]
    (проверка исходящего адреса предполагаемого ответа)
  • –ctrepldst [!] address[/mask]
    (проверка адреса назначения предполагаемого ответа)

Параметры модуля расширения helper (протоколозависимый модуль отслеживания
соединений):

  • –helper имя_модуля_расширения_conntrack[номер-порта]

Параметры модуля расширения tos (также имеются модуля dscp, ecn)

  • –tos [!] тип-сервиса (Normal-Service, Minimize-Cost,
    Maximize-Reliability, Maximize-Throughput, Minimize-Delay; это только названия!)

Параметры модуля расширения tcpmss (Maximum Segment Size in TCP, только для
пакетов с SYN или SYN/ACK)

  • –mss [!] от:до

Параметры модуля расширения ttl

Модуль расширения unclean не имеет параметров. Позволяет отлавливать “неправильные” пакеты.

Параметры модуля расширения ah (IPSec, необходимо также указать номер протокола 51)

  • –ahspi Security-Parameter-Index

Параметры модуля расширения esp (IPSec, необходимо также указать номер протокола 50)

  • –espspi Security-Parameter-Index


Этот пост September 21, 2007 at 12:42 pm опубликовал smolokhov в категории Linux, Безопасность. Желающие могут оформить RSS подписку на комменты. Both comments and trackbacks are currently closed.

4 комментов оставлено (Add 1 more)

Для тупых в конце приписка – Взято с сайта Bog BOS. И ссылочка.

похоже админ этого сайта просто скопипастил эту статью, а сам не хрена не знает :))

а можно пример с нуля, публикации внутренного веб-сервера в Интернет пошагово?

Источник

Читайте также:  Астра линукс подключение сетевого диска
Оцените статью