yandex
Калькулятор ценТарифыАкцииДокументацияО насКарьера в Cloud.ruНовостиЮридические документыКонтактыРешенияРеферальная программаКейсыПартнерство с Cloud.ruБезопасностьEvolutionAdvancedEvolution StackОблако VMwareML SpaceВ чем отличия платформ?БлогОбучение и сертификацияМероприятияИсследования Cloud.ruЛичный кабинетВойтиЗарегистрироватьсяEvolution ComputeEvolution Managed KubernetesEvolution Object StorageEvolution Managed PostgreSQL®Облако для мобильных и веб‑приложенийАналитика данных в облакеEvolution Bare MetalEvolution SSH KeysEvolution ImageСайт в облакеEvolution DNSEvolution VPCEvolution Load BalancerEvolution Magic RouterEvolution DiskХранение данных в облакеEvolution Container AppsEvolution Artifact RegistryEvolution Managed ArenadataDBEvolution Managed TrinoEvolution Managed SparkАналитика данных в облакеEvolution ML InferenceEvolution Distributed TrainEvolution ML FinetuningEvolution NotebooksCurator Anti-DDoSCurator Anti‑DDoS+WAFUserGate: виртуальный NGFWStormWall: Anti-DDoSEvolution TagsEvolution Task HistoryCloud MonitoringCloud LoggingАренда GPUAdvanced Object Storage ServiceAdvanced Elastic Cloud ServerAdvanced Relational Database Service for PostgreSQLРазработка и тестирование в облакеAdvanced Image Management ServiceAdvanced Auto ScalingDirect ConnectCDNCross-platform connectionAdvanced Enterprise RouterAdvanced Cloud Backup and RecoveryAdvanced Data Warehouse ServiceAdvanced Elastic Volume ServiceAdvanced Cloud Container EngineAdvanced FunctionGraphAdvanced Container Guard ServiceAdvanced Software Repository for ContainerAdvanced Document Database Service with MongoDBAdvanced Relational Database Service for MySQLAdvanced Relational Database Service for SQL ServerCloud AdvisorAdvanced Server Migration ServiceAdvanced Data Replication ServiceAdvanced API GatewayAdvanced CodeArtsAdvanced Distributed Message Service for KafkaAdvanced Distributed Message Service for RabbitMQAdvanced DataArts InsightAdvanced CloudTableAdvanced MapReduce ServiceAdvanced Cloud Trace ServiceAdvanced Application Performance ManagementAdvanced Identity and Access ManagementAdvanced Enterprise Project Management ServiceVMware: виртуальный ЦОД с GPUVMware: виртуальный ЦОДУдаленные рабочие столы (VDI)VMware: сервер Bare MetalИнфраструктура для 1С в облакеУдаленные рабочие столыМиграция IT‑инфраструктуры в облако3D-моделирование и рендерингVMware: резервное копирование виртуальных машинVMware: резервный ЦОДVMware: резервное копирование в облакоVMware: миграция виртуальных машин
Поиск
Связаться с нами

Настройка iptables в Ubuntu Linux: правила, команды, примеры

Одно из самых распространенных и эффективных решений для защиты инфраструктуры Linux — утилита iptables. Она позволяет тонко настроить встроенный брандмауэр и играет важную роль в управлении сетевым трафиком. В этой статье подробно вникнем в суть работы iptables и научимся применять основные команды.

Инструкции
Иллюстрация для статьи на тему «Настройка iptables в Ubuntu Linux: правила, команды, примеры»
Продукты из этой статьи:
Иконка-Curator Anti-DDoS
Curator Anti-DDoS

Что такое iptables

Iptables — утилита командной строки, которая позволяет настраивать брандмауэр Netfilter, встроенный в ядро Linux. Благодаря этому инструменту каждый входящий и исходящий пакет данных проверяется согласно преднастроенным правилам. По результатам проверки брандмауэр решает, пропускать трафик или блокировать.  

Дарим до 20 000 бонусов
Дарим до 20 000 бонусов
4 000 бонусов — физическим лицам, 20 000 бонусов — юридическим

