Таблицы брандмауэра Netfilter, для чего они используются

Обновлено: 02.07.2024

Администраторы, разбирающиеся в Unix, могут не одобрить использование Linux в качестве корпоративного брандмауэра, но ядро ​​Linux 2.4 обеспечивает уровень безопасности в Linux, который может изменить их мнение.

Поскольку темпы изменений в Linux очень высоки, Linux обычно не является предпочтительной платформой для реализации брандмауэра; хотя быстрый прогресс хорош во многих отношениях, он также свидетельствует об отсутствии стабильности. Но последнее ядро ​​Linux версии 2.4 предлагает ряд улучшений по сравнению с ядром 2.2, которые делают Linux жизнеспособной альтернативой корпоративным брандмауэрам. Netfilter, встроенная в ядро ​​инфраструктура «управления пакетами» Linux, и iptables, административный инструмент, который управляет ею, представляют собой существенное улучшение по сравнению с ipchains, предыдущей опцией, доступной в ядре 2.2. Netfilter предлагает гораздо более интегрированную и мощную инфраструктуру, чем ipchains, в то время как iptables обеспечивает приемлемую обратную совместимость с наборами правил ipchains и ipfwadm, при этом предоставляя администраторам возможность улучшить реализацию брандмауэра под Linux.

Межсетевой экран Linux
При принятии решения о реализации брандмауэра большинство администраторов, разбирающихся в Unix, обычно выбирают использование ipfilter в OpenBSD из-за сочетания возможностей и стабильности, поскольку возможности инфраструктуры фильтрации пакетов Linux не соответствуют этому. ipфильтр. В частности, предыдущие фильтры пакетов для Linux не сохраняли состояние (это означало, что они не могли связывать запросы информации и ответы на эти запросы) и не предлагали интегрированный интерфейс для фильтрации пакетов, преобразования адресов или других операций с пакетами. Это значительно усложняло написание правил брандмауэра и в обычных случаях значительно снижало желаемый уровень безопасности, который мог обеспечить брандмауэр.

Ipfwadm, фильтр пакетов для ядра Linux версии 2.0, и ipchains, фильтр пакетов для ядра Linux 2.2, были относительно простыми инструментами, которые не соответствовали потребностям большинства корпоративных сетей. Они также страдали от отсутствия интеграции; фильтрация пакетов, поддержка распространенных протоколов, таких как RealAudio, и маскировка (как в мире Linux называется трансляция сетевых адресов (NAT)) — все это обрабатывалось отдельно. Все изменилось с появлением Netfilter и iptables.

Состояние: зачем оно нужно?
Фильтры пакетов без сохранения состояния проще в реализации, но сложнее в настройке и, в конечном счете, намного менее безопасны, чем фильтры пакетов, сохраняющие состояние. С точки зрения фильтров пакетов без сохранения состояния, каждый поступающий пакет является новым пакетом (не связанным ни с каким пакетом, пришедшим до или после). Поскольку наиболее полезные сетевые диалоги имеют две стороны, фильтры пакетов без сохранения состояния требуют двух правил для каждого типа сетевого трафика, который они разрешают: одно для запроса, а другое для ответа.

Все сетевые диалоги с использованием TCP/IP имеют исходный IP-адрес, исходный порт, целевой IP-адрес и порт назначения. Таким образом, чтобы разрешить клиентским компьютерам во внутренней сети просматривать веб-страницы, фильтры пакетов без сохранения состояния должны разрешать исходящий трафик на все компьютеры через порт 80 (общий порт Всемирной паутины) и разрешать входящий трафик с порта 80 на все компьютеры во внутренней сети. . Веб-запросы будут поступать со случайно выбранного высокого исходного порта на внутренних машинах; следовательно, трафику должно быть разрешено входить в сеть через все высокие порты.

Но это открывает явную брешь в системе безопасности, поскольку почти любой процесс может работать на высоком порту на сетевом компьютере, включая конфиденциальные процессы, такие как общий доступ к файлам в сети (NFS), система X Window и RPC (удаленные вызовы процедур). Что действительно необходимо, так это что-то, что позволяет отвечать на IP-адрес и порт, с которого делается запрос, и с IP-адреса и порта, на который отправляется запрос. Для этого фильтр пакетов должен вести таблицу состояний ожидающих запросов. Это легко сделать с помощью iptables.

Netfilter или iptables?
Возможна некоторая путаница в отношении различий между Netfilter и iptables. Netfilter — это инфраструктура; это базовый API, который ядро ​​Linux 2.4 предлагает для приложений, которые хотят просматривать сетевые пакеты и манипулировать ими. Iptables — это интерфейс, который использует Netfilter для классификации пакетов и обработки пакетов.

