Брандмауэр iptables используется для управления фильтрацией пакетов и правилами NAT.
IPTables поставляется со всеми дистрибутивами Linux.
Понимание того, как установить и настроить iptables, поможет вам эффективно управлять брандмауэром Linux.
Инструмент iptables используется для управления правилами брандмауэра Linux.
На первый взгляд, iptables может показаться сложным (или даже запутанным).
Но, как только вы поймете основы работы iptables и его структуру, чтение и запись правил брандмауэра iptables станет простым делом.
Эта статья является частью продолжающейся серии руководств по iptables.
Это не первая статья в этой серии.
В этой статье объясняется, как структурируется iptables, и объясняются основы таблиц, цепочек и правил iptables.
На высоком уровне iptables может содержать несколько таблиц.
Таблицы могут содержать несколько цепочек.
Цепочки могут быть встроенными или определяемыми пользователем.
Цепочки могут содержать несколько правил.
Правила определены для пакетов.
Итак, структура выглядит так: iptables -> Tables -> Chains -> Rules.
Это определено на следующей диаграмме.
Просто для повторения, таблицы – это куча цепочек, а цепочки – куча правил брандмауэра.
I. IPTABLES Таблицы и Цепочки
IPTables имеет следующие 4 встроенные таблицы.
1. Таблица фильтров ( Filter )
Filter – это таблица по умолчанию iptables.
Таким образом, если вы не определите свою собственную таблицу, вы будете использовать таблицу Filter.
Таблица фильтров Iptables имеет следующие встроенные цепочки.
- Цепочка INPUT – входящий траффик в брандмауэр. Для пакетов, поступающих на локальный сервер.
- Цепочка OUTPUT – исходящий траффик из брандмауэра. Для пакетов, генерируемых локально и выходящих из локального сервера.
- Цепочка FORWARD – Пакеты для другого сетевого адаптера на локальном сервере. Для пакетов, маршрутизируемых через локальный сервер.
2. NAT таблица
Таблица NAT в Iptables имеет следующие встроенные цепочки.
- PREROUTING – изменяет пакеты перед маршрутизацией. Т.е. преобразование пакета происходит сразу после поступления пакета в систему (и до маршрутизации). Это помогает преобразовать IP-адрес назначения пакетов во что-то, что соответствует маршрутизации на локальном сервере. Она используется для DNAT (целевой NAT).
- Цепочка POSTROUTING – Изменяет пакеты после маршрутизации. Т.е. перевод пакетов происходит, когда пакеты покидают систему. Это помогает преобразовать исходный IP-адрес пакетов во что-то, что может соответствовать маршрутизации на сервер назначения. Она используется для SNAT (источник NAT).
- Цепочка OUTPUT – NAT для локально сгенерированных пакетов на брандмауэре.
3. Mangle таблица
Таблица Mangle Iptables предназначена для специализированного изменения пакетов.
Она изменяет биты QOS в заголовке TCP.
Mangle имеет следующие встроенные цепочки.
- PREROUTING
- OUTPUT
- FORWARD
- INPUT
- POSTROUTING
3. Raw таблица
Таблица Iptables Raw предназначена для исключений конфигурации.
Raw таблица имеет следующие встроенные цепочки.
- PREROUTING
- OUTPUT
На следующей диаграмме показаны три важные таблицы в iptables.
II. IPTABLES ПРАВИЛА
Ниже приведены ключевые моменты, которые следует помнить для правил iptables.
- Правила содержат критерии и целевые значения.
- Если критерий соответствует, iptables переходит к правилам, указанным в цели (или), выполняет специальные значения, указанные в цели.
- Если критерий не сопоставлен, iptables переходит к следующему правилу.
Целевые значения
Ниже приведены возможные специальные значения, которые вы можете указать в цели.
ACCETP Брандмауэр примет пакет.
DROP – брандмауэр сбросит пакет.
QUEUE – Брандмауэр передаст пакет в пространство пользователя.
RETURN – межсетевой экран прекратит выполнение следующего набора правил в текущей цепочке для этого пакета. Элемент управления будет возвращен в вызывающую цепочку.
Если вы выполняете iptables-list (или) service iptables status, вы увидите все доступные правила брандмауэра в вашей системе.
В следующем приемлемом примере показано, что в этой системе не определены правила брандмауэра.
Как вы видите, он отображает таблицу input по умолчанию, с цепочкой input по умолчанию, цепочкой прямой forward и цепочкой output.
# iptables -t filter --list Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination
Сделайте следующее, чтобы просмотреть таблицу mangle.
# iptables -t mangle --list
Для просмотра таблицы nat выполните следующие действия.
# iptables -t nat --list
Для просмотра таблицы raw выполните следующие действия.
# iptables -t raw --list
Примечание. Если вы не укажете опцию -t, будет отображена таблица filter по умолчанию. Итак, обе следующие команды одинаковы.
# iptables -t filter --list (или) # iptables --list
В следующем примере показано, что существуют некоторые правила, определенные в цепочке input, forward и output таблицы фильтров.
# iptables --list Chain INPUT (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain FORWARD (policy ACCEPT) num target prot opt source destination 1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num target prot opt source destination Chain RH-Firewall-1-INPUT (2 references) num target prot opt source destination 1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255 3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0 4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0 5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353 6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631 7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631 8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED 9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
В выводе данных команды iptables –list содержат следующие поля у правил:
- num – номер правила в определенной цепочке
- target – специальная переменная target, которую мы обсуждали выше
- prot – протоколы. TCP, UDP, ICMP и т. д.,
- opt – Специальные опции для этого конкретного правила.
- source – IP-адрес источника пакета
- destination – IP-адрес получателя пакета