Что дает использование iptables:

  • глубокий уровень контроля над трафиком;

  • высокую производительность за счет работы в ядре;

  • гибкость при создании правил фильтрации под конкретные задачи;

  • возможность блокировки, перенаправления и фильтрации IP-адресов, портов и протоколов;

  • поддержку Stateful-фильтрации с учетом состояния соединений.

Iptables позволяет выполнять не только банальную фильтрацию, но и более сложные сетевые задачи. Например, «раздавать» интернет-соединение компьютерам в локальной сети (masquerading) или «пробрасывать» порты. Проще говоря, утилита помогает обеспечить полный контроль над трафиком. 

iptables-процессыПроцессы iptables

Установка и подготовка к работе с iptables

Перед началом работы убедитесь, что iptables уже установлен в системе. Если нет — установите актуальную версию. 

Проверка установки iptables

Для проверки используют команду iptables --version, которая выводит текущую версию утилиты. Дополнительно можно выполнить which iptables, чтобы проверить путь к бинарному файлу. Если команда возвращает строку с расположением исполняемого файла, значит утилита есть и готова к работе. В большинстве современных дистрибутивов Linux iptables предустановлена по умолчанию. 

Установка iptables на Ubuntu

Обновите список пакетов:

Установите пакет iptables:

Правила iptables теряются после перезагрузки системы. Чтобы сохранить их и автоматически восстанавливать при запуске, установите дополнительный пакет:

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

После установки можете повторить команду sudo iptables --version для подтверждения.

Основные концепции iptables

Начнем с таблиц. Существует пять видов:

  • filter — применяется для классической фильтрации пакетов. Это таблица, которая отвечает за контроль доступа. Именно здесь задаются правила для разрешения или блокировки трафика.

  • nat — отвечает за изменение сетевых адресов и портов, используется для маршрутизации, перенаправления трафика и проброса портов.

  • mangle — позволяет изменять параметры пакетов, например, метки, TTL и другие атрибуты. Применяется, когда нужны тонкие настройки обработки трафика.

  • raw — обрабатывает трафик до применения других таблиц. Используется для исключения пакетов из соединений, отслеживаемых системой Netfilter.

  • security — утверждает правила управления доступом (SELinux/MAC).

Краткое описание всех существующих таблиц: 

Таблица
Назначение
Где обычно применяется
filter
Основная фильтрация пакетов
Контроль доступа, брандмауэр
nat
Изменение сетевых адресов и портов
NAT, проброс портов, маршрутизация
mangle
Изменение параметров пакетов
Маркировка пакетов, QoS, изменение TTL
raw
Исключение пакетов из отслеживания
Ранняя обработка трафика, тонкая оптимизация
security
Установка меток безопасности (например, SELinux)
Принудительный контроль доступа (Mandatory Access Control - MAC) в системах типа SELinux

Таблица filter: 

Цепочка
Назначение
INPUT
Контроль входящих соединений
OUTPUT
Контроль исходящих соединений
FORWARD
Обработка маршрутизируемых пакетов

Таблица nat:

Цепочка
Назначение
PREROUTING
Изменение адреса до маршрутизации
POSTROUTING
Изменение адреса после маршрутизации
OUTPUT
Применяется к исходящему трафику от локального процесса (используется реже, чем PREROUTING и POSTROUTING)

Таблица mangle: 

Цепочка
Назначение
PREROUTING
Изменение пакетов до маршрутизации
POSTROUTING
Изменение пакетов после маршрутизации
INPUT
Изменение атрибутов входящих пакетов
OUTPUT
Изменение атрибутов исходящих пакетов
FORWARD
Изменение параметров транзитных пакетов

Таблица raw:

Цепочка
Назначение
INPUT
Применение политик безопасности к пакетам, поступающим на сам хост
OUTPUT
Применение политик безопасности к пакетам, исходящим от самого хоста
FORWARD
Применение политик безопасности к пакетам, которые проходят через хост (маршрутизируются)

