IPtables
Документация по iptables
1. Введение
Что такое iptables
iptables
iptables
— это утилита командной строки для управления сетевыми пакетами в Linux. Она взаимодействует с подсистемой ядра netfilter
и позволяет контролировать входящий, исходящий и проходящий через систему трафик.
iptables
работает по принципу набора правил, организованных в таблицы и цепочки. Каждое правило определяет, что делать с пакетом на основе его параметров (IP-адрес, порт, протокол, состояние соединения и т. д.).
Основные функции и применение
🔹 Фильтрация трафика (брандмауэр)
Блокировка нежелательных подключений.
Разрешение доступа только определённым сервисам.
Ограничение соединений по частоте (анти-DDoS).
🔹 NAT (трансляция сетевых адресов)
Подмена IP-адресов для скрытия локальной сети.
Проброс портов (Port Forwarding) для доступа к внутренним сервисам.
Балансировка нагрузки через
SNAT
/DNAT
.
🔹 Логирование и мониторинг
Запись информации о попытках подключения.
Анализ сетевой активности для обнаружения атак.
🔹 Маршрутизация и манипуляция с пакетами
Изменение приоритета трафика.
Перенаправление запросов на другие сервера.
Прозрачный прокси через
REDIRECT
.
iptables
активно используется в серверах, маршрутизаторах, VPN-шлюзах и встраиваемых устройствах для управления сетевой безопасностью и маршрутизацией.
2. Общий синтаксис команды
Формат команды
Где:
-t <таблица>
— выбор таблицы (filter
,nat
,mangle
,raw
,security
).<действие>
— операция над цепочкой или правилом (-A
,-D
,-I
,-F
,-P
,-N
,-X
).<цепочка>
— выбор цепочки (INPUT
,OUTPUT
,FORWARD
,PREROUTING
,POSTROUTING
).[опции]
— дополнительные условия (-p
,-s
,--dport
и др.).-j <цель>
— действие с пакетом (ACCEPT
,DROP
,REJECT
,LOG
,DNAT
,SNAT
,MASQUERADE
).
Описание ключевых параметров
-t <таблица>
Указывает таблицу, в которой выполняется действие. По умолчанию используется filter
.
Пример:
-A (Append)
Добавляет правило в конец указанной цепочки. Пример:
-D (Delete)
Удаляет правило. Можно указать либо параметры правила, либо его номер (iptables -L --line-numbers
).
Пример:
-I (Insert)
Вставляет правило в указанную позицию (по умолчанию в начало). Пример:
-F (Flush)
Очищает все правила в цепочке (или во всех цепочках, если без аргумента). Пример:
-P (Policy)
Устанавливает политику по умолчанию для цепочки. Пример:
-N (New Chain)
Создаёт новую пользовательскую цепочку. Пример:
-X (Delete Chain)
Удаляет пустую пользовательскую цепочку. Пример:
3. Таблицы и цепочки
Описание таблиц
В iptables
есть несколько таблиц, каждая из которых отвечает за определённые типы обработки пакетов.
1. filter
— Фильтрация трафика (по умолчанию)
filter
— Фильтрация трафика (по умолчанию)Используется для разрешения или блокировки пакетов. Это основная таблица брандмауэра. Цепочки:
INPUT
— обработка пакетов, адресованных локальному хосту.OUTPUT
— обработка пакетов, исходящих с локального хоста.FORWARD
— обработка пакетов, проходящих через систему (маршрутизация).
Пример:
2. nat
— Трансляция сетевых адресов (NAT)
nat
— Трансляция сетевых адресов (NAT)Используется для изменения IP-адресов и портов в пакетах. Цепочки:
PREROUTING
— изменение адреса пакета перед маршрутизацией.POSTROUTING
— изменение адреса после маршрутизации.OUTPUT
— изменение исходящих пакетов (редко используется).
Пример:
3. mangle
— Изменение пакетов
mangle
— Изменение пакетовИспользуется для модификации заголовков пакетов (QoS, TTL, маркировка). Цепочки:
PREROUTING
— изменение пакета до маршрутизации.POSTROUTING
— изменение перед отправкой.INPUT
— изменение входящих пакетов.OUTPUT
— изменение исходящих пакетов.FORWARD
— изменение транзитных пакетов.
Пример:
4. raw
— Обход механизмов отслеживания соединений
raw
— Обход механизмов отслеживания соединенийИспользуется для исключения пакетов из отслеживания соединений (conntrack
).
Цепочки:
PREROUTING
— изменение входящих пакетов до обработки.OUTPUT
— изменение исходящих пакетов до обработки.
Пример:
5. security
— Политики безопасности SELinux
security
— Политики безопасности SELinuxИспользуется для установки меток SELinux на пакеты. Цепочки:
INPUT
— обработка входящих пакетов.OUTPUT
— обработка исходящих пакетов.FORWARD
— обработка пересылаемых пакетов.
Пример:
4. Основные операции
Добавление, удаление и изменение правил
Добавление правила (-A
, -I
)
-A
, -I
)-A
(--append
) — добавляет правило в конец цепочки.-I
(--insert
) — вставляет правило в указанную позицию (по умолчанию в начало).
Примеры:
Удаление правила (-D
)
-D
)Можно указать параметры правила или его номер (
iptables -L --line-numbers
).
Примеры:
Замена правила (-R
)
-R
)-R
(--replace
) заменяет правило в указанной позиции.
Пример:
Очистка цепочек
Удаление всех правил (-F
)
-F
)-F
(--flush
) очищает указанную цепочку или все цепочки сразу.
Примеры:
Удаление всех непривязанных цепочек (-X
)
-X
)-X
удаляет пустые пользовательские цепочки.
Пример:
Установка политики по умолчанию (-P
)
-P
)-P
(--policy
) задаёт правило по умолчанию для цепочки.
Примеры:
Создание и удаление пользовательских цепочек
Создание цепочки (-N
)
-N
)-N
(--new-chain
) создаёт пользовательскую цепочку.
Пример:
Применение пользовательской цепочки
Можно перенаправлять пакеты в неё через
-j
.
Пример:
Удаление пользовательской цепочки (-X
)
-X
)Цепочка должна быть пустой (без правил).
Пример:
5. Фильтрация пакетов
Фильтрация по протоколу
Параметр:
-p <протокол>
Описание: Указывает, какой протокол (например,
tcp
,udp
,icmp
,all
) используется для фильтрации пакетов.Пример:
Фильтрация по IP-адресу
Параметры:
-s <ip-адрес>
— фильтрация по источнику-d <ip-адрес>
— фильтрация по адресу назначения
Описание: Ограничивает действие правила только для пакетов с указанным IP-адресом источника или назначения.
Пример:
Фильтрация по порту
Параметры:
--sport <порт>
— порт источника--dport <порт>
— порт назначения
Описание: Применяется для фильтрации TCP/UDP-пакетов по номерам портов.
Пример:
Фильтрация по состоянию соединения
Параметр:
-m state --state <состояние>
Описание: Используется для фильтрации пакетов по состоянию соединения. Возможные состояния:
NEW
— новое соединениеESTABLISHED
— уже установленные соединенияRELATED
— связанные с уже установленными соединениямиINVALID
— недопустимые пакеты
Пример:
6. Цели (-j target
)
-j target
)Цель (target
) определяет, что делать с пакетом, если он соответствует правилу.
Основные цели
ACCEPT — Разрешить пакет
Пакет пропускается через брандмауэр. Пример:
DROP — Отбросить пакет
Пакет просто удаляется без уведомления отправителя. Пример:
REJECT — Отклонить пакет с уведомлением
Отправителю приходит сообщение о невозможности доставки. Пример:
NAT и манипуляция с адресами
MASQUERADE — Замена исходного IP (для динамических IP)
Применяется в POSTROUTING
для скрытия локальных адресов при доступе в интернет.
Пример:
SNAT (Source NAT) — Подмена исходного IP (для статических IP)
Пример:
DNAT (Destination NAT) — Перенаправление на другой IP
Пример (проброс порта 80 на внутренний сервер):
REDIRECT — Перенаправление на локальную машину
Часто используется для прозрачного проксирования. Пример (перенаправление HTTP на локальный прокси-сервер):
Логирование и маркировка
LOG — Запись информации о пакете в логи
Пример:
MARK — Установка метки пакета
Используется для QoS и маршрутизации (ip rule
).
Пример:
Другие цели
QUEUE — Передача пакета в пространство пользователя (например, для обработки
nfqueue
).RETURN — Завершение обработки и переход к следующему правилу в родительской цепочке.
TOS — Изменение поля TOS (тип сервиса) в заголовке IP.
7. Примеры конфигураций
Простой брандмауэр
Запрещаем весь входящий трафик, разрешаем только нужные соединения.
NAT и проброс портов
Перенаправляем внешний порт 80 на внутренний сервер 192.168.1.100:8080
.
Для замены IP-адреса источника (SNAT
вместо MASQUERADE
, если внешний IP статический):
Прозрачный прокси
Перенаправляем весь HTTP-трафик (порт 80) на локальный прокси-сервер (порт 3128).
Ограничение скорости соединений
Запрещаем больше 10 новых соединений с одного IP за 60 секунд.
Логирование попыток подключения
Логируем все попытки подключения на 22-й порт (SSH).
Если нужно блокировать после логирования:
8. Управление правилами
Просмотр текущих правил
1. Просмотр всех правил в цепочках
Для отображения всех правил в таблице filter
по умолчанию:
Вывод будет отображать все цепочки и их правила. Для отображения более детальной информации (например, с номерами строк):
2. Просмотр правил с номерами строк
Для удобства удаления или изменения правил можно использовать номера строк:
3. Просмотр правил в конкретной таблице
Для отображения правил в таблице nat
:
4. Вывод подробной информации о правилах
Для более детализированного вывода можно добавить флаг -v
(verbose):
5. Просмотр статистики
Для получения статистики по каждому правилу (с количеством совпадений и байт):
Сохранение и загрузка конфигурации
1. Сохранение текущей конфигурации
Для сохранения текущих правил в файл (на примере Ubuntu/Debian):
Для CentOS/RHEL можно использовать:
2. Загрузка сохранённой конфигурации
Для загрузки сохранённых правил из файла:
Для автоматической загрузки конфигурации при старте системы на Ubuntu/Debian используйте пакет iptables-persistent
. Установите его:
На CentOS/RHEL конфигурация будет загружаться автоматически, если файл правил сохранён с помощью service iptables save
.
3. Автоматическое сохранение и восстановление с помощью systemd
Если у вас настроен systemd
, можно использовать следующий метод для автоматического сохранения:
и для восстановления:
9. Дополнительные утилиты и альтернативы
ip6tables
ip6tables
— это утилита для настройки брандмауэра в системах, использующих IPv6. Синтаксис команд аналогичен iptables
, но предназначен для работы с IPv6-адресами и протоколами.
Основные команды для ip6tables
:
ip6tables
:Добавление правила для IPv6:
Просмотр текущих правил:
Сохранение правил для
ip6tables
: Для сохранения правил используйте:Загрузка правил:
nftables
nftables
— это современная замена для iptables
, ip6tables
, arptables
и ebtables
. Он предоставляет единую и более гибкую платформу для настройки фильтрации пакетов, NAT и других механизмов обработки трафика. nftables
используется в качестве стандартной утилиты в новых версиях Linux (начиная с ядра 3.13).
Основные команды для nftables
:
nftables
:Просмотр правил:
Добавление простого правила для фильтрации TCP-пакетов:
Сохранение текущих правил:
Загрузка правил:
Преимущества nftables
:
Унифицированный синтаксис для IPv4, IPv6 и ARP.
Поддержка более гибких фильтров и обработки трафика.
Меньше настроек и конфигураций по сравнению с
iptables
.Лучше масштабируемость и производительность.
GUI-инструменты для управления брандмауэром
1. UFW (Uncomplicated Firewall)
UFW
— это удобный инструмент для управления брандмауэром на базе iptables
в Linux, предназначенный для упрощения настройки брандмауэра, особенно для начинающих пользователей.
Основные команды:
Включение/выключение:
Разрешение порта:
Блокировка порта:
Просмотр текущих правил:
2. FirewallD
FirewallD
— это динамическая система управления брандмауэром, которая использует nftables
или iptables
в качестве движка. Она предоставляет интерфейс командной строки и поддержку различных уровней безопасности.
Основные команды:
Включение/выключение:
Разрешение порта:
Просмотр активных правил:
Перезагрузка для применения изменений:
3. GUFW (Graphical User Interface for UFW)
GUFW
— это графический интерфейс для UFW
, позволяющий пользователям управлять настройками брандмауэра через визуальный интерфейс. Он прост в использовании и позволяет быстро настроить базовые правила фильтрации пакетов.
10. Заключение
Итоговое резюме
iptables
— мощная и гибкая утилита для управления брандмауэром в Linux, которая предоставляет широкие возможности для фильтрации пакетов, настройки NAT, защиты от нежелательного трафика и повышения безопасности системы. Мы рассмотрели основные команды, таблицы и цепочки, фильтрацию пакетов по различным параметрам, цели (actions), а также способы управления правилами и их сохранения.
Для более современных систем, рекомендуется использовать nftables
, который объединяет функции iptables
, ip6tables
и других утилит в одном инструменте, обеспечивая более гибкое управление трафиком.
Если нужно простое решение для управления брандмауэром, можно использовать такие утилиты, как UFW
и FirewallD
, которые предлагают интуитивно понятный интерфейс для настройки правил.
Полезные ссылки
Официальная документация
iptables
:Документация по
nftables
:Руководство по
UFW
:Документация по
FirewallD
:Руководство по настройке брандмауэра на Linux:
Last updated
Was this helpful?