Как открыть или закрыть порт в Iptables

Здравствуйте, уважаемые читатели. Сегодня наша тема: "Как открыть или закрыть порт в Iptables". В прошлой статье, мы делали установку утилиты Iptables в операционной системе CentOS. Теперь рассмотрим варианты, как с её помощью производить конфигурацию брандмауэра.
Файл конфигурации Iptables
Конфигурационный файл Iptables, находится по адресу /etc/sysconfig/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

- В конце строчки правила, находится атрибут ACCEPT, который и отвечает за открытие порта.
- Чтобы изменения вступили в силу, нужно перезагрузить Iptables:
# systemctl restart iptables

- После этого, можно проверить состояние конфигурации:
# iptables -L -v -n

- Как видно на картинке, 80 порт открыт для входящих соединений.
Закрытие порта в Iptables
- Если требуется принудительно закрыть какой-нибудь порт, то добавляемое правило будет выглядеть так:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j DROP

- В примере, принудительно закрывается 80 порт.
- В конце правила стоит атрибут DROP, который и отвечает за закрытие порта.
- После перезагрузки Iptables, можно проверить конфигурацию:
# systemctl restart iptables
# iptables -L -v -n

- Как видно на картинке, 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 открыты для входящих соединений.
Открытие диапазона портов в 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 открыт для входящих соединений.
Порядок считывания конфигурации
- Считываются все имеющиеся правила, и если нет правил для какой-нибудь цепочки, то действует глобальный атрибут, указанный сверху, рядом с названием цепочки.
- Если правило для какого-нибудь соединения не назначено, то так же будет задействован глобальный атрибут цепочки.
Глобальные настройки цепочек
Можно настроить глобальные атрибуты для имеющихся цепочек:
- Если сервер не производит маршрутизацию, то можно указать глобальным атрибутом для цепочки FORWARD -> DROP.
- После добавления необходимых правил для входящих соединений, можно указать глобальный атрибут DROP, и для цепочки INPUT.
- Если нет понимания количества всех необходимых портов, нужных для исходящих соединений самого сервера, то для цепочки OUTPUT можно оставить глобальным атрибутом ACCEPT.

Это были базовые примеры настроек, которые можно использовать при конфигурации брандмауэра Linux, при помощи утилиты Iptables.
Сегодня мы рассмотрели тему: "Как открыть или закрыть порт в Iptables". Рассмотрели базовые примеры использования Iptables.
Надеюсь статья была вам полезна. До встречи в новых статьях.
✍
С уважением, Андрей Бондаренко.
Видео на тему "Как открыть или закрыть порт в Iptables":

WMZ-кошелёк = Z667041230317
«Linux»