Страница 1 из 1

Открываем порт в Linux с помощью firewalld

Добавлено: Вс авг 15, 2021 10:07 pm
icedog
Как проверить, что порт закрыт именно файрволом?

Код: Выделить всё

systemctl stop firewalld #отключаем файрволл и проверяем есть ли соединение из вне
systemctl start firewalld #включаем файрвол
Открываем порт для внешних соединений всем пользователям

Код: Выделить всё

firewall-cmd --add-port=21/tcp
firewall-cmd --remove-port=21/tcp #эту команду используйте, чтобы закрыть порт
Это очевидный, но не самый лучший вариант. Он подойдёт вам, если нужно открыть какой-то конкретный порт. Если же задача разрешить сервис, то лучше подойдёт команда:

Код: Выделить всё

firewall-cmd --add-service=ftp
firewall-cmd --get-services #эта команда выводит список всех возможных сервисов, которые можно добавлять в файрвол
firewall-cmd --remove-service=ftp #эту команду используйте, чтобы закрыть службу
Пока эти команды только изменили текущую конфигурацию файрвола, но эти настройки не вступили в силу. Чтобы они заработали, нужно перезагрузить файрвол мягко без разрыва текущих соединений

Код: Выделить всё

firewall-cmd --reload #перезагружаем без разрыва текущих соединений
firewall-cmd --complete-reload #сбросит и текущие соединения
firewall-cmd --list-all #смотрим настройки
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: ens3
  sources:
  services: dhcpv6-client ftp ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
И если эти настройки нам нужны постоянно, то есть и после перезагрузки сервера, то нужно их сохранить

Код: Выделить всё

firewall-cmd --runtime-to-permanent #делаем текущие настройки постоянными
Открываем сервис для внешних соединений пользователям из заданной подсети

Код: Выделить всё

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="ftp" accept'