Утилита iptables#

iptables - это инструмент управления межсетевыми экранами; позволяет управлять входящими и исходящими IP-пакетами.

iptables используется для установки, настройки и просмотра таблиц правил фильтрации IP-пакетов в ядре системы.

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

iptables проверяет пакеты данных на соответствие определенным критериям и выполняет заданные действия, если пакеты соответствуют этим критериям.

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

Синтаксис iptables:

iptables <options> <chain> <rules> <specific_options>

Где:

  • <options> - опции;

  • <chain> - цепочка;

  • <rules> - правила;

  • <specific_options> - дополнительные опции, специфичные для конкретных цепочек/правил/опций.

Часто используемые опции утилиты представлены в таблице ниже.

Опция

Описание

-A

Добавление правил в конец указанной цепочки

-d

Указание адреса цели команды

-D

Удаление указанных правил из цепочки

-F

Очистка выбранной цепочки (всех цепочек в таблице, если не указана ни одна). Эквивалентно удалению всех правил по одному

-j

Определение цели правила

-L

Отображение всех правил в указанной цепочке; если цепочка не указана, то команда применяется ко всем цепочкам

-n

Вывод IP-адресов и номеров портов в числовом виде, а не в виде символических имен

-N

Создание новой, пользовательской цепочки с заданным именем

-p

Указание протокола правила или пакета для проверки; протокол может быть tcp, udp, udplite, icmp, icmpv6, ah, sctp, mh или all, также может обозначаться числовым значением; допускается использование имени протокола из /etc/protocols

-s

Адрес (сетевое имя, имя хоста, IP-адреса) и/или маска источника

-t <table>

Задание таблицы, к которой будет применена команда

--dport

Указание порта необходимой службы

--icmp-type

Задание протокола icmp в виде числа или имени

--log-prefix

Указание префикса для выделения записей протокола среди других; в протокол ядра вносятся записи о пакетах (например, поля заголовка IP), для которых указана цель - LOG

Типы таблиц:

  • filter - используется по умолчанию, если опция -t не задана; содержит предопределенные цепочки INPUT (для входящих пакетов - направленных в локальные сокеты), FORWARD (для проходящих пакетов) и OUTPUT (для исходящих пакетов - сгенерированных в локальной системе).

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

  • mangle - используется для специальных изменений пакетов; содержит предопределенные цепочки PREROUTING (для изменения входящих пакетов до их перенаправления-маршрутизации), OUTPUT (для изменения локально сгенерированных пакетов перед их маршрутизацией), INPUT (для изменения входящих пакетов), FORWARD (для изменения проходящих пакетов) и POSTROUTING (для изменения исходящих пакетов).

  • raw - используется преимущественно для создания исключений в контроле соединений; содержит предопределенные цепочки PREROUTING (для пакетов приходящих из сетевых интерфейсов) и OUTPUT (для пакетов, генерируемых локальными процессами).

  • security - используется для правил обязательного управления доступом (MAC); вызывается после таблицы фильтров, что позволяет любым правилам дискреционного управления доступом (DAC) в таблице фильтров вступить в силу перед правилами MAC; содержит предопределенные цепочки INPUT (для входящих пакетов), OUTPUT (для изменения локально сгенерированных пакетов перед маршрутизацией) и FORWARD (для изменения проходящих пакетов).

Примеры использования#

  • Для отображения списка правил nat введите команду:

    iptables -t nat -n -L
    
  • Для добавления нового правила - блокировки всего входящего трафика от IP-адреса 000.000.0.000 - в цепочку INPUT введите команду:

    iptables -A INPUT -s 000.000.0.000 -j DROP
    

    Где DROP означает проигнорировать (отбросить) пакет.

  • Для удаления первого правила в цепочке INPUT введите команду:

    iptables -D INPUT 1