Управление правилами iptables: просмотр, удаление и создание.
В этой статье мы рассмотрим базовые команды по управлению фаерволом сервера. А именно утилиту iptables, которая позволяет управлять входящим, исходящим и пересылаемым трафиком, основываясь на заданных правилах. Она напрямую взаимодействует с подсистемой ядра Netfilter, что обеспечивает высокую производительность.Все вводимые далее команды выполняются на VPS под пользователем root. Будьте внимательны, утилита iptables способна полностью ограничить доступ к серверу — в том числе и для вас.
Как посмотреть текущие правила iptables
Начнём с самого простого — просмотра установленных правил с помощью команды:iptables -nL --line-numbers
- -n - отключает преобразование IP в домены;
- -L - выводит список всех правил по умолчанию, но можно указать конкретную цепочку;
- --line-numbers - отображает номера строк.

Давайте его рассмотрим внимательно.
Мы видим структуру из трёх цепочек(Chain): INPUT, FORWARD, OUTPUT. Это основные цепочки, которые мы будем рассматривать в статье, однако есть и другие. Более того, вы можете создавать новые цепочки самостоятельно, но данная тема выходит за рамки нашей статьи.
Рядом с именем цепочки мы видим её политику(policy). Её также можно изменить.
В блоке каждой цепочки мы видим правила, которыми мы будем управлять. В нашем примере цепочки FORWARD и OUTPUT пусты, а в INPUT содержатся два правила.
Давайте разберём столбцы этой таблицы:
Столбец | Описание |
---|---|
num | Номер строки (правила) в цепочке. Удобен для удаления или вставки. |
target | Действие - что делать с пакетом, если он соответствует этому правилу. Примеры: ACCEPT, DROP, REJECT, LOG, имя кастомной цепочки. |
prot | Протокол в цифровом обозначении: tcp(6), udp(17), icmp(1), или all(0, любой). |
opt | Опции связанные с фильтрацией. Обычно здесь --, если ничего особенного нет. Иногда появляются !, + или другие опции, если используются дополнительные модули. |
source | Источник — IP-адрес или диапазон источника. В примере 1.2.3.4 или 103.21.244.0/22. |
destination | Назначение — IP-адрес назначения. 0.0.0.0/0 означает "все адреса". |
Комментарий | Выводит комментарии к правилам, если они добавлены с помощью модуля comment (в примере: /* Blocking bad user */). |
Как добавить правило в iptables
Для того чтобы запретить доступ к серверу из определённого IP-адреса или, наоборот, запретить подключаться из сервера к определённому адресу, мы добавляем правило в соответствующую цепочку iptables. Для примера запретим подключение к нашему серверу для пользователя с IP адресом 1.2.3.4. Команда будет выглядеть так:iptables -I INPUT -s 1.2.3.4 -j DROP
- -I - добавляет правило в начало цепочки [имя_цепочки];
- -s - IP-адрес или диапазон источника;
- -j - действие, которое будет совершено с пакетом (ACCEPT, DROP, REJECT и др.).

Мы видим, что наше правило было успешно добавлено в начало цепочки INPUT. Также вы могли заметить, что мы не указали протокол явно в нашем правиле и в столбце prot отображается цифра 0, что означает, что наша блокировка будет действовать для любого протокола. Важно помнить, что iptables "выполняет" правила сверху вниз.
Как удалить правило из цепочки iptables
Для удаления правила нам необходимо узнать его номер. Так как ранее мы сделали вывод всех правил вместе с отображением номеров строк, то мы уже знаем номер правила и можем воспользоваться командой:iptables -D [имя_цепочки] [номер_правила]
Для примера удалим правило под номером 2 из цепочки INPUT:iptables -D INPUT 2
Результат:
Это самый простой способ удалить правило из iptables, однако есть ещё один.
Мы можем удалить правило, указав вместо номера само правило. Для нашего примера, команда будет такой:
iptables -D INPUT -s 103.21.244.0/22 -p tcp -j ACCEPT
В итоге мы получаем тот же результат:
Как очистить всю цепочку iptables
Для того чтобы удалить сразу все правила из цепочки, можно воспользоваться командой:iptables -F [имя_цепочки]
Попробуем:iptables -F INPUT
Получим результат:
Будьте внимательны, ведь не указав цепочку после ключа -F, вы удалите все правила из всех цепочек iptables:

Очистка всех правил в цепочке может сыграть с вами злую шутку, если вы не учли политику по умолчанию для выбранной цепочки.
Как изменить политику по умолчанию для цепочки в iptables
Политика по умолчанию(policy) - это действие, которое будет совершено со всеми пакетами, подходящими под цепочку, но не подпадающими ни под одно правило в ней. Чтобы изменить политику по умолчанию для цепочки iptables воспользуемся командой:iptables -P [имя_цепочки] [политика]
В примере изменим политику на DROP у цепочки FORWARD командой:iptables -P FORWARD DROP
Получим:
Возможные политики по умолчанию:
Политика | Что делает |
---|---|
ACCEPT | Пакет разрешается (пропускается) |
DROP | Пакет сбрасывается (молча) |
REJECT | Пакет отклоняется (с уведомлением) |
Сохранение и восстановление правил iptables
После того как мы внесли все необходимые изменения в настройки нашего фаервола, давайте сохраним их в файл с помощью команды:iptables-save > ~/iptables_backup.txt
Данная команда сохранит все правила iptables в файл iptables_backup.txt в домашней директории пользователя:
Для того чтобы импортировать правила из файла iptables_backup.txt в iptables воспользуемся простой командой:
iptables-restore < ~/iptables_backup.txt
В результате получим:
Мы видим что изначально пустой iptables был заполнен правилами из нашего файла iptables_backup.txt. Будьте внимательны, ведь данная команда перезапишет уже имеющиеся правила iptables, а также изменит политики по умолчанию.
Мы рассмотрели базовые ключи в работе с iptables. Будьте осторожны и крайне внимательны при работе с фаерволом на сервере. Предварительно делайте копию текущих настроек с помощью iptables-save и проверьте политику по умолчанию у цепочки, с которой работаете. В случае неудачи, помните - нет нерешаемых проблем. Вы всегда можете обратиться в техническую поддержку.
25 Apr 2025, 00:10:01