Несмотря на то, что инфраструктура Netfilter невероятно расширяема, в настоящее время над ней построены только четыре модуля: модули обратной совместимости ipchains и ipfwadm (чтобы старые сценарии могли работать с более новыми ядрами, но без новых функций), iptables, система отслеживания соединений и система NAT. Как следует из названия, iptables работает с записями в таблицах (где каждая таблица представляет собой отдельный вид проверки или обработки пакетов).

  • filter: таблица по умолчанию, используемая для фильтрации пакетов с отслеживанием состояния.
  • nat: используется для управления NAT (маскированием) для сокрытия исходных адресов в сети с частной адресацией (RFC1918) и предоставления услуг в этой сети.
  • mangle: Используется для более причудливых вещей. Большинство сайтов в настоящее время не используют это.

Большой шаг
Не каждому сайту нужны Netfilter и iptables. Для сайтов, уже использующих Linux в качестве брандмауэра, переход на эту новую инфраструктуру может быть затруднен, поскольку администраторам потребуется изучить новый интерфейс. Но это стоит затраченных усилий; значительное улучшение безопасности оправдывает переход на Netfilter и iptables, особенно для сайтов, все еще использующих ipchains. А для сайтов, которые ранее не желали рассматривать Linux в качестве платформы брандмауэра, Netfilter/iptables может быть достаточно, чтобы заставить их передумать. OpenBSD по-прежнему остается королем безопасных операционных систем; команда OpenBSD провела последние четыре года, проверяя исходный код всей ОС. Но недавно OpenBSD изменила свой фильтр пакетов с отслеживанием состояния по умолчанию из-за опасений по поводу лицензирования ipfilter. Итак, теперь, когда ядро ​​Linux 2.4 предлагает фильтрацию пакетов с отслеживанием состояния, администраторам следует пересмотреть возможность использования Linux для корпоративных брандмауэров.

Каков ваш опыт работы с Netfilter и iptables? Напишите Тодду по электронной почте или поделитесь своими мыслями на нашем форуме Talkback ниже.

Тодд Андервуд — технический директор Oso Grande Technologies и участник ZDNet Tech Update.

iptables — это утилита командной строки для настройки брандмауэра ядра Linux, реализованная в рамках проекта Netfilter. Термин iptables также обычно используется для обозначения этого брандмауэра на уровне ядра. Его можно настроить непосредственно с помощью iptables или с помощью одного из множества консольных и графических интерфейсов. iptables используется для IPv4, а ip6tables используется для IPv6. И iptables, и ip6tables имеют одинаковый синтаксис, но некоторые параметры относятся либо к IPv4, либо к IPv6.

Примечание: iptables — это устаревшая платформа, nftables стремится предоставить современную замену, включая уровень совместимости.

Содержание

Установка

Стандартное ядро ​​Arch Linux скомпилировано с поддержкой iptables. Вам нужно будет только установить пользовательские утилиты, которые предоставляются пакетом iptables. Пакет iptables является косвенной зависимостью от базового метапакета, поэтому он должен быть установлен в вашей системе по умолчанию.

Внешние интерфейсы

Консоль

  • Брандмауэр Arno — безопасный брандмауэр как для односетевых, так и для многосетевых компьютеров. Очень прост в настройке, удобен в управлении и легко настраивается. Поддерживает: NAT и SNAT, переадресацию портов, Ethernet-модемы ADSL со статическими и динамически назначаемыми IP-адресами, фильтрацию MAC-адресов, обнаружение скрытого сканирования портов, переадресацию DMZ и DMZ-2-LAN, защиту от переполнения SYN/ICMP, обширную определяемую пользователем регистрацию с помощью ограничение скорости для предотвращения переполнения журналов, все IP-протоколы и VPN, такие как IPsec, поддержка подключаемых модулей для добавления дополнительных функций.
  • ferm — Инструмент для обслуживания сложных брандмауэров, без необходимости переписывать сложные правила снова и снова. Он позволяет хранить весь набор правил брандмауэра в отдельном файле и загружать его одной командой. Конфигурация брандмауэра напоминает структурированный язык программирования, который может содержать уровни и списки.
  • FireHOL — язык для описания правил брандмауэра, а не просто сценарий, создающий брандмауэр. Это упрощает создание даже сложных брандмауэров — так, как вам нужно.
  • Firetable — инструмент для обслуживания брандмауэра IPtables. Каждый интерфейс можно настроить отдельно с помощью собственного файла конфигурации с простым и понятным синтаксисом.
  • firewalld (firewall-cmd) — демон и консольный интерфейс для настройки сети и зон брандмауэра, а также установки и настройки правил брандмауэра.
  • Shorewall — инструмент высокого уровня для настройки Netfilter. Вы описываете свои требования к брандмауэру/шлюзу, используя записи в наборе файлов конфигурации.
  • Простой брандмауэр — простой внешний интерфейс для iptables.
  • PeerGuardian (pglcmd) — брандмауэр, ориентированный на конфиденциальность. Он блокирует соединения с хостами, указанными в огромных списках блокировки (тысячи или миллионы диапазонов IP-адресов).
  • Vuurmuur — мощный менеджер брандмауэра. Он имеет простую и легкую в освоении конфигурацию, которая позволяет создавать как простые, так и сложные конфигурации. Конфигурация может быть полностью настроена с помощью графического интерфейса ncurses, который обеспечивает безопасное удаленное администрирование через SSH или консоль. Vuurmuur поддерживает формирование трафика, имеет мощные функции мониторинга, которые позволяют администратору просматривать журналы, подключения и использование полосы пропускания в режиме реального времени.
  • Servicewall — простой адаптивный внешний интерфейс iptables, позволяющий определять службы, разрешенные при подключении к определенной области, и автоматически переключать профили при необходимости. Он использует определения сервисов, предоставленные jhansonxi и используемые ufw. Он использует ulogd для подачи в журнал журналов отброшенных пакетов и предоставляет структуру проверки журналов с упором на ограничение доступа к журналам.