Перейдем к цепочкам. Цепочки — это упорядоченные списки правил, которые последовательно применяются для каждого пакета данных. Пакет проходит через одну или несколько цепочек в зависимости от его направления. В зависимости от направления трафика (входящего, исходящего или транзитного) и типа таблицы будет свой порядок обработки. 

Как выглядят цепочки iptablesЦепочки iptables

Есть стандартные встроенные цепочки и пользовательские, которые создаются администратором. В таблице — описание стандартных. 

Цепочка
Обрабатываемый трафик
Описание
INPUT
Входящие пакеты
Разрешение/блокировка доступа к сервисам на хосте
OUTPUT
Исходящие пакеты
Контроль трафика, который отправляется системой наружу
FORWARD
Транзитные пакеты, проходящие через хост
Контроль трафика в случаях, когда хост выступает маршрутизатором

Правила и действия

Правило (rule) — это инструкция для брандмауэра. Она подсказывает инструменту фильтрации, что делать с сетевым пакетом, если он соответствует заданным условиям. 

Примеры условий:

  • IP-адрес отправителя или получателя;

  • используемый протокол (TCP, UDP, ICMP);

  • номер порта;

  • интерфейс (eth0, wlan0);

  • направление (входящий/исходящий/транзитный);

  • состояние соединения. 

Правила в цепочкеПримеры правил в цепочке

Действие (target) определяет, как Netfilter будет обрабатывать пакеты, которые прошли проверку в правилах. 

Действие
Описание
Результат
ACCEPT
Принять пакет — разрешить пройти через цепочку или брандмауэр
Пакет продолжит движение к месту назначения
DROP
Отбросить пакет — удаление без отправки уведомления отправителю
Отправитель не узнает о судьбе пакета — соединение просто зависнет
REJECT
Отклонить пакет — удаление с отправкой отправителю уведомления об ошибке (например, ICMP-сообщение «Destination Unreachable»)
Отправитель немедленно получает уведомление о блокировке пакета
RETURN
Вернуть пакет — прекращение обработки пакета в текущей цепочке (встроенной или пользовательской) и возврат управления в вызывающую цепочку
Выход из пользовательских цепочек
JUMP (Переход)
Перенаправление пакета из текущей цепочки в пользовательскую цепочку для дальнейшей обработки
Пакет переходит к обработке другим набором правил

Порядок применение правил и действий: 

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

  2. Если пакет соответствует всем условиям какого-либо правила, к нему применяется релевантное действие.

  3. После применения терминального действия (ACCEPT, DROP, REJECT) обработка пакета в данной цепочке прекращается. Дальнейшие правила игнорируются.

  4. Если пакет доходит до конца цепочки и не соответствует ни одному из правил, к нему применяется политика по умолчанию (Policy). Для безопасности это почти всегда DROP — блокировка всего, что явно не разрешено. 

Концепция iptablesКонцепция iptables

Синтаксис и основные команды iptables

Чтобы управлять брандмауэром, нужно четко указывать, что делать, где делать и для каких пакетов. Разберемся, какие команды применять. 

Основной синтаксис правил и структура команд для работы с iptable 

Общий синтаксис команды iptables такой: 

Компонент
Назначение
Примеры
sudo iptables
Вызывает утилиту с правами суперпользователя
sudo iptables -L
-t [ТАБЛИЦА]
Указывает, в какой таблице работать. Если вы не назвали таблицу, по умолчанию будет использоваться filter
-t nat, -t filter
-[ОПЕРАЦИЯ]
Указывает, что делать с правилом: добавить, удалить, просмотреть и т.д
-A (добавить), -D (удалить), -L (просмотреть)
[ЦЕПОЧКА]
Обозначает цепочку, к которой применяется указанная операция
INPUT, FORWARD
[УСЛОВИЯ]
Указывает условия соответствия пакета определенным параметрам, например, IP-адресу, порту, протоколу, состоянию
-p tcp, --dport 22, -s 192.168.1.1
-j [ДЕЙСТВИЕ]
Обозначает, что делать с пакетом, если он соответствует конкретным условиям
-j ACCEPT, -j DROP, -j REJECT

