ALEXPTS
WEB DEVELOPER
PHP, NodeJS, JavaScript, etc.
Главная Приколы Стена
Cкилы: Web Php NodeJs Tests Storages

Настройка правил iptables через firewall-cmd

#Заметки

Так случилось, что последнее время разбираюсь с множеством технических штук. Дошло и до ansible, docker и др.

В ходе переноса своих инструкций из блокнота на ansible рецепты, столкнулся с тем, что я совсем ужасно знаю iptables и администрирование правил firewall очень слабое место у меня.

Небольшой список рецептов себе на будущее:

Активация сервиса firewalld

systemctl enable firewalld 

Текущий статус сервиса:

firewall-cmd --state

Посмотреть сводку правил firewall:

firewall-cmd --list-all

После любых изменений требуется перезагрузка сервиса:

firewall-cmd --reload

Открыть веб порт навсегда:

firewall-cmd --permanent --zone=public --add-port=80/tcp

Закрыть веб порт навсегда:

firewall-cmd --permanent --zone-public --remove-port=80/tcp

Создать сервис:

firewall-cmd --permanent --new-service=nginx

На созданный сервис появится файл в папке /etc/firewalld/services/nginx.xml

Мы можем описать конфигурацию сервиса через этот файл таким образом:

<?xml version="1.0" encoding="utf-8"?>
<service>
    <port protocol="tcp" port="80"/>
    <port protocol="tcp" port="433"/>
</service>

И активируем на постоянной основе новый сервис командой:

firewall-cmd --permanent --zone=public --add-service=nginx

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

firewall-cmd --list-all

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client nginx ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  sourceports:
  icmp-blocks:
  rich rules:

Удалить сервис навсегда можно аналогичной командой:

firewall-cmd --permanent --remove-service=nginx

Использование утилиты firewall-cmd мне показалось в разы проще и приятнее, чем работа с iptables, которые как сложно понимать лично мне, так и описывать правила.