man iptables

Переводы man
Forum rules
Внимание! Раздел служит ТОЛЬКО ДЛЯ РАЗМЕЩЕНИЯ локализованых версий man-страниц Unix-систем! Любое несоответствие сразу же будет удалятся, а автор его наказываться!
Post Reply
User avatar
Raven
Бородатый сис
Бородатый сис
Posts: 2793
Joined: 03 Mar 2010, 15:12
ОС: RHEL 8
Location: Из серверной

man iptables

Post by Raven » 24 Jan 2011, 15:34

IPTABLES(8)

ИМЯ
  • iptables - инструмент администрирования фильтра пакетов IPv4 и NAT
ОБЗОР
  • iptables [-t таблица] -[AD] цепочка описание-правил [опции]
    iptables [-t таблица] -I цепочка [номер-правила] описание-правил [опции]
    iptables [-t таблица] -R цепочка номер-правила описание-правил [опции]
    iptables [-t таблица] -D цепочка номер-правила [опции]
    iptables [-t таблица] -[LFZ] [цепочка] [опции]
    iptables [-t таблица] -N цепочка
    iptables [-t таблица] -X [цепочка]
    iptables [-t таблица] -P цепочка цель [опции]
    iptables [-t таблица] -E старое-имя-цепочки новое-имя-цепочки
ОПИСАНИЕ
Iptables используется для установки, настройки и просмотра таблиц правил фильтрации IP-пакетов
в ядре Linux.

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

ЦЕЛИ
Правило брандмауэра (межсетевого экрана) определяет критерии для пакета и цели. Если пакет не
попадает под действие правила, проверяется следующее правило в цепочке; если попадает -
проверяется правило, указанное в цели, которая может быть именем новой цепочки или одно из
специальных целей: ACCEPT, DROP, QUEUE или RETURN.

ACCEPT принять (пропустить далее) пакет DROP проигнорировать (отбросить) пакет. QUEUE передать
пакет в адресное пространство пользователя (получение пакета пользовательским процессом зависит
от обработчика очереди; в ядрах 2.4.x и 2.6.x до 2.6.13 использовался обработчик ip_queue; в
ядрах начиная с 2.6.14 появился дополнительный обработчик nfnetlink_queue; в этом случае пакеты
с целью QUEUE отправляются очереди номер 0; см. также цель NFQUEUE ниже по тексту). RETURN
остановить применение правил этой цепочки и передать пакет следующему правилу предыдущей
(вызывающей) цепочки. Если достигается конец встроенной (предопределённой) цепочки или в ней к
пакету применяется правило с целью RETURN, то окончательное действие над пакетом (цель) определяется стратегией (политикой) цепочки.

ТАБЛИЦЫ
Существует три независимых таблицы (какие именно таблицы присутствуют в данный момент --
зависит от конфигурации ядра и наличия его модулей).

-t, --table таблица
Задаёт таблицу, к которой будет применена команда. Если ядро скомпилировано с
автоматической загрузкой модулей, то при необходимости будет загружен модуль,
соответствующий таблице. Итак, таблицы:
  • filter:
    Таблица используемая по-умолчанию (если опция -t не задана). Эта таблица содержит
    предопределённые цепочки INPUT (для входящих пакетов - направленных в локальные
    сокеты), FORWARD (для проходящих пакетов) и OUTPUT (для исходящих пакетов -
    сгенерированных в локальной системе).

    nat:
    Эта таблица используется, когда встречается пакет, устанавливающий новое соединение.
    Она содержит три предопределённых цепочки: PREROUTING (для изменения входящих
    пакетов), OUTPUT (для изменения локально сгенерированных пакетов перед их
    отправлением) и POSTROUTING (для изменения всех исходящих пакетов).

    mangle:
    Эта таблица используется для специальных изменений пакетов. Она содержала две
    предопределённые цепочки в ядрах до версии 2.4.17: PREROUTING (для изменения
    входящих пакетов до их перенаправления-маршрутизации) и OUTPUT (для изменения
    локально сгенерированных пакетов перед их маршрутизацией). Начиная с ядер версии
    2.4.18, включены ещё три другие предопределённые цепочки: INPUT (для изменения
    входящих пакетов), FORWARD (для изменения проходящих пакетов) и POSTROUTING (для
    изменения исходящих пакетов).

    raw:
    Используется преимущественно для создания исключений в слежении за соединениями
    совместно с целью NOTRACK. Для неё в netfilter сделаны специальные вставки, имеющие
    высший приоритет, и поэтому вызываемые до ip_conntrack и всех других таблиц. В
    таблице имеются следующие предопределённые цепочки: PREROUTING (для пакетов
    приходящих из сетевых интерфейсов) OUTPUT (для пакетов генерируемых локальными
    процессами)
ОПЦИИ
Опции iptables могут быть разделены на несколько групп.