Часто используемые команды

Есть команды для просмотра, добавления, удаления, очищения и сохранения правил в iptables. Разберем все основные. 

Просмотр правил (-L)

sudo iptables -L
Показывает содержимое таблицы filter
Показывает правила цепочек INPUT, OUTPUT, FORWARD
sudo iptables -L -v -n
Показывает правила, выводит количество пакетов и байтов, при этом не преобразовывая IP-адреса и порты в имена
Показывает, сколько пакетов и байтов обработано каждым правилом
sudo iptables -t nat -L
Показывает правила в конкретной таблице
Показывает цепочки PREROUTING, POSTROUTING и правила NAT

Добавление и удаление правил. Правила могут добавляться в окончание цепочки (-A) либо в конкретный номер строки (-I).

Добавить в конец
-A (Append)
Добавляет правило в самый конец цепочки
Добавить по номеру
-I (Insert)
Вставляет правило в начало цепочки (или в позицию NUMBER при указании номера строки)
Удалить по спецификации
-D (Delete)
Удаляет правило, если оно полностью указано и совпадает с существующим
Удалить по номеру
-D (Delete)
Удаляет правило, если указан номер его строки

Очистка правил и применение политик по умолчанию

Очистить все правила
-F (Flush)
Удаляет все правила из всех цепочек. С этой командой обращайтесь осторожно, чтобы случайно не потерять нужные настройки
Установить политику
-P (Policy)
Устанавливает политику по умолчанию для цепочки. То есть обозначает, что делать с пакетами, которые не соответствуют ни одному правилу

Сохранение правил. Чтобы настроенные с помощью iptables правила не терялись при перезагрузке системы, их нужно явно сохранить. 

Установка сохранения
sudo apt install iptables-persistent
Устанавливает службу, которая автоматически сохраняет и восстанавливает правила
Сохранить сейчас (IPv4)
sudo netfilter-persistent save (или sudo iptables-save > /etc/iptables/rules.v4)
Записывает текущие активные правила в постоянный файл конфигурации
Просмотреть файл
cat /etc/iptables/rules.v4
Проверяет, что правила корректно сохранены

Примеры настройки iptables

Давайте от теории перейдем к практике и рассмотрим конкретные примеры применения правил и команд. 

Как заблокировать или разрешить IP-адрес

Если нужно заблокировать входящие соединения с конкретного IP, команда будет выглядеть примерно так:

Это правило добавляется в цепочку INPUT. Оно заставит отбросить весь трафик, поступающий с указанного IP-адреса. Правило подходит для блокировки сомнительного или заведомо опасного источника.

Пример команды, разрешающей доступ с определенного IP:

Эта команда сделает так, что трафик с конкретного IP-адреса будет проходить без ограничений. Она используется для выделения узлов, в которых вы уверены.

Пример команды для блокировки доступа к определенному порту:

Она запрещает подключение по SSH от указанного IP. Применяется, если нужно повысить уровень безопасности внутри сети. 

Как открыть и закрыть определенные порты

Можно с помощью DROP закрыть все, а затем открыть только то, что нужно. Это не очень гибкий, но наиболее безопасный подход. Если он вам не подходит, пользуйтесь отдельными командами. 

Команда, чтобы разрешить входящий HTTP:

Открывает доступ к веб-серверу по порту 80 для всех пользователей.

Как разрешить HTTPS:

Позволяет всем пользователям подключаться к защищенному веб-сервису.

Пример разрешения SSH:

Открывает удаленный доступ к серверу. Нежелательно делать это для всех пользователей, поэтому для безопасности настройте ограничения.

Чтобы закрыть порт 80, выполните команду:

Команда запрещает подключение к веб-сервису. Подойдет для отключения или блокировки сервисов, которые редко используются или не используются вообще. 

Как управлять ICMP-трафиком (Ping)