Графический

  • Firewall Builder — инструмент настройки и управления брандмауэром с графическим интерфейсом, поддерживающий расширенные списки доступа iptables (netfilter), ipfilter, pf, ipfw, Cisco PIX (FWSM, ASA) и маршрутизаторов Cisco. Программа работает на Linux, FreeBSD, OpenBSD, Windows и macOS и может управлять как локальными, так и удаленными брандмауэрами.
  • firewalld (firewall-config) — демон и графический интерфейс для настройки сети и зон брандмауэра, а также установки и настройки правил брандмауэра.
  • Gufw – внешний интерфейс для ufw на основе GTK, который является интерфейсом командной строки для iptables (gufw->ufw->iptables). Он очень прост и удобен в использовании.
  • Графический интерфейс пользователя PeerGuardian (pglgui) — приложение брандмауэра, ориентированное на конфиденциальность. Он блокирует соединения с хостами, указанными в огромных списках блокировки (тысячи или миллионы диапазонов IP-адресов).

Основные понятия

iptables используется для проверки, изменения, пересылки, перенаправления и/или удаления IP-пакетов. Код для фильтрации IP-пакетов уже встроен в ядро ​​и организован в виде набора таблиц, каждая из которых предназначена для определенной цели. Таблицы состоят из набора предопределенных цепочек, а цепочки содержат правила, которые проходятся по порядку. Каждое правило состоит из предиката возможных совпадений и соответствующего действия (называемого target), которое выполняется, если предикат верен; то есть условия совпадают. Если IP-пакет достигает конца встроенной цепочки, включая пустую цепочку, то цель policy цепочки определяет конечное назначение IP-пакета. iptables — это пользовательская утилита, позволяющая работать с этими цепочками/правилами. Большинство новых пользователей находят сложность IP-маршрутизации в Linux довольно сложной, но на практике наиболее распространенные варианты использования (NAT и/или базовый брандмауэр Интернета) значительно проще.

Ключом к пониманию того, как работает iptables, является эта диаграмма. Слово нижнего регистра вверху — это таблица, а слово в верхнем регистре внизу — цепочка. Каждый IP-пакет, поступающий на любой сетевой интерфейс, проходит через эту блок-схему сверху вниз. Распространенным заблуждением является то, что пакеты, входящие, скажем, из внутреннего интерфейса, обрабатываются иначе, чем пакеты из интерфейса, обращенного к Интернету. Все интерфейсы обрабатываются одинаково; вам решать определять правила, которые относятся к ним по-разному. Конечно, некоторые пакеты предназначены для локальных процессов, поэтому поступают из верхней части диаграммы и останавливаются на , в то время как другие пакеты генерируются локальными процессами; следовательно, начните с и продолжайте вниз по блок-схеме. Подробное объяснение того, как работает эта блок-схема, можно найти здесь.

В подавляющем большинстве случаев вам вообще не нужно будет использовать таблицы raw, mangle или security. Следовательно, на следующей диаграмме показан упрощенный поток сетевых пакетов через iptables:

Таблицы

iptables содержит пять таблиц:

  1. raw используется только для настройки пакетов, чтобы исключить их от отслеживания соединений.
  2. filter — это таблица по умолчанию, в которой выполняются все действия, обычно связанные с брандмауэром.
  3. nat используется для трансляции сетевых адресов (например, для переадресации портов).
  4. mangle используется для специализированных изменений пакетов.
  5. безопасность используется для сетевых правил Mandatory Access Control (например, SELinux — дополнительные сведения см. в этой статье).

В наиболее распространенных случаях использования вы будете использовать только два из них: filter и nat. Другие таблицы предназначены для сложных конфигураций, включающих несколько маршрутизаторов и решений по маршрутизации, и в любом случае выходят за рамки этих вводных замечаний.

Цепочки

Таблицы состоят из цепочек, представляющих собой списки правил, которым следуют по порядку. Таблица по умолчанию filter содержит три встроенные цепочки: INPUT, OUTPUT и FORWARD, которые активируются в разных точках процесса фильтрации пакетов, как показано на блок-схеме. Таблица nat включает цепочки PREROUTING , POSTROUTING и OUTPUT .