КОМАНДЫ
Эти опции определяют действие, выполняемое в данном сеансе работы программы. В командной
строке может быть указана только одна из этих опций, если противоположное явно не указано в
описании. Длинные команды можно сокращать до первых букв, но их должно быть достаточно, чтобы
программа могла однозначно идентифицировать команду.
  • -A, --append цепочка определение-правила
    Добавить одно или несколько правил в конец указанной цепочки. Если имя источника и/или
    стока (назначения) соответствует нескольким адресам, правило будет добавлено для всех
    возможных комбинаций адресов.

    -D, --delete цепочка определение-правила
    -D, --delete цепочка номер-правила
    Удалить одно или несколько правил из указанной цепочки. Существует две версии этой
    команды: правило может быть указано через его номер в цепочке (счёт первого правила
    начинается с 1) или через соответствие определения правила.

    -I, --insert цепочка [номер-правила]
    определение-правила" В указанной цепочке вставить одно или более правил в позицию
    заданную номером. Так, если указан номер 1, правило или правила будут вставлены в
    начало цепочки. Это подразумеваемая позиция, если номер не указан.

    -R, --replace цепочка номер-правила определение-правила
    Заменить правило в указанной цепочке. Если имена источника и/или стока соответствуют
    нескольким адресам, команда не будет выполнена с сообщением об ошибке. Правила
    нумеруются с 1.
    -L, --list [цепочка]
    Показать все правила в выбранной цепочке. Если цепочка не указана, то команда
    применяется ко всем цепочкам. Как и всякая другая команда iptables, она воздействует на
    указанную таблицу (filter, если таблица не указана), к примеру следующая команда выводит
    список правил NAT:

    Code: Select all

                   iptables -t nat -n -L
    Обратите внимание на опцию -n которая часто используется для отключения (медленного)
    определения имён DNS. Также можно указать опцию -Z -Z (zero), в этом случае
    автоматически произойдёт перечисление правил цепочки и обнуление её счётчиков. Вид
    результата зависит от других аргументов. Самый детальный результат может быть получен
    так:

    Code: Select all

    iptables -L -v
    -F, --flush [цепочка]
    Сбросить выбранную цепочку (все цепочки в таблице, если ни одна не указана). Это
    эквивалентно удалению по одному всех правил.

    -Z, --zero [цепочка]
    Обнулить счётчики количества пакетов и байтов во всех или указанной цепочке. Можно
    также указать -L, --list чтобы отобразить значения счётчиков непосредственно перед их
    обнулением (см. выше).

    -N, --new-chain цепочка
    Создать новую, определённую пользователем цепочку с заданным именем. В момент создания
    цепочки не должно быть уже существующих целей с указанным именем.

    -X, --delete-chain [цепочка]
    Удалить цепочку, определённую пользователем. При этом не должно быть ссылок на
    удаляемую цепочку. Если такие ссылки есть, необходимо сначала удалить или изменить
    правила, ссылающиеся на удаляемую цепочку. Если цепочка не указана, из таблицы будут
    удалены все цепочки кроме встроенных.

    -P, --policy цепочка цель
    Определить стратегию для цепочки. Допустимые цели описаны в разделе ЦЕЛИ настоящего
    документа. Стратегия может быть задана только для встроенных цепочек и не может быть
    задана для цепочек определённых пользователем.
    -E, --rename-chain старое-имя новое-имя
    Переименовать цепочку, определённую пользователем. Эта команда не изменяет структуру
    таблицы и используется только в косметических целях.

    -h Подсказка. Выдаёт очень короткое описание синтаксиса команд.
