stringtranslate.com

iptables

iptables — это служебная программа пользовательского пространства , которая позволяет системному администратору настраивать правила фильтрации IP-пакетов брандмауэра ядра Linux , реализованные в виде различных модулей Netfilter . Фильтры организованы в различные таблицы, содержащие цепочки правил обработки пакетов сетевого трафика. В настоящее время для разных протоколов используются разные модули ядра и программы; iptables применяется к IPv4, ip6tables к IPv6, arptables к ARP и ebtables к кадрам Ethernet .

Для работы iptables требуются повышенные привилегии, и он должен выполняться пользователем root , иначе он не сможет работать. В большинстве систем Linux iptables устанавливается как /usr/sbin/iptables и документируется на его страницах руководства , которые можно открыть с помощью команды man iptablesпосле установки. Его также можно найти в /sbin/iptables, но поскольку iptables больше похож на службу, чем на «основной двоичный файл», предпочтительным расположением остается /usr/sbin .

Термин iptables также часто используется для обозначения компонентов уровня ядра. x_tables — это имя модуля ядра, несущего общую часть кода, используемую всеми четырьмя модулями, которая также предоставляет API, используемый для расширений; впоследствии Xtables в той или иной степени используется для обозначения всей архитектуры брандмауэра (v4, v6, arp и eb).

iptables заменил ipchains ; а преемником iptables является nftables , который был выпущен 19 января 2014 года [2] и был объединен с основной веткой ядра Linux в версии ядра 3.13.

Обзор

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

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

Происхождение пакета определяет, какую цепочку он пересекает изначально. Существует пять предопределенных цепочек (соответствующих пяти доступным перехватчикам Netfilter), хотя в таблице могут быть не все цепочки. Предопределенные цепочки имеют политику , например DROP, которая применяется к пакету, если он достигает конца цепочки. Системный администратор может создать любое количество других цепочек. У этих сетей нет политики; если пакет достигает конца цепочки, он возвращается в цепочку, вызвавшую его. Цепочка может быть пустой.

Цепь не существует сама по себе; он принадлежит таблице . Есть три таблицы: nat , filter и mangle . Если перед ней не стоит опция -t , iptablesкоманда по умолчанию касается таблицы фильтров . Например, команда iptables -L -v -n, показывающая некоторые цепочки и их правила, эквивалентна iptables -t filter -L -v -n. Чтобы показать цепочки таблицы nat , используйте командуiptables -t nat -L -v -n

Каждое правило в цепочке содержит спецификацию, каким пакетам оно соответствует. Он также может содержать цель (используется для расширений) или вердикт (одно из встроенных решений). По мере прохождения пакета по цепочке поочередно проверяется каждое правило. Если правило не соответствует пакету, пакет передается следующему правилу. Если правило соответствует пакету, оно выполняет действие, указанное целью/вердиктом, что может привести к тому, что пакету будет разрешено продолжить движение по цепочке, а может и нет. Совпадения составляют большую часть наборов правил, поскольку они содержат условия, на которые проверяются пакеты. Это может произойти практически на любом уровне модели OSI , как, например, с параметрами --mac-sourceи -p tcp --dport, а также существуют совпадения, независимые от протокола, такие как -m time.

Пакет продолжает перемещаться по цепочке до тех пор, пока

  1. правило сопоставляет пакет и определяет окончательную судьбу пакета, например, путем вызова одного из ACCEPTили DROP, или модуля, возвращающего такую ​​конечную судьбу; или
  2. правило вызывает RETURNвердикт, и в этом случае обработка возвращается в цепочку вызовов; или
  3. конец цепочки достигнут; обход либо продолжается в родительской цепочке (как если бы RETURNона использовалась), либо используется политика базовой цепочки, которая является окончательной судьбой.

Целевые объекты также возвращают вердикт типа ACCEPT( NATмодули сделают это) или DROP(например, REJECTмодуль), но также могут подразумевать CONTINUE(например, LOGмодуль; CONTINUEэто внутреннее имя) продолжить выполнение следующего правила, как если бы цель/вердикт вообще не были указаны.

Утилиты пользовательского пространства

Интерфейсы

Существует множество сторонних программных приложений для iptables, которые пытаются облегчить настройку правил. Интерфейсы в текстовой или графической форме позволяют пользователям создавать простые наборы правил щелчком мыши; сценарии обычно относятся к сценариям оболочки (но возможны и другие языки сценариев), которые вызывают iptables или (чем быстрее) iptables-restoreс набором предопределенных правил, либо правила, расширенные из шаблона с помощью простого файла конфигурации. В дистрибутивах Linux обычно используется последняя схема использования шаблонов. Такой подход на основе шаблонов представляет собой практически ограниченную форму генератора правил, и такие генераторы также существуют автономно, например, в виде веб-страниц PHP.

Такие интерфейсы, генераторы и скрипты часто ограничены встроенными системами шаблонов, а шаблоны предлагают места для замены определяемых пользователем правил. Кроме того, сгенерированные правила обычно не оптимизированы для конкретного эффекта брандмауэра, которого желает пользователь, поскольку это, скорее всего, увеличит затраты на обслуживание для разработчика. Пользователям, которые достаточно хорошо понимают iptables и хотят оптимизировать свой набор правил, рекомендуется создать свой собственный набор правил.

Другие известные инструменты

Смотрите также

Рекомендации

  1. Фил Саттер (10 октября 2023 г.). «Выпуск iptables 1.8.10» . Проверено 10 октября 2023 г.
  2. ^ «Linux 3.13, раздел 1.2. nftables, преемник iptables» . kernelnewbies.org . 19 января 2014 года . Проверено 20 января 2014 г.

Литература

Внешние ссылки