Netfilter

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
netfilter
Файл:Netfilter-logo.png
Тип Межсетевой экран
Разработчик Netfilter Core Team
ОС на ядре Linux
Лицензия GNU GPL
Сайт www.netfilter.org

Содержание

Netfilterмежсетевой экран (брандмауэр), встроен в ядро Linux версий 2.4 и 2.6.

iptables — название пользовательской утилиты (запускаемой из командной строки) предназначенной для управления системой netfilter. С ее помощью администраторы создают и изменяют правила, управляющие фильтрацией и перенаправлением пакетов. Для работы с семейством протоколов IPv6 существует отдельная версия утилиты iptables — ip6tables.

Некоторые авторы под словом netfilter имеют в виду только те элементы межсетевого экрана, которые непосредственно являются частью стека протоколов ядра, а всё прочее (систему таблиц и цепочек) называют iptables.[1] Из‑за не совсем ясной терминологии, иногда весь проект (внутриядерный межсетевой экран вместе с пользовательской утилитой) просто именуется netfilter/iptables.

История

Проект netfilter/iptables был основан в 1998. Автором является Расти Расселл (en:Rusty Russell); он же автор проекта‐предшественника ipchains. По мере развития проекта, в 1999 г. образовалась команда Netfilter Core Team (сокращено coreteam). Разработанный межсетевой экран получил официальное название netfilter. В марте 2000 г. был включен в ядро Linux 2.3. В августе 2003 руководителем coreteam стал Харальд Вельте (Harald Welte). В 2004 г. Вельте начал и выиграл судебный процесс против компании Sitecom GmbH, которая использовала netfilter в своей продукции, но отказывалась следовать лицензии GNU GPL.[2]

До появления iptables, для обеспечения возможностей межсетевого экрана в Linux использовались проекты ipchains в Linux 2.2 и ipfwadm в Linux 2.0, в свою очередь основанный на ipfw из системы BSD. Проекты ipchains и ipfwadm изменяли работу стека протоколов ядра Linux, поскольку до появления netfilter в архитектуре ядра не существовало возможностей для подключения дополнительных модулей управления пакетами. iptables сохранил основную идею ipfwadm — список правил, состоящих из критериев и действия, которое выполняется если пакет соответствует критериям. В ipchains была представлена новая концепция — возможность создавать новые цепочки правил и переход пакетов между цепочками, а в iptables концепция была расширена до четырех таблиц, разграничивающих цепочки правил по задачам: фильтрация, NAT, и модификация пакетов. Также iptables расширил возможности Linux в области определения состояний, позволяя создавать межсетевые экраны работающие на сеансовом уровне.

Архитектура

Файл:Netfilter-diagram-rus.png
Путь проверки пакета в системе netfilter

В системе netfilter, пакеты пропускаются через цепочки. Цепочка является упорядоченным списком правил, а каждое правило может содержать критерии и действие или переход. Когда пакет проходит через цепочку, система netfilter по очереди проверяет, соответствует ли пакет всем критериям очередного правила, и если так, то выполняет действие (если критериев в правиле нет, то действие выполняется для всех пакетов проходящих через правило). Вариантов возможных критериев очень много. Например, пакет соответствует критерию --source 192.168.1.1 если в заголовке пакета указано, что отправитель — 192.168.1.1. Самый простой тип перехода, --jump, просто пересылает пакет в начало другой цепочки. Также при помощи --jump можно указать действие. Стандартные действия доступные во всех цепочках — ACCEPT (пропустить), DROP (удалить), QUEUE (передать на анализ внешней программе), и RETURN (вернуть на анализ в предыдущую цепочку). Например, команды

iptables -A INPUT --source 192.168.1.1 --jump ACCEPT
iptables -A INPUT --jump other_chain

означают «добавить к концу цепочки INPUT следующие правила: пропустить пакеты из 192.168.1.1, а всё, что останется — отправить на анализ в цепочку other_chain».

Существует пять типов стандартных цепочек, встроенных в систему:

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

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