ПАРАМЕТРЫ
Следующие параметры предназначены для формирования правил (используются в командах add, delete, insert, replace и append).
  • -p, --protocol [!] протокол
    Сетевой протокол применяемого правила или проверяемого пакета. Допустимые значения:
    tcp, udp, icmp, all. Также можно указывать в виде числа (соответствующего одному из перечисленных ил иному протоколу). Названия протоколов также можно брать из файла
    /etc/protocols. Знак "!" перед названием протокола инвертирует результат теста. Число
    0 эквивалентно all. Значение all соответствует всем протоколами и используется если
    данный параметр опущен.

    -s, --source [!] адрес[/маска]
    Адрес источника. Адресом может быть сетевое имя, имя хоста (не рекомендуем указывать
    имена хостов, разрешаемые через запросы к удалённым DNS), диапазон IP-адресов (с маской
    через слэш) или одиночный IP-адрес. Маской может быть сетевая маска или число,
    соответствующее количеству определяющих разрядов в сетевой маске. Например, маска 24
    эквивалентна 255.255.255.0. Знак "!" перед спецификацией адреса инвертирует результат
    теста. Опция --src является псевдонимом данного параметра.

    -d, --destination [!] адрес[/маска]
    Адрес цели. Синтаксис аналогичен синтаксису параметра -s Опция --dst является
    псевдонимом данного параметра.

    -j, --jump цель
    Определяет цель правила; т.е., что делать, когда пакет попадает под условия правила.
    Целью может быть цепочка, определённая пользователем (отличная от цепочки правила), одна
    из встроенных целей, определяющая окончательное действие над пакетом, или расширение
    (см. раздел РАСШИРЕНИЯ далее по тексту). Если эта опция не задана в правиле (и ключ -g
    также не использован), то правило не будет применяться, но счётчик количества применений
    правила будет увеличен.

    -g, --goto цепочка
    Продолжить обработку в цепочке, определённой пользователем. В отличие от опции --jump,
    после возврата из вызванной цепочки, применение правил будет продолжено не в текущей
    цепочке, а в той цепочке, которая вызвала текущую через --jump.

    -i, --in-interface [!] имя
    Имя интерфейса, через который должен быть получен обрабатываемый пакет (только для
    пакетов входящих в цепочки INPUT, FORWARD и PREROUTING ). Использование аргумента "!"
    перед именем интерфейса инвертирует результат теста. Если имя интерфейса оканчивается
    на "+", то это означает любой интерфейс, имя которого начинается с указанного имени.
    Если эта опция опущена, при обработке пакета интерфейс, с которого он был получен, не
    учитывается.

    -o, --out-interface [!] имя
    Имя интерфейса, через который отправляется обрабатываемый пакет (только для пакетов
    входящих в цепочки FORWARD, OUTPUT и POSTROUTING ). Использование аргумента "!" перед
    именем интерфейса инвертирует результат теста. Если имя интерфейса оканчивается на "+",
    то это означает любой интерфейс, имя которого начинается с указанного имени. Если эта
    опция опущена, при обработке пакета интерфейс, с которого он был получен, не
    учитывается.

    [!] -f, --fragment
    Означает, что это правило будет применяться ко второму и последующим фрагментам
    фрагментированного пакета. Так как у фрагмента невозможно определить номер порта
    источника или цели, равно как и тип ICMP, такие пакеты не обрабатываются правилами,
    содержащими номера портов или тип ICMP. Если перед флагом -f указан "!", то правило
    будет применяться только к первому фрагменту или к нефрагментированному пакету.

    -c, --set-counters число-пакетов число-байт
    Позволяет инициализировать в правиле счётчики пакетов и байтов (при выполнении операций
    INSERT, APPEND, REPLACE ).
ПРОЧИЕ ОПЦИИ
Имеются следующие дополнительные опции:
  • -v, --verbose
    Увеличить подробность сообщений. При указании её с командой list будет выводиться имя
    интерфейса, параметры правил и маски TOS. Также выводятся счётчики ("K", "M", "G"
    соответствуют множителям 1000, 1 000 000 и 1 000 000 000; см. -x ). Если ключ
    используется с командами --append, --insert, --delete или --replace, то будет выведен
    подробный отчёт о произведенной операции.

    -n, --numeric
    Выводить IP-адреса и номера портов в числовом виде предотвращая попытки преобразовать их
    в символические имена.

    -x, --exact
    Для всех чисел в выходных данных выводить их точные значения без округления и без
    использования множителей K, M, G. Этот ключ используется только с командой -L и не
    применим с другими командами.

    --line-numbers
    Режим вывода номеров строк при отображении списка правил командой --list. Номер строки
    соответствует позиции правила в цепочке.

    --modprobe=команда
    Команда загрузки модулей ядра (при добавлении правил в цепочку). Может использоваться в
    случае, когда модули ядра находится вне стандартного пути поиска.
РАСШИРЕНИЯ МЕХАНИЗМА ТЕСТИРОВАНИЯ
Возможности тестирования пакетов расширяются через модули. Последние загружаются либо
автоматически при указании -p / --protocol , либо явно при указании имени модуля через -m /
--match . После загрузки модуля становятся доступными дополнительные опции командной строки, в
зависимости от модуля. Справку по новым ключам можно получить с помощью ключа -h / --help .
Допустимо указание нескольких модулей. Результаты тестирования, выдаваемые модулем, обычно
можно инвертировать указав ! перед его именем. В базовую поставку входят следующие модули.

account
Вести учёт трафика для всех хостов в определённой подсети (по маске).

Возможности:
  • - подробная (один счётчик на протокол - TCP/UDP/IMCP/Прочие) и краткая статистика

    - одно правило iptables для всех хостов в определённой подсети (по маске).

    - загрузка/сохранение счётчиков (посредством записей procfs)

    --aaddr сеть/маска
    Подсеть, для которой следует вести статистику.

    --aname имя
    Имя таблицы для данной статистики. По умолчанию - DEFAULT.

    --ashort
    Не разделять учёт по протоколам.
Пример использования:

Вести учёт трафика из/в сеть 192.168.0.0/24 в таблице mynetwork:

Code: Select all

# iptables -A FORWARD -m account --aname mynetwork --aaddr 192.168.0.0/24
Вести учёт трафика WWW-сервера из/в сеть 192.168.0.0/24 в таблице mywwwserver:

