Несанкционированный доступ и взлом серверов — серьёзные угрозы, поэтому межсетевой экран должен быть неотъемлемой частью вашей сетевой безопасности. Умение работать с правилами Iptables — один из ключевых навыков для снижения этих рисков на системах Linux. В этом руководстве вы познакомитесь с основными концепциями межсетевого экрана: как просматривать правила iptables и удалять их в Ubuntu, а также научитесь выполнять простые команды для решения этих задач. Прежде чем переходить к просмотру и удалению правил iptables, разберёмся, что они собой представляют и зачем используются.
Что такое Iptables?
iptables — утилита межсетевого экрана командной строки, которая разрешает или блокирует трафик через цепочки политик. Когда система получает входящее соединение, iptables ищет в списке подходящее правило — это надёжный инструмент для обеспечения сетевой безопасности. Если подходящее правило не найдено, применяется действие по умолчанию.
iptables почти всегда предустановлен в любом дистрибутиве Linux. Для обновления или установки используйте следующую команду:
sudo apt-get install iptables
Зачем использовать Iptables?
Как межсетевой экран командной строки для Linux, iptables позволяет системным администраторам управлять входящим и исходящим трафиком с помощью настраиваемых табличных правил. iptables использует набор таблиц с цепочками, содержащими встроенные или пользовательские правила.
Как упоминалось выше, iptables играет ключевую роль в обеспечении сетевой безопасности большинства систем Linux. Оставшаяся часть статьи посвящена описанию работы с правилами iptables: как их просматривать и удалять.
В частности, в статье рассматриваются основные задачи при работе с iptables: просмотр правил, сброс счётчиков пакетов и байтов, удаление правил, очистка цепочек, а также удаление всех цепочек и разрешение всего трафика.
Полное руководство по Iptables в Ubuntu
Прежде чем переходить к просмотру правил iptables, убедитесь, что на вашем сервере Linux установлена команда iptables и у вас есть права sudo. При работе с межсетевыми экранами следите за тем, чтобы не заблокировать себе доступ к серверу, случайно закрыв трафик SSH (порт 22 по умолчанию). Если это всё же произошло, для восстановления доступа может потребоваться подключение через консоль вне диапазона.
Читайте также: Как изменить порт SSH в Linux. Пошаговое руководство по настройке порта SSH
Просмотр правил по спецификации
Просмотреть активные правила iptables можно в табличном виде или как список спецификаций правил. Оба метода возвращают одинаковую информацию в разных форматах. Чтобы вывести все правила активного iptables в виде спецификаций, выполните команду iptables с флагом параметр -S:
sudo iptables -S
После выполнения этой команды вы увидите вывод следующего вида:

Вывод конкретной цепочки
Если вы хотите ограничить вывод iptables определённой цепочкой, например INPUT, OUTPUT или TCP, можно указать имя цепочки сразу после параметра -S. Например, следующая команда выводит правила цепочки TCP:
sudo iptables -S TCP

Как уже было упомянуто, есть ещё один способ просмотреть правила iptables: в виде таблицы. Разберём этот подход.
Просмотр правил в виде таблиц
Отображение правил iptables в табличном виде удобно для сравнения различных правил. Выполните следующую команду с флагом параметр -L чтобы вывести все активные правила в виде таблицы:
sudo iptables -L
Команда отобразит все текущие правила, сгруппированные по цепочкам. Чтобы ограничить вывод конкретной цепочкой, например INPUT, OUTPUT, TCP и т. д., укажите её имя сразу после параметра -L. Пример ограничения вывода цепочкой INPUT:
sudo iptables -L INPUT

Первая строка вывода содержит имя цепочки (в данном случае INPUT) и её политику по умолчанию (DROP). Следующая строка содержит заголовки столбцов таблицы и правила цепочки. Разберём каждый из них:
- Target: если пакет соответствует правилу, Target определяет, что с ним делать. Пакет можно принять, отбросить, записать в лог или передать в другую цепочку для проверки по дополнительным правилам.
- prot: протокол (например, TCP, udp, ICMP или all)
- opt: параметры IP (используются редко)
- source: адрес IP или подсеть источника трафика
- destination: адрес IP или подсеть назначения трафика
Столбец без заголовка содержит дополнительные параметры правила, то есть всё, что не вошло в предыдущие столбцы. Это может быть что угодно: порты источника и назначения, состояние соединения пакета и многое другое.
Читайте также: Установка OpenVPN на VPS – Настройка клиента OpenVPN 🔑
Как посмотреть счётчики пакетов и суммарный объём?
При просмотре правил iptables можно вывести количество пакетов и их суммарный объём в байтах для каждого конкретного правила. Это помогает понять, какие правила реально срабатывают. Для этого используйте флаг -L и параметры -v совместно это.
Вот пример использования цепочки INPUT с параметром -v:
sudo iptables -L INPUT -v