Цепочки организованны в 4 таблицы:

  • raw — просматривается до передачи пакета системе определения состояний. Используется редко, например для маркировки пакетов, которые НЕ должны обрабатываться системой определения состояний. Для этого в правиле указывается действие NOTRACK. Содержит цепочки PREROUTING и OUTPUT.
  • mangle — содержит правила модификации (обычно заголовка) IP‐пакетов. Среди прочего, поддерживает действия TTL, TOS, и MARK (для изменения полей TTL и TOS, и для изменения маркеров пакета). Редко необходима и может быть опасна. Содержит все пять стандартных цепочек.
  • nat — просматривает только пакеты, создающие новое соединение (согласно системе определения состояний). Поддерживает действия DNAT, SNAT, MASQUERADE, REDIRECT. Содержит цепочки PREROUTING, OUTPUT, и POSTROUTING.
  • filter — основная таблица, используется по умолчанию если название таблицы не указано. Содержит цепочки INPUT, FORWARD, и OUTPUT.

Цепочки с одинаковым названием но в разных таблицах — совершенно независимые объекты. Например, raw PREROUTING и mangle PREROUTING обычно содержат разный набор правил; пакеты сначала проходят через цепочку raw PREROUTING, а потом через mangle PREROUTING.

Механизм определения состояний

Механизм определения состояний (state machine, connection tracking) — система трассировки соединений, важная часть netfilter, при помощи которой реализуется межсетевой экран на сеансовом уровне (stateful firewall). Система позволяет определить, к какому соединению или сеансу принадлежит пакет. Механизм определения состояний анализирует все пакеты кроме тех, которые были помечены NOTRACK в таблице raw.

В системе netfilter, каждый пакет проходящий через механизм определения состояний, может иметь одно из четырех возможных состояний:

  • NEW — пакет открывает новый сеанс. Классический пример — пакет TCP с флагом SYN.
  • ESTABLISHED — пакет является частью уже существующего сеанса.
  • RELATED — пакет открывает новый сеанс, связанный с уже открытым сеансом. Например, во время сеанса пассивного FTP, клиент подсоединяется к порту 21 сервера, сервер сообщает клиенту номер второго, случайно выбранного порта, после чего клиент подсоединяется ко второму порту для передачи файлов. В этом случае второй сеанс (передача файлов по второму порту) связан с уже существующим сеансом (изначальное подсоединение к порту 21).
  • INVALID — все прочие пакеты.

Эта классификация пакетов во многих случаях отличается от официального описания сетевых протоколов. Например, согласно netfilter, TCP пакет ACK отвечающий на SYN — часть существующего сеанса, а по определению TCP такой пакет — всего лишь элемент открытия сеанса.

Определить сеансы некоторых протоколов очень просто; например, признак сеанса UDP — клиент с порта X посылает серверу на порт Y (или наоборот) пакеты не реже чем раз в 30 секунд. У других протоколов (FTP, SIP, H.323 итд.) сеанс определить сложнее, и netfilter должен анализировать содержимое пакетов чтобы правильно определить их состояние.

Просмотреть атрибуты активных подключений можно в псевдо‐файле /proc/net/nf_conntrack (или /proc/net/ip_conntrack). Для каждого подключения указывается информация следующего вида:

tcp      6 117 SYN_SENT src=192.168.1.6 dst=192.168.1.9 sport=32775 dport=22
[UNREPLIED] src=192.168.1.9 dst=192.168.1.6 sport=22 dport=32775 [ASSURED] use=2

Утилита conntrack позволяет управлять механизмом определения состояний.

Примечания

  1. Coulson, David Mastering IPTables (англ.). www.linuxformat.co.uk (4 апреля 2001).
  2. Urteil Harald Welte gegen Sitecom Deutschland GmbH (нем.). Мюнхенский суд (19 мая 2004).

Ссылки

Администрирование netfilter

  • NuFW an authenticating firewall using Netfilter
  • Firewall Builder
  • dwall All-purpose firewall generator
  • Firestarter Визуальный редактор
  • NetfilterOne A free graphical tool for managing Netfilter’s security policy (This software is no longer available directly from Solsoft)
  • KMyFirewall Графический интерфейс (GUI) на основе KDE/Qt
  • GIPT - C++/Qt API
ar:نت فيلتر

de:Netfilter en:Netfilter es:Netfilter/iptables fr:Netfilter it:Netfilter lv:Netfilter/iptables no:Netfilter og iptables pl:Netfilter pt:Netfilter

Источник — «http://www.sbup.com/wiki/Netfilter»
Личные инструменты

Served in 0.314 secs.