Netfilter

Netfilter
netfilter
Netfilter-logo.png
Тип

Межсетевой экран

Разработчик

Netfilter Core Team

Операционная система

на ядре Linux

Лицензия

GNU GPL

Сайт

www.netfilter.org

Содержание

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

Название

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

В системе 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».

Цепочки

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

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

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

Таблицы

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

  • raw — просматривается до передачи пакета системе определения состояний. Используется редко, например для маркировки пакетов, которые НЕ должны обрабатываться системой определения состояний. Для этого в правиле указывается действие NOTRACK. Содержит цепочки PREROUTING и OUTPUT.
  • mangle — содержит правила модификации (обычно заголовка) IP‐пакетов. Среди прочего, поддерживает действия TTL (Time to live), TOS (Type of Service), и 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). Архивировано из первоисточника 24 февраля 2012.

Ссылки

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


Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "Netfilter" в других словарях:

  • Netfilter — Development status Active Type firewall tools for Linux. License GNU General Public License Website http://www.netfilter.org/ …   Wikipedia

  • Netfilter — ist ein Softwareprojekt, das unter anderem Paketfilter, Network Address Translation und weitere für Firewalls relevante Werkzeuge für das Betriebssystem Linux bereitstellt. Weiterhin bezeichnet Netfilter die Softwareschicht innerhalb des Linux… …   Deutsch Wikipedia

  • Netfilter — Développeur L équipe Netfilter Environnement GNU/Linux …   Wikipédia en Français

  • Netfilter/iptables — Netfilter es un framework disponible en el núcleo Linux que permite interceptar y manipular paquetes de red. Dicho framework permite realizar el manejo de paquetes en diferentes estados del procesamiento. Netfilter es también el nombre que recibe …   Wikipedia Español

  • Netfilter/iptables — iptables Entwickler: Netfilter Projekt Team Aktuelle Version: 1.4.3.2 (6. April 2009) Betriebssystem: Linux Kategorie: Firewall …   Deutsch Wikipedia

  • NetFilter — …   Википедия

  • Iptables/netfilter — iptables Entwickler: Netfilter Projekt Team Aktuelle Version: 1.4.3.2 (6. April 2009) Betriebssystem: Linux Kategorie: Firewall …   Deutsch Wikipedia

  • Iptables — Entwickler: Netfilter Projekt Team Aktuelle Version: 1.4.3.2 (6. April 2009) Betriebssystem: Linux Kategorie: Firewall …   Deutsch Wikipedia

  • Iptables — Infobox Software name = iptables caption = author = Rusty Russell developer = Netfilter Core Team released = 1998 latest release version = 1.4.1.1 latest release date = June 17, 2008 programming language = C operating system = Linux genre =… …   Wikipedia

  • Iptables — В данной статье или разделе имеется список источников или внешних ссылок, но источники отдельных утверждений остаются неясными из за отсутствия сносок …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»