См. iptables(8) для описания встроенных цепочек в других таблицах.

По умолчанию ни одна из цепочек не содержит правил. Вам решать добавлять правила к цепочкам, которые вы хотите использовать. Цепочки делают имеют политику по умолчанию, которая обычно установлена ​​на ACCEPT , но ее можно сбросить на DROP , если вы хотите быть уверенным, что ничего не ускользнет из вашего набора правил. Политика по умолчанию всегда применяется только в конце цепочки.Следовательно, пакет должен пройти через все существующие правила в цепочке, прежде чем будет применена политика по умолчанию.

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

Правила

Фильтрация пакетов основана на правилах, которые определяются несколькими совпадениями (условиями, которым должен удовлетворять пакет, чтобы можно было применить правило), и одним цель (действие, выполняемое, когда пакет соответствует всем условиям). Типичными вещами, с которыми может совпадать правило, являются интерфейс, через который пришел пакет (например, eth0 или eth1), тип пакета (ICMP, TCP или UDP) или порт назначения пакета.

Цели указываются с помощью параметра -j или --jump. Цели могут быть либо пользовательскими цепочками (т.е. если эти условия соблюдены, перейти к следующей пользовательской цепочке и продолжить там обработку), одной из специальных встроенных целей или целевым расширением. Встроенные цели — это ACCEPT, DROP, QUEUE и RETURN, расширения цели — это, например, REJECT и LOG. Если целью является встроенная цель, судьба пакета решается немедленно, и обработка пакета в текущей таблице останавливается. Если целью является определяемая пользователем цепочка и судьба пакета не решается этой второй цепочкой, он будет отфильтрован по оставшимся правилам исходной цепочки. Целевые расширения могут быть либо завершающими (как встроенные цели), либо незавершающими (как определяемые пользователем цепочки), подробности см. в iptables-extensions(8).< /p>

Переход по цепочкам

Сетевой пакет, полученный на любом интерфейсе, проходит по цепочке таблиц управления трафиком в порядке, показанном на блок-схеме. Первое решение о маршрутизации включает в себя определение того, является ли конечным пунктом назначения пакета локальный компьютер (в этом случае пакет проходит через цепочки INPUT) или где-то еще (в этом случае пакет проходит через цепочки FORWARD). Последующие решения о маршрутизации включают решение о том, какой интерфейс назначить исходящему пакету. В каждой цепочке на пути каждое правило в этой цепочке оценивается по порядку, и всякий раз, когда правило совпадает, выполняется соответствующее действие цели/перехода. Три наиболее часто используемые цели: ACCEPT, DROP и переход к пользовательской цепочке. В то время как встроенные цепочки могут иметь политики по умолчанию, пользовательские цепочки не могут. Если каждое правило в цепочке, на которую вы перешли, не обеспечивает полного совпадения, пакет отбрасывается обратно в цепочку вызова, как показано здесь. Если в какой-то момент достигнуто полное совпадение правила с целью DROP, пакет отбрасывается и дальнейшая обработка не производится. Если пакет ПРИНЯТ внутри цепочки, он будет ПРИНЯТ и во всех цепочках надмножеств, и он не будет проходить дальше ни по одной из цепочек надмножеств. Однако имейте в виду, что пакет будет продолжать проходить через все остальные цепочки в других таблицах обычным образом.

Модули

Существует множество модулей, которые можно использовать для расширения iptables, таких как connlimit, conntrack, limit и недавние. Эти модули добавляют дополнительные функции, позволяющие использовать сложные правила фильтрации.

Конфигурация и использование

После добавления правил через командную строку, как показано в следующих разделах, файл конфигурации не изменяется автоматически — его необходимо сохранить вручную:

Если вы отредактируете файл конфигурации вручную, вам придется перезагрузить iptables.

Или вы можете загрузить его напрямую через iptables:

Из командной строки

Отображение текущих правил

Основной командой для вывода списка текущих правил является --list-rules ( -S ), формат вывода аналогичен утилите iptables-save. Основное различие между ними состоит в том, что последний выводит правила для всех таблиц по умолчанию, в то время как все команды iptables по умолчанию используют только таблицу фильтров.

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

Если выходные данные выглядят так, как показано выше, значит, в таблице фильтров по умолчанию нет правил (т. е. ничего не заблокировано). Другие таблицы можно указать с помощью параметра -t.

Сброс правил

Вы можете сбросить настройки iptables по умолчанию с помощью следующих команд:

Команда -F без аргументов сбрасывает все цепочки в текущей таблице. Точно так же -X удаляет все пустые цепочки не по умолчанию в таблице.

Отдельные цепочки можно очистить или удалить, указав после -F и -X аргумент [цепочка].

Правила редактирования

Правила можно редактировать, добавляя -A правило к цепочке, вставляя -I в определенную позицию в цепочке, заменяя -R существующее правило или удаляя -D. Примеры первых трех команд приведены ниже.

