Инструменты пользователя

Инструменты сайта


linux:firewall:netfilter

Netfilter

Наиболее полная статья: https://ru.wikibooks.org/wiki/Iptables

Netfilter - межсетевой экран (брандмауэр), встроенный в ядро Linux с версии 2.4.
Разделение функциональности с помощью таблиц, позволило обрабатывать пакеты не только исходя из информации в самом пакете, но и учитывать данные о соединении в целом (stateful - фильтрация), контекст передачи.
Это одно из превосходств над своим предшественником - ipchains (в настоящее время устарел и не используется).

Архитектура

Правило - состоит из критерия, действия и счетчика (критерий и действие можно пропускать, останется только счетчик).
Цепочка - последовательность правил, есть пользовательские (нижний регистр, только для своей таблицы) и базовые (стандартные, верхний регистр).
Таблица - совокупность цепочек, объединенных функциональным назначением (имена в нижнем регистре).

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

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

Цепочки организованы в таблицы: 4 стандартных (raw, mangle, nat и filter) и бывают 2 дополнительных (security, rawpost), цепочки с одинаковым названием, но в разных таблицах - независимые объекты.

Принцип работы

Все пакеты пропускаются через цепочки правил.
При прохождении к нему последовательно применяются правила этой цепочки, если он соответствует указанному критерию, применяется действие (в т.ч. переход к другой цепочке, например пользовательской).
Действие может быть терминальным (заканчивающее обработку в данной цепочке (ACCEPT, REJECT)) или нетерминальным (MARK, TOS).
Действие по умолчанию обязательно терминальное.

Таблицы

raw

Выполнение действий с пакетами до их обработки в conntrack.

Цепочки: PREROUTING, OUTPUT.
Действия:

  • NOTRACK - предотвратить обработку в conntrack.
  • CT - позволяет задать различные настройки для conntrack.
  • RAWDNAT - позволяет выполнить проброс адресов и портов «сырым» методом, на уровне пакетов а не соединения, без conntrack и учета состояния соединения.

rawpost

Является следствием реализации RAWDNAT в таблице raw т.е. для обратной пересылки проброшенных адресов (портов) на уровне пакетов.

Цепочки: POSTROUTING.
Действия: RAWSNAT - обратный, «сырой» проброс адресов (портов).

mangle

Классификация и маркировка пакетов и соединений, а также модификация заголовков пакетов (TTL и TOS).

Цепочки: все 5 стандартных цепочек.
Действия:

  • TOS - Type of Service, тип облуживания, позволяет приоритизировать IP-трафик на сетевых маршрутизаторах.
  • DSCP - относится к TOS.
  • TTL - время жизни пакета (–ttl-(set|inc|dec)).
    Пример: Делает наш шлюз невидимым для большинства трассировщиков (автоматическое уменьшение поля системой происходит после prerouting но до forward ⇒ поместив этот код в forward, сделаем невидимым следующий на нами шлюз):
    # iptables -t mangle -I PREROUTING -j TTL --ttl-inc 1
  • HL - аналог TTL в IPv6.
  • MARK - маркировка пакета.
  • CONNMARK - маркировка соединения.
  • CLASSIFY - устанавливает CBQ-класс для обработки шейпером.
  • TCPMSS - устанавливает максимальный размер TCP-сегмента (MTU).
  • TCPOPTSTRIP - удаление заданных TCP-опций из заголовка
  • TPROXY - реализует механизм полностью прозрачного проксирования. Заголовки пакетов никак не модифицируются, в т.ч. никак не меняются IP-адреса (с обеих сторон).

nat

Stateful-преобразование сетевых адресов и портов.

Цепочки: PREROUTING, OUTPUT и POSTROUTING.
Действия:

  • MASQUERADE - подменяет адрес источника исходящих пакетов (например внешним IP адресом шлюза).
  • SNAT - Source Network Address Translation, аналогично MASQUERADE, но позволяет указать внешний адрес статически, что бы он не определялся каждый раз заново.
  • DNAT - Destination Network Address Translation, подменяет адрес назначения для входящих пакетов, позволяя пробрасывать адреса (порты) внутрь локальной сети.
  • REDIRECT - подменяет номер порта в (TCP/UDP)-пакете, и адрес назначения на свой собственный.
  • SAME - аналогично DNAT (SNAT), только IP адрес для подмены остается постоянным для клиентов.
  • NETMAP - позволяет пробросить целую сеть.
  • MIRROR - меняет местами адреса источника и получателя и отправляет пакеты). Создано исключительно для демонстрационных целей.

filter

Фильтрация трафика, т.е. запрет/разрешение пакетов (соединений).

Цепочки: INPUT, FORWARD и OUTPUT.
Действия:

  • ACCEPT - пропуск пакета.
  • REJECT - заблокировать и сообщить источнику об отказе (можно указать вариант сообщения).
  • DROP - заблокировать без сообщений.

+= Модуль xtables-addons:

  • STEAL - аналогично DROP, но в случае с исходящим пакетом, не сообщает приложению об ошибке.
  • TARPIT - «Подвесить» TCP соединение, используется например при борьбе с DoS-атаками.
  • DELUDE - создает видимость открытого TCP-порта (отвечает SYN/ACK и больше ничего).
  • CHAOS - случайно выбирает REJECT/TARPIT либо REJECT/DELUDE.

security

Предназначена для изменения маркировки (SELinux).
Все цепочки проходят после одноименных в таблице filter.

Цепочки: INPUT, FORWARD и OUTPUT.
Действия: SECMARK, CONNSECMARK.

linux/firewall/netfilter.txt · Последнее изменение: 2022/11/19 05:13 — admin