Здравствуйте, уважаемые читатели. Сегодня наша тема: "Как открыть или закрыть порт в Iptables". В прошлой статье, мы делали установку утилиты Iptables в операционной системе CentOS. Теперь рассмотрим варианты, как с её помощью производить конфигурацию брандмауэра.

Файл конфигурации Iptables

Конфигурационный файл Iptables, находится по адресу /etc/sysconfig/iptables.

Конфигурация Iptables по умолчанию :

базовая конфигурация Iptables

Есть три цепочки по умолчанию:

:INPUT ACCEPT [0:0] 
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]

INPUT – Входящие соединения.

FORWARD – Сквозные соединения.

OUTPUT – Исходящие соединения.


  • ACCEPT - глобальный атрибут для всей цепочки, это означает, что соединения в цепочке будут приниматься.
  • В квадратных скобках, количество соединений и пакетов. При просмотре состояния правил в консоли, счётчики будут активны, и будет отображаться количество в реальном времени.
  • Ниже, находится базовый набор правил.

Первое правило

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
  • Означает, что уже произведённые входящие соединения, не будут прерваны.

Второе правило

-A INPUT -p icmp -j ACCEPT
  • Разрешает входящие соединения для протокола icmp.

Третье правило

-A INPUT -i lo -j ACCEPT
  • Разрешает входящие соединения для внутренней сети сервера.

Четвёртое правило

-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
  • Открывает порт для SSH соединений.

Пятое правило

-A INPUT -j REJECT --reject-with icmp-host-prohibited
  • Правило означает, что все отброшенные входящие соединения, будут отбрасываться с ответом - icmp запрещено.

Шестое правило

-A FORWARD -j REJECT --reject-with icmp-host-prohibited
  • Это правило означает, что все отброшенные сквозные соединения, будут отбрасываться с ответом - icmp запрещено.

Открытие порта в Iptables

  • Для того, чтобы открыть какой-нибудь порт, нужно добавить разрешающее правило.
  • Например, чтобы открыть 80 порт для веб-сервера, нужно добавить такое правило:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
открытие 80 порта в Iptables
  • В конце строчки правила, находится атрибут ACCEPT, который и отвечает за открытие порта.
  • Чтобы изменения вступили в силу, нужно перезагрузить Iptables:
# systemctl restart iptables
перезагрузка Iptables
  • После этого, можно проверить состояние конфигурации:
# iptables -L -v -n
порт 80 открыт
  • Как видно на картинке, 80 порт открыт для входящих соединений.

Закрытие порта в Iptables

  • Если требуется принудительно закрыть какой-нибудь порт, то добавляемое правило будет выглядеть так:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j DROP
принудительное закрытие порта 80
  • В примере, принудительно закрывается 80 порт.
  • В конце правила стоит атрибут DROP, который и отвечает за закрытие порта.
  • После перезагрузки Iptables, можно проверить конфигурацию:
# systemctl restart iptables
# iptables -L -v -n
порт 80 принудительно закрыт
  • Как видно на картинке, 80 порт закрыт для входящих соединений.

Открытие нескольких портов в Iptables

  • Если нужно открыть (закрыть) несколько портов сразу, то можно не создавать правила для каждого порта, а использовать одно правило для нескольких портов:
-A INPUT -m state --state NEW -m tcp -p tcp --match multiport --dports 22,80 -j ACCEPT
открытие нескольких портов в одном правиле
  • Нужные порты указываются через запятую.
  • Перезагружаем Iptables, и проверяем конфигурацию:
# systemctl restart iptables
# iptables -L -v -n
открыты порты 22 и 80
  • Порты 22 и 80 открыты для входящих соединений.

Открытие диапазона портов в Iptables

  • Если есть необходимость открыть (закрыть) диапазон портов, то так же, как и в предыдущем случае, можно сделать это при помощи одного правила:
-A INPUT -m state --state NEW -m tcp -p tcp --match multiport --dports 49900:49999 -j ACCEPT
открытие диапазона портов в одном правиле
  • Диапазон портов указывается через двоеточие.
  • Выполняем перезагрузку Iptables, и проверяем конфигурацию:
# systemctl restart iptables
# iptables -L -v -n
открыт диапазон портов 49900:49999
  • Как видно на картинке, диапазон портов 49900:49999 открыт для входящих соединений.

Порядок считывания конфигурации

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

Глобальные настройки цепочек

Можно настроить глобальные атрибуты для имеющихся цепочек:

  • Если сервер не производит маршрутизацию, то можно указать глобальным атрибутом для цепочки FORWARD -> DROP.
  • После добавления необходимых правил для входящих соединений, можно указать глобальный атрибут DROP, и для цепочки INPUT.
  • Если нет понимания количества всех необходимых портов, нужных для исходящих соединений самого сервера, то для цепочки OUTPUT можно оставить глобальным атрибутом ACCEPT.
глобальные атрибуты для цепочек

Это были базовые примеры настроек, которые можно использовать при конфигурации брандмауэра Linux, при помощи утилиты Iptables.

Сегодня мы рассмотрели тему: "Как открыть или закрыть порт в Iptables". Рассмотрели базовые примеры использования Iptables.

Надеюсь статья была вам полезна. До встречи в новых статьях.

С уважением, Андрей Бондаренко.


Видео на тему "Как открыть или закрыть порт в Iptables":