Утилита iptables#
iptables - это инструмент управления межсетевыми экранами; позволяет управлять входящими и исходящими IP-пакетами.
iptables используется для установки, настройки и просмотра таблиц правил фильтрации IP-пакетов в ядре системы.
Таблицы содержат предопределенные цепочки (наборы правил, следующих друг за другом в определенном порядке) и могут содержать пользовательские цепочки. Каждое правило в цепочке таблицы определяет действия (цели), которые необходимо произвести с соответствующими пакетами.
iptables проверяет пакеты данных на соответствие определенным критериям и выполняет заданные действия, если пакеты соответствуют этим критериям.
Правило межсетевого экрана определяет критерии для пакета и цели. Если пакет не попадает под действие правила, то проверяется следующее правило в цепочке. Если попадает - проверяется правило, указанное в цели, которая может быть именем новой цепочки или одной из специальных целей: ACCEPT (принять пакет), DROP (проигнорировать), QUEUE (передать пакет в адресное пространство пользователя) или RETURN (остановить применение правил этой цепочки и передать пакет следующему правилу предыдущей цепочки).
Синтаксис iptables:
iptables <options> <chain> <rules> <specific_options>
Где:
<options>- опции;<chain>- цепочка;<rules>- правила;<specific_options>- дополнительные опции, специфичные для конкретных цепочек/правил/опций.
Часто используемые опции утилиты представлены в таблице ниже.
Опция |
Описание |
|---|---|
|
Добавление правил в конец указанной цепочки |
|
Указание адреса цели команды |
|
Удаление указанных правил из цепочки |
|
Очистка выбранной цепочки (всех цепочек в таблице, если не указана ни одна). Эквивалентно удалению всех правил по одному |
|
Определение цели правила |
|
Отображение всех правил в указанной цепочке; если цепочка не указана, то команда применяется ко всем цепочкам |
|
Вывод IP-адресов и номеров портов в числовом виде, а не в виде символических имен |
|
Создание новой, пользовательской цепочки с заданным именем |
|
Указание протокола правила или пакета для проверки; протокол может быть |
|
Адрес (сетевое имя, имя хоста, IP-адреса) и/или маска источника |
|
Задание таблицы, к которой будет применена команда |
|
Указание порта необходимой службы |
|
Задание протокола |
|
Указание префикса для выделения записей протокола среди других; в протокол ядра вносятся записи о пакетах (например, поля заголовка IP), для которых указана цель - |
Типы таблиц:
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