Обратите внимание: в списке появились два новых столбца — pkts и bytes. Мы рассмотрели различные способы вывода всех правил iptables, и теперь пора разобраться, как сбросить счётчики пакетов и суммарный объём.
Как сбросить счётчики пакетов и суммарный объём?
Чтобы обнулить счётчики пакетов и байт для своих правил, используйте параметр -Z. Счётчики также сбрасываются при перезагрузке — это удобно, если нужно проверить, получает ли сервер новый трафик, соответствующий существующим правилам.
Сбросить счётчики для всех цепочек и правил можно командой с параметром -Z без дополнительных аргументов:
sudo iptables -Z
Чтобы обнулить счётчики для всех правил в конкретной цепочке, укажите параметр -Z и имя цепочки. Например, следующая команда сбрасывает счётчики цепочки INPUT:
sudo iptables -Z INPUT
Чтобы сбросить счётчики для конкретного правила, укажите имя цепочки и номер правила. Например, следующая команда обнуляет счётчики для первого правила в цепочке INPUT:
sudo iptables -Z INPUT 1
Помимо команд вывода всех правил iptables и способов сброса счётчиков пакетов и байт, полезно знать, как удалять правила iptables.
Читайте также: Как установить PPTP VPN-сервер на VPS
Как удалить правила iptables?
Удалить правила iptables или очистить все правила в цепочке можно несколькими способами. Рассмотрим каждый из них.
Удаление правил по спецификации
Один из способов удалить правило iptables — указать его спецификацию. Для этого выполните команду iptables с параметром -D и спецификацией правила. При необходимости можно воспользоваться выводом команды iptables -S в качестве справки.
Например, чтобы удалить правило, отбрасывающее некорректные входящие пакеты (-A INPUT -m conntrack –ctstate INVALID -j DROP), выполните следующую команду:
sudo iptables -D INPUT -m conntrack --ctstate INVALID -j DROP
Обратите внимание: параметр -A указывает позицию правила при его создании и здесь не используется.
Удаление правил по цепочке и номеру
Другой способ удалить правило iptables — указать цепочку и номер строки. Чтобы узнать номер нужного правила, выведите правила в табличном формате, добавив параметр –line-numbers:
sudo iptables -L --line-numbers