Code: Select all

       # iptables -A INPUT -p tcp --dport 80 -m account --aname mywwwserver --aaddr 192.168.0.0/24 --ashort

# iptables -A OUTPUT -p tcp --sport 80 -m account --aname mywwwserver --aaddr 192.168.0.0/24 --ashort

Снять показания счётчиков:

Code: Select all

# cat /proc/net/ipt_account/mynetwork # cat /proc/net/ipt_account/mywwwserver
Установить показания счётчиков:

Code: Select all

# echo "ip = 192.168.0.1 packets_src = 0" > /proc/net/ipt_account/mywwserver
Веб-страница:
http://www.barbara.eu.org/~quaker/ipt_account/

addrtype
Данный модуль тестирует пакеты по типу адреса. Точное определение конкретного "типа адреса"
зависит от соответствующего протокола третьего уровня.

Имеются следующие типы адресов:
  • UNSPEC неопределённый адрес (0.0.0.0) UNICAST адрес для конкретного устройства LOCAL локальный
    адрес BROADCAST широковещательный адрес ANYCAST адрес для любого устройства MULTICAST
    адрес для нескольких устройств BLACKHOLE адрес "в никуда" UNREACHABLE недоступный адрес
    PROHIBIT запрещённый адрес THROW не описан NAT не описан XRESOLVE не описан

    --src-type тип
    Исходный адрес должен иметь указанный тип

    --dst-type тип
    Целевой адрес должен иметь указанный тип
ah
Этот модуль тестирует по последовательным периферийным интерфейсам (SPI) в аутентификационном
заголовке пакетов IPsec.

--ahspi [!] spi[:spi]

childlevel
Экспериментальный модуль. Он тестирует по факту принадлежности пакета к основному соединению
непосредственно или через дочерние соединения. Например, большинство пакетов принадлежат к
основному соединению непосредственно (уровень 0). Данные FTP - дочернему (уровень 1). Уровень
может быть сколь угодно большим.

--childlevel [!] уровень

comment
Позволяет добавлять комментарии (до 256 символов) в правила.

--comment комментарий

Пример:

Code: Select all

              iptables -A INPUT -s 192.168.0.0/16 -m comment --comment "A privatized IP block"
condition
Результат теста совпадает со значением в соответствующем файле /proc - 0 или 1.

--condition [!] имя-файла
Выдать результат теста из /proc/net/ipt_condition/имя-файла

connbytes
Результат теста будет зависеть от количества байт или пакетов, переданных на данный момент (в
обоих или одном из направлений), или по среднему числу байт, приходящихся на пакет.

Под каждый из счётчиков отводится 64 бита, поэтому их переполнение практически невозможно.

Обычно данный модуль используется для уменьшения приоритета долгих загрузок.

Статистику по трафику соединений можно просмотреть в файле /proc/net/ip_conntrack, для
обращения к ней воспользуйтесь ctnetlink

[!] --connbytes мин:[макс]
Результат теста будет положительным для пакетов соединения через которое принято
пакетов/байтов больше первого числа, и меньше второго (если оно указано). Также первое
число может выступать нижней границей для среднего размера пакета. "!" инвертирует
результат.

--connbytes-dir [original|reply|both]
Какие пакеты учитывать (свои, ответные или все)

--connbytes-mode [packets|bytes|avgpkt]
Отслеживаемый показатель - число пакетов, байтов или средний размер всех полученных
пакетов (в байтах). Если в предыдущей опции указано both, а в данной - avgpkt, и данные
передаются (преимущественно) в одном направлении (например, HTTP), средний размер пакета
будет приблизительно в два раза меньше размера пакетов несущих данные.

Пример:

Code: Select all

iptables  .. -m connbytes --connbytes 10000:100000 --connbytes-dir both --connbytes-mode bytes ...
connlimit
Позволяет ограничить число одновременных соединений TCP для одного IP-адреса (клиента) либо
блока адресов.

[!] --connlimit-above n
Выдавать положительный результат если число tcp-соединений (не) больше n

--connlimit-mask биты
Группировать хосты по указанной маске

Примеры:

Code: Select all

# допускать не больше 2 соединений telnet с одного хоста
              iptables -A INPUT -p tcp --syn --dport 23 -m connlimit --connlimit-above 2 -j REJECT

       # то же самое:
              iptables -A INPUT -p tcp --syn --dport 23 -m connlimit ! --connlimit-above 2 -j ACCEPT

       # ограничить число одновременных запросов http до 16 на подсеть класса C (24 первых  разряда)  
iptables  -p  tcp  --syn  --dport 80 -m connlimit --connlimit-above 16
              --connlimit-mask 24 -j REJECT
connmark
Этот модуль позволяет использовать в правилах проверку значений маркеров соединения,
установленных с помощью операции (цели) CONNMARK (см. ниже).

--mark маркер[/маска]
Значение маркера соединения, при котором выполняется условие. Если указана маска, она
накладывается (операция поразрядного И) на значение маркера соединения перед проверкой
условия.