Во-первых, наш компьютер не является маршрутизатором (если, конечно, это не маршрутизатор).Мы хотим изменить политику по умолчанию в цепочке FORWARD с ACCEPT на DROP .

Предупреждение. Оставшаяся часть этого раздела предназначена для изучения синтаксиса и концепций, лежащих в основе правил iptables. Он не предназначен для защиты серверов. Для повышения безопасности вашей системы см. Простой брандмауэр с отслеживанием состояния для минимально безопасной конфигурации iptables и Безопасность для повышения уровня защиты Arch Linux в целом.

Функция синхронизации Dropbox по локальной сети передает пакеты каждые 30 секунд на все доступные компьютеры. Если мы находимся в локальной сети с клиентами Dropbox и не используем эту функцию, мы можем отклонить эти пакеты.

Примечание. Здесь мы используем REJECT, а не DROP, поскольку RFC 1122 требует, чтобы хосты по возможности возвращали ошибки ICMP, а не отбрасывали пакеты. На этой странице объясняется, почему почти всегда лучше ОТКЛОНИТЬ, чем УДАЛИТЬ пакеты.

Теперь предположим, что мы изменили свое мнение о Dropbox и решили установить его на свой компьютер. Мы также хотим синхронизироваться по локальной сети, но только с одним конкретным IP-адресом в нашей сети. Поэтому мы должны использовать -R, чтобы заменить наше старое правило. Где 10.0.0.85 — наш другой IP-адрес:

Теперь мы заменили исходное правило на другое, разрешающее 10.0.0.85 доступ к порту 17500 на нашем компьютере. Но теперь мы понимаем, что это не масштабируется. Если наш дружелюбный пользователь Dropbox пытается получить доступ к порту 17500 на нашем устройстве, мы должны разрешить ему немедленно, а не проверять его на соответствие каким-либо правилам брандмауэра, которые могут появиться позже!

Поэтому мы пишем новое правило, чтобы разрешить нашему доверенному пользователю немедленно. Использование -I для вставки нового правила перед нашим старым:

И замените наше второе правило тем, которое отклоняет все на порту 17500:

Наш окончательный список правил теперь выглядит так:

Руководства

Ведение журнала

Цель LOG может использоваться для регистрации пакетов, попадающих под действие правила. В отличие от других целей, таких как ACCEPT или DROP, пакет продолжит движение по цепочке после достижения цели LOG. Это означает, что для того, чтобы включить ведение журнала для всех отброшенных пакетов, вам придется добавить повторяющееся правило LOG перед каждым правилом DROP. Поскольку это снижает эффективность и усложняет задачу, вместо этого можно создать цепочку logdrop.

Создайте цепочку с помощью:

И добавьте во вновь созданную цепочку следующие правила:

Объяснение параметров limit и limit-burst приведено ниже.

Теперь всякий раз, когда мы хотим отбросить пакет и зарегистрировать это событие, мы просто переходим к цепочке logdrop, например:

Ограничение скорости журнала

Приведенная выше цепочка logdrop использует модуль limit, чтобы предотвратить слишком большой размер журнала iptables или ненужную запись на жесткий диск. Без ограничения ошибочно настроенная служба, пытающаяся подключиться, или злоумышленник может заполнить диск (или, по крайней мере, раздел /var), вызвав запись в журнал iptables.

Модуль limit вызывается с параметром -m limit . Затем вы можете использовать --limit, чтобы установить среднюю скорость, и --limit-burst, чтобы установить начальную скорость пакета. В приведенном выше примере logdrop:

добавляет правило, которое будет регистрировать все проходящие через него пакеты. Будут зарегистрированы первые 10 последовательных пакетов, а затем будут регистрироваться только 5 пакетов в минуту. Счетчик «предельного пакета» сбрасывается каждый раз, когда «предельная скорость» не нарушается, т. е. активность регистрации автоматически возвращается к нормальному состоянию.

Просмотр зарегистрированных пакетов

Зарегистрированные пакеты видны как сообщения ядра в журнале systemd.

Чтобы просмотреть все пакеты, зарегистрированные с момента последней загрузки компьютера:

системный журнал

Предполагая, что вы используете syslog-ng, вы можете управлять выводом журнала iptables в syslog-ng.conf . Заменить:

Это перестанет регистрировать вывод iptables в /var/log/everything.log .

Если вы также хотите, чтобы iptables регистрировался в файле, отличном от /var/log/iptables.log , вы можете просто изменить значение файла назначения d_iptables здесь (все еще в syslog-ng.conf ):

улогд

ulogd — это специализированный демон регистрации пакетов пользовательского пространства для netfilter, который может заменить цель LOG по умолчанию. Пакет ulogd доступен в репозитории [сообщества].

Межсетевой экран iptables используется для управления фильтрацией пакетов и правилами NAT. IPTables поставляется со всеми дистрибутивами Linux. Понимание того, как установить и настроить iptables, поможет вам эффективно управлять брандмауэром Linux.