После выполнения этой команды каждое правило iptables получит порядковый номер, отображаемый в столбце num.
Когда вы знаете, какое правило нужно удалить, запомните его цепочку и номер строки. Используйте команду iptables -D с указанием цепочки и номера правила. Например, если вы хотите удалить правило INPUT, которое отбрасывает некорректные пакеты, — это правило 3 цепочки INPUT. Выполните команду:
sudo iptables -D INPUT 3
Как очистить цепочки?
Существует способ удалить все правила Iptables в цепочке — это называется очисткой цепочки. Ниже мы рассмотрим различные способы это сделать. Прежде чем продолжить, убедитесь, что при очистке цепочки с политикой по умолчанию drop или deny вы не потеряете доступ к серверу через SSH. Если это произойдёт, восстановить доступ можно будет только через консоль.
Очистка одной цепочки
Чтобы очистить конкретную цепочку, то есть удалить все её правила, используйте -F или эквивалентный вариант –flush с именем нужной цепочки. Например, чтобы удалить все правила цепочки INPUT, выполните следующую команду:
sudo iptables -F INPUT
Очистка всех цепочек
Чтобы очистить все цепочки, используйте параметр -F или эквивалентный ему –flush без дополнительных аргументов:
sudo iptables -F
Как сбросить все правила, удалить все цепочки и разрешить весь трафик?
Далее мы покажем, как сбросить все правила, таблицы и цепочки файрвола и разрешить весь сетевой трафик. Обратите внимание: этот процесс полностью отключает файрвол. Следуйте этому разделу только в том случае, если хотите начать настройку файрвола с нуля.
Сначала установите политику по умолчанию 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.
Как настроить iptables в Ubuntu?
Как и в любом файрволе, правила iptables применяются в порядке их следования в цепочке, поэтому важно задавать правила в правильной последовательности. Новые правила, добавленные через append, попадают в конец списка. Чтобы вставить правило на конкретную позицию, используйте iptables -I <index> -command. Параметр <index> — это порядковый номер позиции, на которую нужно вставить правило. Чтобы узнать нужный номер, выполните следующую команду:
sudo iptables -L --line-numbers
Номер в начале каждой строки указывает позицию правила в цепочке. Чтобы добавить новое правило перед существующим, укажите номер этого существующего правила. Например, чтобы добавить правило в начало цепочки, используйте следующую команду с индексом 1:
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
Чем iptables отличается от firewalld?
И iptables, и firewalld — практичные инструменты управления файрволом на различных системах Linux, предназначенных для фильтрации пакетов (статической фильтрации). Фильтрация пакетов — это стратегия файрвола, которая позволяет управлять доступом к сети, контролируя входящие и исходящие пакеты: пропускать их или блокировать на основе заданных правил по IP-адресам источника и назначения, протоколам и портам. Такие правила обеспечивают высокую эффективность защиты, что делает фильтрацию пакетов надёжным средством против устройств, маршрутизируемых за пределами локальной сети (LAN).
Важно понимать, что firewalld изначально создавался как надстройка над iptables, упрощающая работу с ним. Разобравшись с базовыми понятиями, сравним эти два инструмента подробнее.
iptables vs firewalld: конфигурация системы
Firewalld и iptables по-разному хранят конфигурацию и применяют изменения. В iptables каждое изменение требует сброса всех существующих правил и загрузки новых, то есть фактически перезапуска системы. Firewalld работает иначе: правила не пересоздаются с нуля. Вместо этого применяются только внесённые изменения, которые вступают в силу немедленно, без перезагрузки.
iptables vs firewalld: пользовательский интерфейс
Firewalld предоставляет графический интерфейс (GUI), тогда как iptables работает через командную строку (CLI). Для некоторых пользователей управление правилами брандмауэра ядра Linux через iptables может показаться сложным, поэтому firewalld нередко оказывается удобнее. При этом стоит учитывать, что iptables быстрее реагирует на команды: синтаксис у него лаконичный. В итоге у каждого инструмента есть свои сценарии применения, так что выбирайте тот, с которым вам комфортнее работать.
Итоги: просмотр правил iptables
Iptables — гибкая утилита межсетевого экрана, созданная специально для Linux. Неважно, делаете ли вы первые шаги в Linux или уже работаете системным администратором: правила iptables пригодятся в любом случае. В этой статье мы разобрали основные команды утилиты, включая просмотр и удаление правил iptables, и кратко рассмотрели возможности Linux. Кроме того, вы можете воспользоваться нашими хостинг-решениями Linux VPS чтобы раскрыть весь потенциал этой операционной системы. В Cloudzy мы предлагаем различные планы Linux VPS на базе KVM, подходящие для самых разных задач: веб-хостинг, развёртывание веб-приложений, а также создание среды для разработки, тестирования и автоматизации кода.
Часто задаваемые вопросы
Как вывести все правила iptables Linux по спецификации?
Чтобы вывести список всех активных правил iptables по их спецификации или назначению, используйте команду iptables с флагом -S. Обратите внимание на использование sudo ключевого слова в данном случае:
sudo iptables -S
Как удалить правила iptables?
Чтобы удалить конкретную цепочку вместе со всеми её правилами, необходимо использовать параметр -F или --flush и указать имя цепочки. Допустим, нужно удалить все правила из цепочки OUTPUT. Для этого выполните команду:
sudo iptables -F OUTPUT
Как работает iptables в Ubuntu?
Брандмауэр iptables сравнивает сетевой трафик с набором правил. Каждое правило задаёт характеристики пакета для сопоставления и действие, которое выполняется при совпадении. Параметров для определения того, какие пакеты подпадают под конкретное правило, достаточно много.
Вступают ли правила iptables в силу немедленно? Почему?
Да, правила iptables вступают в силу немедленно. Поскольку ваш скрипт добавляет записи в цепочки INPUT и OUTPUT, новые правила помещаются в конец этих цепочек.