connrate
Выдаёт результат теста на основе текущей скорости передачи данных по соединению.

--connrate [!] [мин]:[макс]
Выдавать положительный результат если текущая скорость находится в указанных рамках.
Указание "!" перед аргументом обращает смысл последнего.

conntrack
Этот модуль при использовании совместно с компонентом мониторинга соединений предоставляет
более широкие сведения о состоянии соединения, чем "state". Модуль доступен если сборка ipta‐
bles проводилась с ядром, имеющим возможности требуемые для модуля.

--ctstate состояния
Список состояний соединения через запятую, при которых результат будет положительным.
Возможные состояния: INVALID - пакет не связан с каким-либо известным соединением,
ESTABLISHED - пакет связан с соединением, по которому уже проходили пакеты в обоих
направлениях, NEW - пакет инициирует новое соединение, либо связан с соединением, по
которому ещё не проходили пакеты в обоих направлениях , RELATED - пакет инициирует новое
соединение, но также связан с уже существующим соединением, например при передаче данных
по FTP или сообщении об ошибке ICMP, SNAT - виртуальное состояние, положительный
результат выдаётся если исходный адрес источника отличен от адреса, который должен
получить ответ, DNAT - виртуальное состояние, положительный результат выдаётся если
исходный адрес получателя отличен от адреса отправителя ответа,

--ctproto протокол
Проверяет принадлежность пакета к протоколу, указанному номером или символьным именем.

--ctorigsrc [!] адрес[/маска]
Проверяет соответствие исходного (нетранслированного) адреса отправителя указанному
адресу или диапазону адресов.

--ctorigdst [!] адрес[/маска]
Проверяет соответствие исходного (нетранслированного) адреса получателя указанному
адресу или диапазону адресов.

--ctreplsrc [!] адрес[/маска]
Проверяет соответствие адреса отправителя отклика указанному адресу или диапазону
адресов.

--ctrepldst [!] fIадрес[/маска]
Проверяет соответствие адреса получателя отклика указанному адресу или диапазону
адресов.

--ctstatus [NONE|EXPECTED|SEEN_REPLY|ASSURED][,...]
Проверяет соответствие пакета одному или группе внутренних состояний conntrack.

--ctexpire time[:time]
Проверяет соответствие оставшегося для пакета времени жизни заданному значению или
диапазону.

dccp
--source-port,--sport [!] порт[:порт]

--destination-port,--dport [!] порт[:порт]

--dccp-types [!] типы-пакетов
Тип пакета DCCP должен быть одним из перечисленных (через запятую) Возможные типы:
REQUEST RESPONSE DATA ACK DATAACK CLOSEREQ CLOSE RESET SYNC SYNCACK INVALID" .

--dccp-option [!] число
Для положительного результата должна быть установлена опция DCP.

dscp
Этот модуль проверяет 6-разрядное значение DSCP в поле TOS заголовка IP. В соответствии с RFC
247413 значение DSCP заменяет собой значение TOS.

--dscp значение
Значение в десятичной или шестнадцатеричной форме (0-32).

--dscp-class класс-DiffServ
Класс DiffServ. Возможные значения: BE, EF, AFxx, CSx.

dstlimit
Позволяет ограничивать скорость обмена пакетами в секунду (pps) для одного целевого IP/порта.
ЭТОТ МОДУЛЬ УСТАРЕЛ. ИСПОЛЬЗУЙТЕ МОДУЛЬ "hashlimit"

--dstlimit скорость
Ограничение на среднюю скорость обмена пакетами. Допустимо дополнение в конце /sec
/minute /hour /day.

--dstlimit-mode режим
Режим ограничения: это один из наборов dstip + dstip-dstport , srcip-dstip , либо
srcipdstip-dstport .

