Вывод и удаление правил брандмауэра Iptables: инструкция

    Команда Simple-Server
    03.06.2026
    12 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    Разбираться в настройках брандмауэра лучше на удаленной машине, например, арендованной у провайдера Simple-Server. В Simple-Server вы можете выбрать один из готовых образов Linux-дистрибутивов, в которые уже предустановлено основное ПО. Поэтому дополнительно не понадобится устанавливать Linux и iptables, однако будет нужно создать пользователя с привилегиями sudo или изменить права имеющегося. Желательно работать с актуальной версией операционной системы, в этом материале будем использовать Ubuntu. Схема настройки на CentOS и Debian будет аналогичной.

    В**** iptables доступен просмотр правил, установленных по умолчанию или предыдущим администратором. Выполним команду:

    Результат будет отображен примерно так:

    -P INPUT DROP -P FORWARD DROP -P OUTPUT ACCEPT -N ICMP -N TCP -N UDP -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP -A INPUT -p udp -m conntrack --ctstate NEW -j UDP -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP -A INPUT -p icmp -m conntrack --ctstate NEW -j ICMP -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable -A INPUT -p tcp -j REJECT --reject-with tcp-reset -A INPUT -j REJECT --reject-with icmp-proto-unreachable -A TCP -p tcp -m tcp --dport 22 -j ACCEPT

    Просмотрим перечень правил цепочки

    Функцию применяют, когда хотят убрать из вывода определенную цепочку – INPUT, OUTPUT, TCP и пр. Их указывают следом за опцией -S. Пример:

    Результат применения команды система выведет на экран:

    -N TCP -A TCP -p tcp -m tcp --dport 22 -j ACCEPT

    Есть похожий вариант индикации текущих правил.

    Выведем перечень в виде таблицы

    Такой способ удобен, если необходимо сопоставить разные правила. Построение таблицы заложено в утилиту, функция будет активирована при помощи опции -L. Введем команду iptables:

    В таком случае также есть возможность ограничить вывод указанной цепочкой:

    Вывод на экран примерно такой:

    Chain INPUT (policy DROP) target     prot opt source               destination ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED ACCEPT     all  --  anywhere             anywhere DROP       all  --  anywhere             anywhere             ctstate INVALID UDP        udp  --  anywhere             anywhere             ctstate NEW TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW ICMP       icmp --  anywhere             anywhere             ctstate NEW REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable

    В первой строке наблюдаем подтверждение, что ограничение работает (мы указали INPUT). Следом за ним отражена стандартная политика DROP. Далее заголовки столбцов и ниже непосредственно правила. Расшифруем их значение:

    • target – указывает, какие действия выполнять, если пакет отвечает настроенным правилам. Например, сервер их принимает, отклоняет, отправляет в другую цепь для сравнения;
    • prot – отражает используемый тип протокола (UDP, TCP или ALL).
    • opt – показывает опции IP-адреса, если они применяются при передаче данных.
    • source – позволяет посмотреть IP или подсеть источника трафика (anywhere означает, что система принимает данные отовсюду).
    • destination – подсеть или IP хоста, которому предназначен трафик (или, как и в предыдущем пункте, указано anywhere).

    Заострим внимание, что у правой колонки нет заголовка. В ней указаны опции правил вроде номера порта исходного сервера или хоста назначения, состояния подключения текущего пакета.

    Выведем счетчик пакетов и их общего размера

    Пользователю доступен вывод перечня пакетов и их общего объема в байтах, соответствующего указанному правилу. Такая информация нужна, если требуется анализ приблизительного трафика по каждому из разрешенных правил. Функция доступна с момента установки iptables благодаря опциям -L и -v:

    sudo iptables -L INPUT –v

    Вывод на экран будет выглядеть примерно так:

    Chain INPUT (policy DROP 0 packets, 0 bytes) pkts bytes target     prot opt in     out source               destination 284K   42M ACCEPT     all -- any    any     anywhere             anywhere             ctstate RELATED, ESTABLISHED 0     0 ACCEPT     all -- lo     any     anywhere             anywhere 0     0 DROP       all -- any    any     anywhere             anywhere             ctstate INVALID 396 63275 UDP        udp -- any    any     anywhere             anywhere             ctstate NEW 17067 1005K TCP        tcp -- any    any     anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW 2410 154K ICMP       icmp -- any    any     anywhere             anywhere             ctstate NEW 396 63275 REJECT     udp -- any    any     anywhere             anywhere             reject-with icmp-port-unreachable 2916 179K REJECT     all -- any    any     anywhere             anywhere             reject-with icmp-proto-unreachable 0     0 ACCEPT     tcp  --  any    any     anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED

    Если сравнить этот варианта вывода с предыдущим, легко заметить появление двух новых столбцов – pkts и bytes. Теперь перейдем к другим функциям, доступным для**** iptables в Ubuntu.

    Сбросим счетчик пакетов и их объема

    Очистка (обнуление) счетчика пакетов и объема предусмотрена опцией -Z. Она применяется при перезагрузке сервера автоматически. Но иногда пользователю нужно выяснить, поступает ли новый трафик. Пример команды:

    По умолчанию очистка проводится по всем видам цепочек. Если нужно провести операцию лишь с одной, ее указывают явно:

    Также есть возможность обнулить указанное в цепочке правило по его номеру. Пример команды:

    sudo iptables -Z OUTPUT 2

    Следующим шагом расскажем о двух вариантах удаления правил с помощью iptables.

    Применим для удаления спецификацию

    Первый, который применим на практике, это удаление по спецификации. Понадобится стартовать iptables с опцией –D, и после нее указать нужные данные. Перед ее применением желательно просмотреть действующие правила (рассматривали выше). Например, если захотели убрать задачу отклонения недействительного исходящего трафика, команда будет выглядеть так:

    sudo iptables -D OUTPUT -m conntrack --ctstate INVALID -j DROP

    Отметим, что опцию -A, применяемую при указании положения правила на время активации, здесь использовать не требуется.

    Применим для удаления номер

    Второй вариант чуть сложнее, т.к. требует сначала выяснить номер строки, соответствующей тому правилу, которое планируется удалить. Применим опцию --line-number, она выводит список с цифровыми значениями для всех строк:

    sudo iptables -L --line-numbers

    Результат будет выведен на экран примерно таким образом:

    Chain INPUT (policy DROP) num  target     prot opt source               destination 1    ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED 2    ACCEPT     all  --  anywhere             anywhere 3    DROP       all  --  anywhere             anywhere             ctstate INVALID 4    UDP        udp  --  anywhere             anywhere             ctstate NEW 5    TCP        tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,ACK/SYN ctstate NEW 6    ICMP       icmp --  anywhere             anywhere             ctstate NEW 7    REJECT     udp  --  anywhere             anywhere             reject-with icmp-port-unreachable 8    REJECT     tcp  --  anywhere             anywhere             reject-with tcp-reset 9    REJECT     all  --  anywhere             anywhere             reject-with icmp-proto-unreachable 10   ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:ssh ctstate NEW,ESTABLISHED

    Эта команда внесет в таблицу номера строк в колонку num. Теперь мы можем выяснить точное значение для удаляемого правила. И ввести команду -D с указанием нужного номера. Например, требуется удалить задачу, указанную в строке 3, отклоняющую любые недействительные пакеты:

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

    Сбросим одну и несколько цепочек правил

    Приложение позволяет сбрасывать действующие правила несколькими способами. При проверке этой функции важно случайно не заблокировать удаленный доступ к серверу с IPTables, который организован по протоколу SSH. Такое может произойти, если ввести команду с политикой «по умолчанию» drop или deny. Если использовать облачные сервисы от Simple-Server, то при закрытии доступа будет возможно восстановить его через веб-консоль, но лучше сразу привыкать правильно работать с утилитой.

    Сбросим одиночную цепочку

    Сброс указанной цепочки с удалением правил внутри нее осуществляется при помощи опции -F или ее аналога –flush, после которых нужно добавить требуемое имя. Например, мы хотим убрать все правила внутри цепи OUTPUT.

    По аналогии с предыдущим вариантом в настройке iptables используем опцию -F или эквивалент –flush, но без указания имени цепочки. Пример:

    Итогом ввода этой команды будет разрешение любого трафика независимо от ранее установленных ограничений (входящего, исходящего, проходящего). Фактически это равнозначно отключению брандмауэра на сервере. Если такую команду ввести на рабочей машине, его придется настраивать с нуля, чтобы ограничить доступ посторонних, в том числе злоумышленников. Поэтому перед ее выполнением рекомендуется создать бэкап текущих настроек в файл с помощью iptables-save:

    iptables-save > iptables_backup.txt

    После настройки будет можно восстановить из файла с помощью iptables-restore:

    iptables-restore < iptables_backup.txt

    Вернем прежние настройки: сначала зададим ACCEPT. Его используют по умолчанию в качестве политики для всех встроенных цепочек. Это необходимо, чтобы избежать блокировки протокола SSH, по которому идет взаимодействие с удаленным хостом.

    sudo iptables -P INPUT ACCEPT sudo iptables -P FORWARD ACCEPT sudo iptables -P OUTPUT ACCEPT

    После ввода сбросим таблицы nat и mangle, все цепочки – при помощи опции -F, а также удалим те, что не используются по умолчанию (для этого нужна опция -X).

    sudo iptables -t nat -F sudo iptables -t mangle -F sudo iptables -F sudo iptables –X

    После ввода перечисленных команд брандмауэр научится получать любой трафик из сети. При запросе списка действующих правил пользователь увидит «пустой экран». В нем останутся только цепочки, применяемые по умолчанию – это INPUT, FORWARD и OUTPUT.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны