Брандмауэр в ядре находится между интернет-слоем и уровнем сетевого доступа?

[1177035] Вы можете установить [1177461] разделитель выходных записей [1177462] на пробел (или вкладку). Если вы хотите, чтобы вывод был напечатан с завершающей новой строкой, вы можете изменить его обратно перед окончательной печатью

1
13.04.2017, 15:36
1 ответ

Брандмауэр не существует в единственном месте сетевого стека ядра. В Linux, например, базовая инфраструктура для поддержки функций брандмауэра обеспечивается структурой фильтра пакетов netfilter . Инфраструктура netfilter сама по себе представляет собой не более чем набор перехватчиков в различных точках стека протоколов ядра .

Netfilter предоставляет пять перехватчиков:

  • NF_IP_PRE_ROUTING

    Пакеты, прошедшие начальную проверку работоспособности, передаются на перехватчик NF_IP_PRE_ROUTING . Это происходит до того, как будут приняты какие-либо решения о маршрутизации.

  • NF_IP_LOCAL_IN

    Пакеты, предназначенные самому хосту, передаются ловушке NF_IP_LOCAL_IN .

  • NF_IP_FORWARD

    Пакеты, предназначенные для другого интерфейса, передаются ловушке NF_IP_FORWARD .

  • NF_IP_LOCAL_OUT

    Локально созданные пакеты передаются на NF_IP_LOCAL_OUT после принятия решения о маршрутизации, хотя маршрутизация может быть изменена в результате перехвата.

  • NF_IP_POST_ROUTING

    Перехватчик NF_IP_POST_ROUTING - это последний перехватчик пакетов, который может быть передан перед передачей по сети.

Брандмауэр состоит из модуля ядра, который регистрирует функцию обратного вызова для каждого из перехватчиков, предоставляемых инфраструктурой netfilter; и инструменты пользовательского пространства для настройки брандмауэра. Каждый раз, когда пакет передается ловушке, вызывается соответствующая функция обратного вызова.Функция обратного вызова может свободно манипулировать пакетом, вызвавшим обратный вызов. Функция обратного вызова также определяет, обрабатывается ли пакет дальше; упавший; обрабатывается самим обратным вызовом; в очереди, обычно для обработки пользовательского пространства; или если та же ловушка должна быть вызвана снова для пакета.

Netfilter обычно связан с пакетным фильтром iptables . Как Gnouc уже указывал в вашем предыдущем вопросе , iptables имеет модуль ядра, ip_tables , который взаимодействует с netfilter, и программу пользовательского пространства, iptables , для настройки встроенный в ядро ​​фильтр пакетов. Фактически, фильтр пакетов iptables предоставляет несколько инструментов, каждый из которых связан с различным типом обработки пакетов:

  • Инструмент пользовательского пространства iptables и модуль ядра ip_tables связаны с Фильтрация пакетов IPv4 .

  • Инструмент пользовательского пространства ip6tables и модуль ядра ip6_tables занимаются фильтрацией пакетов IPv6 .

  • Средство пользовательского пространства arptables и модуль ядра arp_tables занимаются фильтрацией пакетов ARP .

В дополнение к фильтрам пакетов iptables, инструмент пользовательского пространства ebtables и модуль ядра eb_tables занимаются фильтрацией кадров канального уровня Ethernet . В совокупности эти инструменты иногда называют xtables из-за схожей архитектуры на основе таблиц.

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

  • Таблица raw фильтрует пакеты перед любой другой таблицей.
  • Таблица mangle используется для изменения пакетов.
  • Таблица nat используется для трансляции сетевых адресов (например, переадресации портов).
  • Таблица фильтра используется для фильтрации пакетов, она никогда не должна изменять пакеты.
  • Таблица безопасности используется для сетевых правил обязательного контроля доступа (MAC), реализуемых модулями безопасности Linux (LSM), такими как SELinux.

Следующая диаграмма Яна Энгельхардта показывает, как таблицы и цепочки соответствуют различным уровням модели OSI:

Schematic for the packet flow paths through Linux networking and xtables

Ранее в этом году новая структура пакетного фильтра под названием nftables была объединена в основное ядро ​​Linux версии 3.13. Фреймворк nftables предназначен для замены существующих инструментов xtables. Он также основан на инфраструктуре netfilter.

Другие межсетевые экраны на основе ядра в Unix-подобных операционных системах включают IPFilter (мультиплатформенный), PF (OpenBSD, портированный на различные другие варианты BSD и Mac OS X), NPF (NetBSD), ipfirewall (FreeBSD, портирован на различные операционные системы).

8
27.01.2020, 23:12

Теги

Похожие вопросы