Обновить настройки cookies

Управление правилами iptables: просмотр, удаление и создание.

В этой статье мы рассмотрим базовые команды по управлению фаерволом сервера. А именно утилиту iptables, которая позволяет управлять входящим, исходящим и пересылаемым трафиком, основываясь на заданных правилах. Она напрямую взаимодействует с подсистемой ядра Netfilter, что обеспечивает высокую производительность.
Все вводимые далее команды выполняются на VPS под пользователем root. Будьте внимательны, утилита iptables способна полностью ограничить доступ к серверу — в том числе и для вас.

Как посмотреть текущие правила iptables

Начнём с самого простого — просмотра установленных правил с помощью команды:
iptables -nL --line-numbers
  • -n - отключает преобразование IP в домены;
  • -L - выводит список всех правил по умолчанию, но можно указать конкретную цепочку;
  • --line-numbers - отображает номера строк.
В примере мы получим следующий вывод:
20250424_OJU5Kk8z

Давайте его рассмотрим внимательно.
Мы видим структуру из трёх цепочек(Chain): INPUT, FORWARD, OUTPUT. Это основные цепочки, которые мы будем рассматривать в статье, однако есть и другие. Более того, вы можете создавать новые цепочки самостоятельно, но данная тема выходит за рамки нашей статьи.
Рядом с именем цепочки мы видим её политику(policy). Её также можно изменить.
В блоке каждой цепочки мы видим правила, которыми мы будем управлять. В нашем примере цепочки FORWARD и OUTPUT пусты, а в INPUT содержатся два правила.

Давайте разберём столбцы этой таблицы:
СтолбецОписание
numНомер строки (правила) в цепочке. Удобен для удаления или вставки.
targetДействие - что делать с пакетом, если он соответствует этому правилу. Примеры: ACCEPTDROPREJECTLOG, имя кастомной цепочки.
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 - действие, которое будет совершено с пакетом (ACCEPTDROPREJECT и др.).
Посмотрим что у нас получилось:
20250424_TdT6anqc
Мы видим, что наше правило было успешно добавлено в начало цепочки INPUT. Также вы могли заметить, что мы не указали протокол явно в нашем правиле и в столбце prot отображается цифра 0, что означает, что наша блокировка будет действовать для любого протокола. Важно помнить, что iptables "выполняет" правила сверху вниз.

Как удалить правило из цепочки iptables

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

Как очистить всю цепочку iptables

Для того чтобы удалить сразу все правила из цепочки, можно воспользоваться командой:
iptables -F [имя_цепочки]Попробуем:
iptables -F INPUTПолучим результат:
20250425_9AjE6XIb

Будьте внимательны, ведь не указав цепочку после ключа -F, вы удалите все правила из всех цепочек iptables:
20250425_tgRhWywE
Очистка всех правил в цепочке может сыграть с вами злую шутку, если вы не учли политику по умолчанию для выбранной цепочки.

Как изменить политику по умолчанию для цепочки в iptables

Политика по умолчанию(policy) - это действие, которое будет совершено со всеми пакетами, подходящими под цепочку, но не подпадающими ни под одно правило в ней. Чтобы изменить политику по умолчанию для цепочки iptables воспользуемся командой:
iptables -P [имя_цепочки] [политика]В примере изменим политику на DROP у цепочки FORWARD командой:
iptables -P FORWARD DROPПолучим:
20250425_gkJ03gwC

Возможные политики по умолчанию:

ПолитикаЧто делает
ACCEPTПакет разрешается (пропускается)
DROPПакет сбрасывается (молча)
REJECTПакет отклоняется (с уведомлением)

Сохранение и восстановление правил iptables

После того как мы внесли все необходимые изменения в настройки нашего фаервола, давайте сохраним их в файл с помощью команды:
iptables-save > ~/iptables_backup.txtДанная команда сохранит все правила iptables в файл iptables_backup.txt в домашней директории пользователя:
20250425_TPX4j4ZY

Для того чтобы импортировать правила из файла iptables_backup.txt в iptables воспользуемся простой командой:
iptables-restore < ~/iptables_backup.txtВ результате получим:
20250425_JygFu2RE
Мы видим что изначально пустой iptables был заполнен правилами из нашего файла iptables_backup.txt. Будьте внимательны, ведь данная команда перезапишет уже имеющиеся правила iptables, а также изменит политики по умолчанию.

Мы рассмотрели базовые ключи в работе с iptables. Будьте осторожны и крайне внимательны при работе с фаерволом на сервере. Предварительно делайте копию текущих настроек с помощью iptables-save и проверьте политику по умолчанию у цепочки, с которой работаете. В случае неудачи, помните - нет нерешаемых проблем. Вы всегда можете обратиться в техническую поддержку.
25 Apr 2025, 00:10:01

Премиум выделенные серверы

Смотреть конфигурации