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

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


linux:kernel:firewall:netfilter

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
linux:kernel:firewall:netfilter [2022/11/19 05:09]
admin удалено
— (текущий)
Строка 1: Строка 1:
-====== Netfilter ====== 
- 
-Наиболее полная статья: [[https://ru.wikibooks.org/wiki/Iptables]] 
- 
-**Netfilter** - межсетевой экран (брандмауэр), встроенный в ядро Linux с версии 2.4.\\ 
-Разделение функциональности с помощью **таблиц**, позволило обрабатывать пакеты не только исходя из информации в самом пакете, но и учитывать данные о соединении в целом (**stateful - фильтрация**), контекст передачи.\\ 
-Это одно из превосходств над своим предшественником - **ipchains** (в настоящее время устарел и не используется).\\ 
- 
-===== Архитектура ===== 
- 
-{{ :linux:kernel:firewall:firewall.png?direct&400|}} 
- 
-**Правило** - состоит из критерия, действия и счетчика (критерий и действие можно пропускать, останется только счетчик).\\  
-**Цепочка** - последовательность правил, есть **пользовательские** (нижний регистр, только для своей таблицы) и **базовые** (стандартные, верхний регистр).\\ 
-**Таблица** - совокупность цепочек, объединенных функциональным назначением (имена в нижнем регистре). 
- 
-Существует 5 типов **стандартных цепочек:** 
-  * **PREROUTING** - позволяет модифицировать пакеты до принятия решения о маршрутизации. 
-  * **INPUT** - пакеты, предназначенные самому хосту. 
-  * **FORWARD** - транзитные пакеты (они проходят: **PREROUTING**,  **FORWARD** и **POSTROUTING**) 
-  * **OUTPUT** - пакеты, исходящие от самого хоста. 
-  * **POSTROUTING** - все исходящие пакеты в т.ч. транзитные. 
- 
-Цепочки организованы в **таблицы:** 4 стандартных (**raw**, **mangle**, **nat** и **filter**) и бывают 2 дополнительных (**security**, **rawpost**), цепочки с одинаковым названием, но в разных таблицах - независимые объекты. 
- 
-===== Принцип работы ===== 
-Все пакеты пропускаются через цепочки правил.\\ 
-При прохождении к нему последовательно применяются правила этой цепочки, если он соответствует указанному **критерию**, применяется **действие** (в т.ч. переход к другой цепочке, например пользовательской).\\ 
-Действие может быть **терминальным** (заканчивающее обработку в данной цепочке (ACCEPT, REJECT)) или **нетерминальным** (MARK, TOS).\\ 
-Действие по умолчанию обязательно **терминальное**. 
- 
-===== Таблицы ===== 
-==== raw ==== 
-Выполнение действий с пакетами до их обработки в [[:linux:kernel:firewall:conntrack|conntrack]]. 
- 
-__Цепочки__: **PREROUTING**, **OUTPUT**.\\ 
-__Действия__: 
-  * **NOTRACK** - предотвратить обработку в [[:linux:kernel:firewall:conntrack|conntrack]]. 
-  * **CT** - позволяет задать различные настройки для [[:linux:kernel:firewall:conntrack|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, сделаем невидимым следующий на нами шлюз): <code bash># iptables -t mangle -I PREROUTING -j TTL --ttl-inc 1</code>  
-  * **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/kernel/firewall/netfilter.1668834561.txt.gz · Последнее изменение: 2022/11/19 05:09 — admin