Управление ICMP-трафиком означает использование утилиты для проверки соединений в сетях на основе TCP/IP. Принцип такой — компьютер отправляет ICMP-сообщение Echo-Request, указывая IP-адрес узла, достижимость которого нужно проверить. Узел, получивший запрос, формирует и отправляет эхо-ответ (Echo-Reply). Такие операции можно разрешить или запретить. 

Пропустить ICMP echo-request можно так:

Разрешает откликаться на ping. Это полезно для диагностики сетевых проблем.

Заблокировать echo-request:

Эта команда делает так, что сервер перестает отвечать на ping. Это поможет усложнить злоумышленниками задачу по сетевой разведке.

Можно разрешить ping только из локальной сети:

Благодаря команде узлы можно «прощупывать» только из корпоративной сети. Злоумышленникам доступ будет закрыт. 

Как управлять трафиком по MAC-адресу

MAC-фильтрация может работать только на уровне Ethernet. К внешнему трафику она не применяется. 

Как разрешить доступ по MAC:

Команда используется в локальных сетях и разрешает трафик от устройства с конкретным MAC-адресом.

Команда для запрета по MAC:

Команда в основном применяется для блокировки незарегистрированных устройств.

Как настроить NAT

Можно настроить маскарадинг (masquerading) — процесс, в котором адрес отправителя во внутренней сети будет динамически подменяться на адрес во внешней сети. Команда: 

MASQUERADE определяет IP-адрес исходящего интерфейса для каждого пакета (более нагружает систему), в то время как SNAT использует зафиксированный адрес из опции --to-source (быстрее).

Пример команды для проброса порта 8080 на 80 веб-сервера:

Команда позволяет направлять внешний трафик на внутренний сервер. Она полезна, если нужно для опубликовать наружу внутренние ресурсы. 

Как пробросить SSH на другой сервер:

Команда делает внутренний SSH доступным через внешний порт. 

Чтобы было проще ориентироваться в примерах команд, воспользуйтесь сводной таблицей. 

Категория
Что делает
Команда iptables
Когда и зачем нужна
Блокировка IP
Блокирует входящий трафик от указанного IP
Блокирует входящий трафик от указанного IP
Используется для запрета нежелательных источников
Разрешение IP
Разрешает трафик от указанного IP
iptables -A INPUT -s 192.168.1.50 -j ACCEPT
Добавляет доверенный узел в список разрешенных
Блокировка IP по порту
Блокирует SSH от IP
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.50 -j DROP
Улучшает безопасность SSH
Открытие HTTP
Разрешает доступ к веб-серверу
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Делает сайт доступным
Открытие HTTPS
Разрешает защищенный доступ
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
Дает доступ к веб-сайту по протоколу TLS
Открытие SSH
Разрешает удаленный доступ
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Позволяет администрировать сервер
Закрытие HTTP
Запрещает доступ к порту 80
iptables -A INPUT -p tcp --dport 80 -j DROP
Деактивирует веб-сервис
Разрешение Ping
Разрешает ICMP echo-request
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Позволяет проводить диагностику сети
Запрет Ping
Запрещает ICMP echo-request
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
Не дает серверу отвечать на ping
Разрешение Ping из внутренней сети
Разрешает ICMP только из подсети
iptables -A INPUT -p icmp -s 192.168.1.0/24 -j ACCEPT
Позволяет провести диагностику внутри LAN
Разрешение MAC
Разрешает устройство по MAC-адресу
iptables -A INPUT -m mac --mac-source AA:BB:CC:DD:EE:FF -j ACCEPT
Используется внутри локальной сети
Запрет MAC
Блокирует устройство по MAC-адресу
iptables -A INPUT -m mac --mac-source AA:BB:CC:DD:EE:FF -j DROP
Блокирует физическое устройство
Маскарадинг
Позволяет с внутренних адресов выходить в интернет
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Используется при настройке интернет-шлюза
Проброс веб-порта
Пробрасывает порт 8080 на внутренний 80
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to 192.168.1.100:80
Позволяет публиковать внутренние ресурсы
Проброс SSH
Пробрасывает порт 2222 на внутренний 22
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to 192.168.1.200:22
Обеспечивает доступ к SSH на другом сервере
Фильтруйте трафик с Curator Anti-DDoS
Фильтруйте трафик с Curator Anti-DDoS
Обеспечьте стабильность и бесперебойность работы ваших информационных ресурсов по протоколам HTTP или HTTPS.
Узнать больше