--dstlimit-name имя
Имя файла /proc/net/ipt_dstlimit/*

[--dstlimit-burst burst]
Число пакетов в пике, для которых будет результат теста будет положительным. Значение
по умолчанию: 5

[--dstlimit-htable-size размер]
Число наборов (buckets) в хэш-таблице

[--dstlimit-htable-max максимум]
Ограничение на число элементов в хэш-таблице

[--dstlimit-htable-gcinterval интервал]
Интервал между сбором мусора в хэш-таблице (в мс). Значение по умолчанию - 1000 (1
секунда).

[--dstlimit-htable-expire время
Время после которого неиспользуемые элементы подлежат удалению, в мс. Значение по
умолчанию - 10000 (10 секунд).

ecn
Используется для проверки соответствия значения поля ECN в заголовках IPv4 и TCP. ECN - это
механизм явного предуведомления о перегрузке (Explicit Congestion Notification) определённый
RFC3168

--ecn-tcp-cwr
Результат определяется разрядом TCP ECN CWR (Congestion Window Received).

--ecn-tcp-ece
Результат определяется разрядом TCP ECN ECE (ECN Echo).

--ecn-ip-ect num
IPv4 ECT (ECN-Capable Transport) должен быть равным указанному числу (от `0' до `3').

esp
Модуль esp служит для проверки значений SPI в заголовках ESP пакетов IPSec.

--espspi [!] spi[:spi]

fuzzy
Результат теста зависит от скорости доставки пакетов по методу FLC (Fuzzy Logic Controller):
пока скорость доставки пакетов не достигает нижнего порога, условие никогда не будет
выполняться; при скорости в диапазоне между нижним и верхним порогами частота выполнения
условий будет расти пропорционально скорости доставки пакетов; после превышения верхнего порога
скорости частота выполнения условий достигнет максимального значения.

--lower-limit скорость
Нижний порог (пакетов в секунду).

--upper-limit скорость
Верхний порог (пакетов в секунду).

hashlimit
Этот модуль добавляет новое условие проверки hashlimit, позволяющее вводить ограничения на один
адрес назначения или пару "адрес-порт".

С помощью данного условия можно задавать ограничения типа

"не более 1000 пакетов в секунду для каждого хоста в сети 192.168.0.0/16"

"не более 100 пакетов в секунду для каждого сервиса на хосте 192.168.1.1"

одним правилом iptables.

--hashlimit скорость
Среднее значение скорости. Параметр представляет собой целое число, определяющее
максимальное количество пакетов, и суффикс, который определяет единицу времени. В
качестве суффикса могут использоваться значения /second, /minute, /hour, /day. По
умолчанию подразумевается число пакетов в секунду.

--hashlimit-burst число
Число пакетов в пике

--hashlimit-mode destip | destip-destport
Ограничение по адресам или портам.

--hashlimit-name foo
Имя для /proc/net/ipt_hashlimit/foo.

--hashlimit-htable-size num
Число элементов (buckets) в хэш-таблице.

--hashlimit-htable-max num
Максимальное количество записей в хэше.

--hashlimit-htable-expire num
Время (в миллисекундах) жизни записи в хэш-таблице. По умолчанию время жизни составляет
10000 (10 секунд).

--hashlimit-htable-gcinterval num
Интервал "сборки мусора" в хэш-таблице.

helper
Выдаёт положительный результат для пакетов относящихся к конкретному вспомогательному
компоненту conntrack.

--helper имя
Вспомогательный компонент conntrack.

Может принимать значение "ftp" для пакетов ftp-сеанса на стандартном порте. В случае
нестандартных портов добавляйте их к имени: "ftp-2121".

Аналогично и для других компонентов.

icmp
Эта расширение загружается при указании `--protocol icmp'.

--icmp-type [!] тип
Тип ICMP в виде числа или имени в соответствии с iptables -p icmp -h

iprange
Результат теста зависит от адреса IPv4.

[!]--src-range ip-ip
Диапазон IP-адресов отправителя.

[!]--dst-range ip-ip
Диапазон IP-адресов получателя.

ipv4options
Результат теста зависит от параметров заголовка IPv4, таких как параметры маршрутизации, запись
маршрута, запрос времени, оповещение маршрутизатора.

--ssrr Должен быть установлен флаг strict source routing (маршрутизация указывается
источником).

--lsrr Должен присутствовать флаг loose source routing (свободная маршрутизация).

--no-srr
Флаг, позволяющий источнику определить режим маршрутизации, должен отсутствовать.

[!] --rr
Должен присутствовать флаг RR (route record).

[!] --ts
Должен присутствовать флаг TS (timestamp).

[!] --ra
Должен присутствовать флаг оповещения маршрутизатора (router-alert).

[!] --any-opt
Выдавать положительный результат если хотя бы один пункт из указанных выше был выполнен.
Если указан !, ни одно из условий не должно выполняться.

Примеры:

Code: Select all

       $ iptables -A input -m ipv4options --rr -j DROP
       #отбрасывать пакеты с флагом record-route.

       $ iptables -A input -m ipv4options --ts -j DROP
         #отбрасывать пакеты с флагом timestamp.
length
Позволяет проверять размеры пакетов (точно или по диапазону).

--length [!] размер[:размер]

limit
Этот модуль выдаёт положительный результат с фиксированной частотой. Правило использующее это
расширение будет выполняться до момента достижения лимита (и наоборот, если указан "!"). Может
использоваться вместе с целью LOG для получения ограниченного протоколирования.

--limit частота
Максимальная средняя частота положительных результатов. После числа можно указывать
единицы: `/second', `/minute', `/hour', `/day'; значение по умолчанию - 3/hour.

--limit-burst number
Ограничение на исходное число пропускаемых пакетов: это число увеличивается на единицу
каждый раз когда ограничение на частоту положительных результатов не достигается. Это
происходит столько раз, сколько указано в данном параметре. Значение по умолчанию - 5.


mac
--mac-source [!] адрес
Выполнять тестирование по MAC-адресу отправителя. Адрес должен указываться в форме
XX:XX:XX:XX:XX:XX. Использование данного условия имеет смысл только при получении
пакетов от устройства Ethernet, проходящих на одну из цепочек PREROUTING, FORWARD или
INPUT .

mark
Тестирует по полю mark. Это специальное поле, которое существует только в области памяти ядра и
связывается с конкретным пакетом. (для установки этого поля используется цель MARK , описанная
ниже).

--mark число[/маска]
Пропускать пакеты с указанной отметкой (представляющей собой беззнаковое целое) Если
указана маска, то перед сравнением она накладывается на указанное значение (логическое
И).

mport
Модуль пропускает пакеты на заданном наборе портов (исходных или целевых). Возможно указание
до 15 портов. Используется только вместе с -p tcp или -p udp.

--source-ports порт[,порт[,порт...]]
Пропускать пакеты с исходным портом равным одному из указанных. Краткая форма ключа -
--sports .

--destination-ports порт[,порт[,порт...]]
Пропускать пакеты с портом назначения равным одному из указанных. Краткая форма ключа -
--dports .

--ports порт[,порт[,порт...]]
Пропускать пакеты с одинаковыми исходным и портом назначения и равными одному из
указанных.

multiport
Позволяет указывать в тексте правила несколько (до 15) портов и диапазонов портов. Диапазон
портов (порт:порт) считается за два порта (в отношении ограничения в 15). Используется только
вместе с -p tcp или -p udp.

--source-ports [!] порт[,порт[,порт:порт...]]
Пропускать пакеты с исходным портом равным одному из указанных. Краткая форма ключа -
--sports .

--destination-ports [!] порт[,порт[,порт:порт...]]
Пропускать пакеты с портом назначения равным одному из указанных. Краткая форма ключа -
--dports .

--ports [!] порт[,порт[,порт:порт...]]
Пропускать пакеты с одинаковыми исходным и портом назначения и равными одному из
указанных.

nth
Пропускает каждый `n'-ый пакет

--every n
Пропускать каждый n-ый пакет.

[--counter номер]
Использовать внутренний счётчик с указанным номером. Значение по умолчанию - `0'.

[--start число]
Начальное значение счётчика (вместо стандартного `0'). Обычно между `0' и `n'-1.

[--packet k]
Пропускать k-ый пакет из набора n пакетов. Соответственно, значение должно быть между
`0' и `n'-1.

osf
Идея фильтрации по пассивным сигнатурам ОС (passive OS fingerprint) была изначально реализована
в брандмауэре pf из OpenBSD.

Оригинальная таблица сигнатур составлена Михаилом Залевски (Michal Zalewski) <lcamtuf@core‐
dump.cx>.

Данный модуль фильтрует пакеты по данным из (первого) пакета SYN (WS, MSS, опциям и их порядку,
ttl, df и т.д.), определяя ОС отправителя на основе динамической таблицы сигнатур ОС.

--log 1/0
Записывать в протокол семейства ОС даже если они не совпадают с ожидаемыми. 0 -
записывать все данные; 1 - только первые.

Данные записываются в syslog в таком формате:

Code: Select all

              ipt_osf:   Windows   [2000:SP3:Windows  XP  Pro  SP1,  2000  SP3]:  11.22.33.55:4024  ->
              11.22.33.44:139

              ipt_osf: Unknown: 16384:106:1:48:020405B401010402 44.33.22.11:1239 -> 11.22.33.44:80
--smart
Включить дополнительные алгоритмы определения удалённой ОС. OSF будет учитывать
исходный TTL только если соединение установлено в рамках локальной сети.

--netlink
Протоколировать все события в NETLINK_NFLOG groupt 1.

--genre [!] string
Пропускать пакеты от семейства ОС.

Пример:

Code: Select all

#iptables -I INPUT -j ACCEPT -p tcp -m osf --genre Linux --log 1 --smart
Обратите внимание, что указание -p tcp обязательно, поскольку проверка ведётся на уровне этого
протокола.

Сигнатуры хранятся в файле /proc/sys/net/ipv4/osf. Очистить список сигнатур можно командой

Code: Select all

echo -en FLUSH > /proc/sys/net/ipv4/osf
Допустима только одна сигнатура за открытие/запись/закрытие.

Список сигнатур доступен в Интернете по адресу http://www.openbsd.org/cgi-
bin/cvsweb/src/etc/pf.os

owner
Позволяет фильтровать по параметрам "владельца" пакета. Этот критерий можно использовать
только в цепочке OUTPUT , но даже в этом случае могут попадаться пакеты без владельца
(например, ответы ISMP ping), и такие пакеты не будут пропускаться.

--uid-owner идентификатор-пользователя
Пропускать пакеты генерируемые процессами работающими от указанного пользователя.

--gid-owner идентификатор-группы
Пропускать пакеты генерируемые процессами работающими от пользователя входящего в
указанную группу.

--pid-owner идентификатор-процесса
Пропускать пакеты генерируемые процессом с указанным идентификатором.

--sid-owner идентификатор-сеанса
Пропускать пакеты генерируемые процессами в сеансе с указанным идентификатором.

--cmd-owner имя-команды
Пропускать пакеты генерируемые процессами с указанным именем команды. (ключ
поддерживается только если пакет iptables был собран с ядром, имеющим соответствующую
функцию)

Примечание: фильтрация по pid, sid и команде не работает в SMP-системах

physdev
Позволяет организовывать фильтрацию по устройствам используемым для связи двух локальных сетей.
Это модуль является частью инфраструктуры для IP-брандмауэра "прозрачно" связывающего сети.
Имеет смысл использовать только с ядрами 2.5.44.

--physdev-in [!] имя
Порт связи сетей, через который получен пакет (только для пакетов, проходящих цепочки
INPUT, FORWARD или PREROUTING ). Если имя интерфейса оканчивается на "+", то будут
пропускаться пакеты со всех интерфейсов, имя которых начинается с указанной
последовательности. Если пакет получен из устройства, которое не связывает локальные
сети, он не будет пропущен (если только не указано "!").

--physdev-out [!] имя
Порт связи сетей, через который пакет отправляется (для пакетов, проходящих цепочки FORWARD, OUTPUT или POSTROUTING ). Если имя интерфейса оканчивается на "+", то будут
пропускаться пакеты со всех интерфейсов имя которых начинается с указанной
последовательности. Тестирование по порту вывода в цепочках OUTPUT nat и mangle
невозможно, зато в filter OUTPUT - возможно. Если пакет отправляется не через устройство
связи двух сетей, или если отправляющее устройство на данном этапе неизвестно, то такой
пакет не будет пропущен (если только не указан "!").

[!] --physdev-is-in
Пропускать пакеты, полученные через интерфейс связи двух сетей.

[!] --physdev-is-out
Пропускать пакеты, отправляемые через интерфейс связи двух сетей.

[!] --physdev-is-bridged
Пропускать пакеты, для которых не выполняется маршрутизация (т.к. они проходят через
"мост" между сетями) Имеет смысл только в цепочках FORWARD и POSTROUTING.

pkttype
Позволяет фильтровать пакеты по их типу на уровне канала связи.

--pkt-type [unicast|broadcast|multicast]

policy
Позволяет фильтровать пакеты по стратегии обработки пакета IPsec.

--dir in|out
Стратегия, по которой следует фильтровать: стратегии извлечения данных из сообщения или
включения (инкапсуляции) оных. Вариант in допустим в цепочках PREROUTING, INPUT и FORWARD , вариант out
- в цепочках POSTROUTING, OUTPUT и FORWARD .

--pol none|ipsec
Должен ли пакет подлежать обработке IPsec.

--strict
Пропускать пакеты с хотя бы одним правилом, соответствующим заданной стратегии, или
обязательно со всеми.

--reqid id
Пропускать пакеты с указанным идентификатором reqid правила стратегии. Идентификатор
указывается с помощью команды setkey(8) , в качестве уровня используется unique:id .

--spi spi
Фильтровать пакеты на основе последовательного периферийного интерфейса (SPI) SA.

--proto ah|esp|ipcomp
Фильтровать пакеты на основе протокола инкапсуляции.

--mode tunnel|transport
Фильтровать пакеты на основе режима инкапсуляции.

--tunnel-src адрес[/маска]
Пропускать пакеты с исходным адресом [пункта] режима tunnel SA, входящим в указанный
диапазон. Имеет смысл только при --mode tunnel.

--tunnel-dst адрес[/маска]
Пропускать пакеты с адресом назначения режима tunnel SA, входящим в указанный диапазон.
Имеет смысл только при --mode tunnel.

--next Начать следующий элемент в спецификации стратегии. Может указываться вместе с --strict

psd
Пытаться обнаружить сканирование портов TCP и UDP. Реализовано на основе scanlogd из Solar Designer.

--psd-weight-threshold порог
Общий вес (см. ниже) пакетов TCP/UDP за последнее время, приходящих от одного источника,
но на разные порты, при котором можно считать, что это умышленное сканирование портов.

--psd-delay-threshold задержка
Максимальная задержка (в сотых секунды) между пакетами приходящими на различные порты от
одного источника, при которой они будут считаться подпоследовательностью пакетов при
сканировании.

--psd-lo-ports-weight вес
Вес пакетов, приходящих на привилегированные порты (<=1024).

--psd-hi-ports-weight weight
Вес пакетов, приходящих на непривилегированные порты.

quota
Позволяет квотировать использование сети - уменьшает счётчик байтов на единицу при обработке
каждого пакета.

--quota размер
Квота в байтах.

Примечание: не работает в SMP-системах.

random
Вероятностная фильтрация.

--average доля
Пропускать указанную часть пакетов (в процентах). Значение по умолчанию - 50%.

To be continued
Я не злопамятный, я просто часто ковыряю логи
Post Reply