Инструмент iptables используется для управления правилами брандмауэра Linux. На первый взгляд iptables может показаться сложным (или даже запутанным). Но как только вы поймете основы работы и структуры iptables, вам будет легко читать и писать правила брандмауэра iptables.

Эта статья является частью продолжающейся серии руководств по iptables. Это первая статья в этой серии.

В этой статье объясняется структура iptables, а также основные сведения о таблицах, цепочках и правилах iptables.

На высокоуровневом уровне iptables может содержать несколько таблиц. Таблицы могут содержать несколько цепочек. Цепочки могут быть встроенными или определяемыми пользователем. Цепочки могут содержать несколько правил.Правила определены для пакетов.

Итак, структура такая: iptables -> Таблицы -> Цепочки -> Правила. Это показано на следующей диаграмме.

< бр />


Рис. Таблица IPTables, цепочка и структура правил

Ещё раз повторюсь: таблицы — это набор цепочек, а цепочки — это набор правил брандмауэра.

Я. IPTABLES ТАБЛИЦЫ и ЦЕПИ

В IPTables есть следующие 4 встроенные таблицы.

1. Таблица фильтров

Фильтр — это таблица по умолчанию для iptables. Итак, если вы не определите свою собственную таблицу, вы будете использовать таблицу фильтров. Таблица фильтров Iptables имеет следующие встроенные цепочки.

  • Цепочка INPUT – входящие данные на брандмауэр. Для пакетов, поступающих на локальный сервер.
  • Цепочка OUTPUT – Исходящая от брандмауэра. Для пакетов, созданных локально и отправленных с локального сервера.
  • Прямая цепочка — пакет для другого сетевого адаптера на локальном сервере. Для пакетов, маршрутизируемых через локальный сервер.

2. Таблица NAT

Таблица NAT Iptable имеет следующие встроенные цепочки.

  • Цепочка PREROUTING — изменяет пакеты перед маршрутизацией. т.е. трансляция пакетов происходит сразу после поступления пакета в систему (и до маршрутизации). Это помогает преобразовать IP-адрес назначения пакетов во что-то, что соответствует маршрутизации на локальном сервере. Используется для DNAT (целевой NAT).
  • Цепочка POSTROUTING — изменяет пакеты после маршрутизации. т.е. Преобразование пакетов происходит, когда пакеты покидают систему. Это помогает преобразовать исходный IP-адрес пакетов во что-то, что может соответствовать маршрутизации на целевом сервере. Используется для SNAT (исходный NAT).
  • Цепочка OUTPUT — NAT для локально сгенерированных пакетов на брандмауэре.

3. Изменить стол

Таблица Iptables Mangle предназначена для специализированного изменения пакетов. Это изменяет биты QOS в заголовке TCP. Таблица Mangle имеет следующие встроенные цепочки.

  • PREROUTING цепочка
  • Цепочка OUTPUT
  • ВПЕРЕД
  • Цепочка INPUT
  • Цепочка POSTOUTING

4. Необработанная таблица

Таблица Raw в Iptable предназначена для исключений из конфигурации. Таблица Raw имеет следующие встроенные цепочки.

На следующей диаграмме показаны три важные таблицы в iptables.

< бр />

Рис. Встроенные таблицы IPTables

II. ПРАВИЛА IPTABLES

Ниже приведены ключевые моменты, которые следует помнить о правилах iptables.

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

Целевые значения

Ниже приведены возможные специальные значения, которые вы можете указать в цели.

  • ПРИНЯТЬ — брандмауэр примет пакет.
  • DROP — брандмауэр отбрасывает пакет.
  • QUEUE — брандмауэр передаст пакет пользовательскому пространству.
  • RETURN — брандмауэр прекратит выполнение следующего набора правил в текущей цепочке для этого пакета. Управление будет возвращено в цепочку вызовов.

Если вы выполните iptables –list (или) service iptables status, вы увидите все доступные правила брандмауэра в вашей системе. Следующий пример iptable показывает, что в этой системе не определены правила брандмауэра. Как видите, он отображает таблицу ввода по умолчанию с цепочкой ввода по умолчанию, цепочкой пересылки и цепочкой вывода.

Для просмотра таблицы mangle выполните следующие действия.

Для просмотра таблицы nat выполните следующие действия.

Чтобы просмотреть необработанную таблицу, выполните следующие действия.

Примечание. Если не указать параметр -t, будет отображаться таблица фильтров по умолчанию. Таким образом, обе следующие команды одинаковы.

В следующем примере iptable показано, что в цепочке ввода, пересылки и вывода таблицы фильтров определены некоторые правила.

Правила в выводе команды iptables –list содержат следующие поля:

  • num – номер правила в конкретной цепочке.
  • target – специальная целевая переменная, о которой мы говорили выше.
  • prot – Протоколы. tcp, udp, icmp и т. д.,
  • opt — специальные параметры для этого конкретного правила.
  • source — исходный IP-адрес пакета
  • destination — IP-адрес назначения для пакета.