Расширенные настройки и советы по безопасности

Логирование в iptables критически важно для мониторинга, диагностики проблем и обнаружения попыток атак. По умолчанию логи попадают в kernel buffer (читаются через dmesg), а затем syslog daemon перенаправляет их на основе конфигурации /etc/syslog.conf или rsyslog.conf. Реально логи обычно пишутся в /var/log/kern.log на Ubuntu/Debian-системах.

Действие LOG не блокирует и не разрешает пакеты — оно просто записывает информацию и передает пакет дальше по цепочке. Поставьте его перед правилом DROP или REJECT. 

Варианты действия:

  • -j LOG указывает на необходимость логирования;

  • --log-prefix"text" добавляет префикс к сообщению журнала, что упрощает поиск и фильтрацию записей.

  • --log-level 7 указывает уровень серьезности (7 = debug, часто используется для iptables).

Пример:

Чтобы посмотреть записи в системном журнале, можно использовать grep. Пример:

Использование state и limit

Для управления состоянием соединений и ограничения частоты можно применять расширенные матчи Conntrack (Connection Tracking). Рассказываем про два основных. 

Расширенный матч state

Для отслеживания состояния каждого сетевого соединения подойдет расширенный матч state, который использует подсистему ядра Linux Conntrack. 

Состояние
Описание
Применение
NEW
Пакет начинает новое соединение. Например, первый пакет SYN
Используется для разрешения новых соединений по определенному порту
ESTABLISHED
Пакет является частью установленного двустороннего соединения
Разрешает весь входящий трафик, который является ответом на исходящие запросы сервера
RELATED
Пакет начинает новое соединение, но связан с уже существующим. Например, канал данных FTP
Используется нечасто, но важен для некоторых протоколов
INVALID
Пакет не может быть идентифицирован или имеет ошибки
Обычно отбрасывается: -m state --state INVALID -j DROP

Пример:

Здесь правило ESTABLISHED позволяет серверу безопасно получать ответы на исходящие запросы без открытия разных портов.

Расширенный матч limit 

Модуль limit обычно используется для защиты от DDoS-атак и ограничения частоты логирования либо принятия новых соединений. С его помощью также удается предотвращать перегрузку сервера. 

Варианты:

  • --limit rate. Максимальное количество совпадений в секунду/минуту (например, 5/minute);

  • --limit-burst number. Максимальное количество совпадений, разрешенных в начальном потоке (burst).

Пример для ограничения новых SSH-соединений:

Это правило разрешает три новые попытки SSH-соединения в минуту. Это защитит от DDoS-атаки и простого брутфорса. Но не заблокирует легитимного пользователя, если тот случайно превысил лимит ввода учетных данных.

Заключение

Грамотная настройка iptables — фундаментальный шаг по обеспечению безопасности вашего Linux-сервера. Этот инструмент выступает в роли первой линии обороны, позволяя создавать строгие наборы правил для работы брандмауэра и защищать сервер от базовых атак и несанкционированного доступа.

Однако важно понимать, что iptables имеет ограничения при столкновении с крупномасштабными DDoS-атаками. Встроенный брандмауэр Linux не способен фильтровать атаки на уровне ISP — трафик атаки все равно достигнет вашего сервера. В этом случае рекомендуется использовать специализированные облачные решения, такие как Curator Anti-DDoS от Cloud.ru, которые фильтруют трафик на уровне сетевых узлов и автоматически отсекают вредоносные запросы.

Продукты из этой статьи:
Иконка-Curator Anti-DDoS
Curator Anti-DDoS
30 ноября 2025

Вам может понравиться