Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:kernel:firewall:netfilter [2021/07/01 14:30] admin |
— (текущий) | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Netfilter ====== | ||
- | |||
- | Наиболее полная статья: | ||
- | |||
- | **Netfilter** - межсетевой экран (брандмауэр), | ||
- | Разделение функциональности с помощью **таблиц**, | ||
- | Это одно из превосходств над своим предшественником - **ipchains** (в настоящее время устарел и не используется).\\ | ||
- | |||
- | ===== Архитектура ===== | ||
- | |||
- | {{ : | ||
- | |||
- | **Правило** - состоит из критерия, | ||
- | **Цепочка** - последовательность правил, | ||
- | **Таблица** - совокупность цепочек, | ||
- | |||
- | Существует 5 типов **стандартных цепочек: | ||
- | * **PREROUTING** - позволяет модифицировать пакеты до принятия решения о маршрутизации. | ||
- | * **INPUT** - пакеты, | ||
- | * **FORWARD** - транзитные пакеты (они проходят: | ||
- | * **OUTPUT** - пакеты, | ||
- | * **POSTROUTING** - все исходящие пакеты в т.ч. транзитные. | ||
- | |||
- | Цепочки организованы в **таблицы: | ||
- | |||
- | ===== Принцип работы ===== | ||
- | Все пакеты пропускаются через цепочки правил.\\ | ||
- | При прохождении к нему последовательно применяются правила этой цепочки, | ||
- | Действие может быть **терминальным** (заканчивающее обработку в данной цепочке (ACCEPT, REJECT)) или **нетерминальным** (MARK, TOS).\\ | ||
- | Действие по умолчанию обязательно **терминальное**. | ||
- | |||
- | ===== Таблицы ===== | ||
- | ==== raw ==== | ||
- | Выполнение действий с пакетами до их обработки в [[: | ||
- | |||
- | __Цепочки__: | ||
- | __Действия__: | ||
- | * **NOTRACK** - предотвратить обработку в [[: | ||
- | * **CT** - позволяет задать различные настройки для [[: | ||
- | * **RAWDNAT** - позволяет выполнить проброс адресов и портов " | ||
- | |||
- | ==== rawpost ==== | ||
- | Является следствием реализации **RAWDNAT** в таблице **raw** т.е. для обратной пересылки проброшенных адресов (портов) на уровне пакетов. | ||
- | |||
- | __Цепочки__: | ||
- | __Действия__: | ||
- | |||
- | ==== mangle ==== | ||
- | Классификация и маркировка пакетов и соединений, | ||
- | |||
- | __Цепочки__: | ||
- | __Действия__: | ||
- | * **TOS** - Type of Service, тип облуживания, | ||
- | * **DSCP** - относится к TOS. | ||
- | * **TTL** - время жизни пакета (**--ttl-**(**set|inc|dec**)).\\ **Пример: | ||
- | * **HL** - аналог TTL в IPv6. | ||
- | * **MARK** - маркировка пакета. | ||
- | * **CONNMARK** - маркировка соединения. | ||
- | * **CLASSIFY** - устанавливает CBQ-класс для обработки шейпером. | ||
- | * **TCPMSS** - устанавливает максимальный размер TCP-сегмента (MTU). | ||
- | * **TCPOPTSTRIP** - удаление заданных TCP-опций из заголовка | ||
- | * **TPROXY** - реализует механизм полностью прозрачного проксирования. Заголовки пакетов никак не модифицируются, | ||
- | |||
- | ==== nat ==== | ||
- | Stateful-преобразование сетевых адресов и портов. | ||
- | |||
- | __Цепочки__: | ||
- | __Действия__: | ||
- | * **MASQUERADE** - подменяет адрес источника исходящих пакетов (например внешним IP адресом шлюза). | ||
- | * **SNAT** - Source Network Address Translation, | ||
- | * **DNAT** - Destination Network Address Translation, | ||
- | * **REDIRECT** - подменяет номер порта в (TCP/ | ||
- | * **SAME** - аналогично DNAT (SNAT), только IP адрес для подмены остается постоянным для клиентов. | ||
- | * **NETMAP** - позволяет пробросить целую сеть. | ||
- | * **MIRROR** - меняет местами адреса источника и получателя и отправляет пакеты). Создано исключительно для демонстрационных целей. | ||
- | |||
- | ==== filter ==== | ||
- | Фильтрация трафика, | ||
- | |||
- | __Цепочки__: | ||
- | __Действия__: | ||
- | * **ACCEPT** - пропуск пакета. | ||
- | * **REJECT** - заблокировать и сообщить источнику об отказе (можно указать вариант сообщения). | ||
- | * **DROP** - заблокировать без сообщений. | ||
- | += Модуль **xtables-addons: | ||
- | * **STEAL** - аналогично DROP, но в случае с исходящим пакетом, | ||
- | * **TARPIT** - " | ||
- | * **DELUDE** - создает видимость открытого TCP-порта (отвечает SYN/ACK и больше ничего). | ||
- | * **CHAOS** - случайно выбирает REJECT/ | ||
- | |||
- | ==== security ==== | ||
- | Предназначена для изменения маркировки (SELinux).\\ | ||
- | Все цепочки проходят после одноименных в таблице **filter**. | ||
- | |||
- | __Цепочки__: | ||
- | __Действия__: | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||