Если вам понравилась эта статья, вам также может понравиться...

Комментарии к этой записи закрыты.

очень хорошо….продолжайте писать……

Обратите внимание, что DNAT и SNAT также означают Dynamic и Static NAT, так что не путайтесь, когда читаете другой текст. В любом случае, хорошая статья, спасибо!

Спасибо, Рамеш… очень ясно!

Отлично. Я искал хорошую статью об основах IPtable. Спасибо. Также жду следующую часть

Хорошая статья, с нетерпением жду продолжения серии. Есть идеи, когда другие выйдут?

Некоторые из ваших статей отлично подходят для начинающих, но это не учебник, а неправильное название.

Этот веб-сайт тааааак то, что мне нужно на работе. Хорошая работа, Рамеш, ты гений.
Большое спасибо

Отличная тема. С нетерпением жду остальных серий.

Рамеш,
Возможно, вы захотите включить туториал по fwbuilder, у него приятный графический интерфейс и он используется для управления брандмауэром на сотнях хостов.
-R

отличная вещь. тоже жду продолжения!

отличное чтение и информативность. с нетерпением ждем продолжения.

очень полезно.
ждите следующей части.

Хорошее руководство, я нахожу iptables сложным для понимания, но вы сделали это так просто, спасибо.

Очень хороший учебник. Спасибо

отличное начало серии
продолжайте обучение

Отличная работа. Я прочитал это и понял, что концепция запутана.. У меня есть несколько вопросов и ответов, вы поможете мне быть правильным.

Вопрос 1. Правило соответствует ssh-трафику (tcp, 22), поступающему через интерфейс eth0.
ответ. iptables -A INPUT -i eth0 -p tcp –dport 22
ИЛИ
iptables -A INPUT -i eth0 -p tcp –sport 22
Q2: Правило, которое сопоставляет трафик с DNS-сервером ( udp,53) с любого адреса в диапазоне 10.0.0.0-10.0.0.255
Ответ: iptable -A INPUT -m iprange –src-range 10.0.0.0-10.0.0.255 -d 10.19.6.142 (dns-сервер) -p udp –dport 53

Q3: Правило, которое соответствует трафику с любого адреса в диапазоне от 10.0.0.1 до 10.0.0.6 включительно.
Ответ. iptable -A INPUT -m iprange –src-range 10.0.0.1-10.0.0.6

Q4. Три правила, которые принимают трафик с адресов с 10.0.0.1 по 10.0.0.6, но отбрасывают трафик с адресов 10.0.0.0 и 10.0.0.7 без использования совпадений расширений.
Ответ: iptable -A INPUT -s 10.0.0.0 -j DROP
iptable -A INPUT -s 10.0.0.7 -j DROP
iptable -A INPUT -m iprange –src-range 10.0 .0.1-10.0.0.6 -j ПРИНЯТЬ

спасибо за правильность и ответ

Теперь только я понимаю концепции брандмауэра и правила Iptable…
Каждый метод объяснения теорий великолепен, мистер Рамеш… Так держать.. Мы все с ВАМИ…

Кажется, я начинаю понимать iptables, спасибо, чувак

как тогда определить априорность правил?

Очень хорошая статья. Спасибо. Кто-нибудь рассматривал плюсы и минусы использования и обслуживания собственного брандмауэра с открытым исходным кодом по сравнению с платой за услугу (например, Verizon, AT&T, другие)? Сколько времени уходит на сопровождение/поддержку решения с открытым исходным кодом? Я пытаюсь обосновать идею отказа от концепции, основанной на обслуживании (предоставляется устройство, техническое обслуживание/поддержка), вместо привлечения собственных квалифицированных ресурсов для создания/поддержки решения с открытым исходным кодом, как обсуждалось выше.

Вы сказали: «Таблица Mangle в Iptables предназначена для специализированного изменения пакетов. Это изменяет биты QOS в заголовке TCP. ”

Изменяет биты QOS в заголовке TCP? Я думал, что мангл изменил биты TOS в заголовке IP! TCP работает на более высоком уровне, чем IP, а mangle работает с IP-пакетами.

очень приятно, спасибо за публикацию. Продолжайте писать об iptables

это было действительно хорошо, большое спасибо, пожалуйста, продолжайте писать…

Спасибо, красиво и понятно

Действительно хорошо и очень ясно….

Хороший пост. Очень полезен для начинающих.

ищем правило, которое разрешает трафику, поступающему от внешнего пользователя через Интернет, получать доступ к FTP (192.168.0.252), SSH и веб-серверам (192.168.0.253) и некоторым рабочим станциям в той же сети. Маршрутизатор этой сети — 192.168.254

Необычайное знакомство, Рамеш

У вас есть знания и поразительные навыки, чтобы сообщить об этом, необычное сочетание

Спасибо за статью. Теперь я действительно понимаю, как эта штука работает. Потрясающе

Большое спасибо за отличный урок. Ждем следующего.
С уважением!

спасибо за столь популярную статью.

Большое спасибо. Это действительно было полезно для прояснения некоторых концепций. По стечению обстоятельств я первым перешел ко 2-й статье и оказался здесь, иначе было бы сложно.
Есть ли какая-либо структура каталогов, где можно получить обзор тем. Это тоже было бы полезно. (Причина в том, что ваши объяснения действительно исходят от низового уровня)
С уважением

Спасибо за статью, она очень хорошая. 🙂

Отлично и спасибо 😀

Большое спасибо, брат

Настоящий. хорошая и полезная статья для системных администраторов

Отличный муравей, спасибо

Хорошо структурированные iptables и все администраторы легко в этом разберутся.

Очень хорошая статья… 🙂

пожалуйста, добавьте ссылку на следующую страницу текущей темы

Абсолютно КРАСИВАЯ статья. Очень ясно. К стыду ВСЕ другие посты, включая страницы MAN.

Слезы на глазах, сериал так и не продолжился….

Привет, Рамеш Натараджан,
Большое спасибо за ваш пост. Раньше концепция «iptables» была похожа на кошмар, слишком сложна и непосильна для понимания. Большое спасибо за то, что вы сделали концепцию такой простой. Мы приветствуем четкое и точное объяснение.

Чрезвычайно хорошо объяснено, так как концепции были правильно организованы и следуют логической последовательности. Большинство других статей, которые я читал, никогда не объясняли определение «цепи»!….. Эта статья проделала чудесную работу.

Спасибо, Рамеш, за то, что сформулировал абстрактную тему и объяснил ее такими простыми словами. Наверняка вы умеете разбивать сложные вещи на простые предложения. Спасибо,
Мариэнн

Как направить входящий трафик из доверенной сети в цепочку?

-A FORWARD -i eth1 -o trust-outside -j ACCEPT

Большое спасибо, Рамеш…

Очень чистые и элегантные слова! Где следующий блог?

Хорошая статья. и, пожалуйста, обновите правила мангла.

Эта статья великолепна, и в ней упоминается, что она является частью серии. Были ли опубликованы какие-либо другие части?

отличная статья для таких новичков, как мы!! принимая это за основу для подготовки к лабораторному экзамену... большое спасибо за эту прекрасную работу.

от
MTech Cyber ​​Security (SNGCE)

спасибо братан.
. Отличная статья.

Отличное объяснение! Спасибо!

Привет, Рамеш,
Хороший док.
"Если правило не соответствует, пакет передается следующему правилу". – означает ли это, что он передается следующему правилу в Sl. нет ? Имеют ли эти правила какую-либо концепцию приоритета или SI.No этого правила означает его приоритет?

В продолжение моего предыдущего вопроса: как только я настроил три правила в цепочке INPUT таблицы фильтров, я не вижу никакой последовательности. Если последовательность не поддерживается, то как работает приоритет правила?

Chain FORWARD (правило ACCEPT)
целевая защита, выбор, источник, пункт назначения

Цепочка OUTPUT (политика ACCEPT)
целевая защита, выбор источника назначения

Спасибо, Рамеш. очень полезная статья 🙂

Одно но: это "один критерий", а не один "критерий". Критерии — множественное число (например, «явления»)

Полезная информация об iptables. Стоит отметить, что iptables необходимо сохранить, чтобы они оставались неповрежденными после перезагрузки.

почему у нас одинаковые цепочки в разных таблицах «брандмауэра iptables»?

"Итак, если вы не определите собственную таблицу, вы будете использовать фильтр..."

«Ты» должен быть «вашим».

Очень хорошо. Я многому научился.

Вы лучший специалист по Linux, который может просто объяснить такую ​​сложную тему, как Linux.

Хорошая статья для начинающих. Но ИМХО последний раздел с выводом «iptables –list» нуждается в дополнительных пояснениях.

Исходя из опыта проектирования сетей, связанного с межсетевыми экранами Cisco, Juniper и Checkpoint, это идеальная отправная точка для FW на основе хоста Linux. Эх, почему я не нашла это до того, как потратила деньги на книгу, которая сейчас буквально весит бумажный вес.

Я использую этот ящик в качестве маршрутизатора, и в соответствии с вашим предложением в пробном сообщении я настроил цепочку FORWARD из трех MAC-адресов пользователей, конфигурация указана ниже.
Два пользователя получают IP-адрес от DHCP-сервера, но не могут использовать браузер, поэтому, пожалуйста, не могли бы вы помочь мне, как они могут просматривать…..

DHCPACK от 192.168.23.171 до 90:72:40:58:a9:95 (is-iPhone)
DHCPACK от 192.168.23.178 до FC:75:16:67:3F:BE (android-f50ef57524010a1e )
DHCPACK от 192.168.23.100 до 00:25:64:A4:3F:01 (android-7306f0c1f5e73255)

Читайте также: