У меня смешанная инфраструктура на основе Ubuntu 16.04 / Ubuntu 18.04, и я хотел бы установить и настроить firewalld
] на хостах. Я собираюсь использовать для этого роль Ansible (у меня есть установка на основе Vagrant для тестирования роли Ansible).
Когда я запускаю Ansible playbooks, я только что установленный firewalld
блокирует входящие соединения по умолчанию, хотя я никогда не указывал это явно:
[ 2161.574030] FINAL_REJECT: IN=enp0s8 OUT= MAC=08:00:27:f9:00:46:0a:00:27:00:00:00:08:00 SRC=172.16.137.1 DST=172.16.137.182 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=36677 DF PROTO=TCP SPT=35098 DPT=455 WINDOW=29200 RES=0x00 SYN URGP=0
[ 4717.718425] FINAL_REJECT: IN=enp0s8 OUT= MAC=08:00:27:f9:00:46:0a:00:27:00:00:00:08:00 SRC=172.16.137.1 DST=172.16.137.182 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=55673 DF PROTO=TCP SPT=47624 DPT=456 WINDOW=29200 RES=0x00 SYN URGP=0
[ 4719.682792] FINAL_REJECT: IN=enp0s8 OUT= MAC=08:00:27:f9:00:46:0a:00:27:00:00:00:08:00 SRC=172.16.137.1 DST=172.16.137.182 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=60255 DF PROTO=TCP SPT=43836 DPT=457 WINDOW=29200 RES=0x00 SYN URGP=0
[ 4721.358343] FINAL_REJECT: IN=enp0s8 OUT= MAC=08:00:27:f9:00:46:0a:00:27:00:00:00:08:00 SRC=172.16.137.1 DST=172.16.137.182 LEN=60 TOS=0x10 PREC=0x00 TTL=64 ID=42733 DF PROTO=TCP SPT=51850 DPT=458 WINDOW=29200 RES=0x00 SYN URGP=0
Можно ли как-нибудь запустить firewalld
в разрешающем режиме, затем настроить все, а затем применить конфигурацию одним выстрелом?
Недавно я преобразовал некоторые Ubuntu коробки из ufw в firewalld, и я использую Ansible почти исключительно, так что я также столкнулся с небольшой частью этого.
Во-первых, вы должны знать, что из коробки firewalld блокирует большую часть входящего трафика. В конфигурации по умолчанию на Ubuntu, никакие интерфейсы или источники не привязаны ни к одной из зон, поэтому firewalld считает весь трафик частью публичной
зоны. Эта зона разрешает только входящий трафик ответа ssh и DHCP-клиента.
Есть несколько способов справиться с этим.
В моих собственных плейбуках и ролях, я настраиваю правила firewalld вместе с каждой службой. Итак, у меня есть роль, которая устанавливает nginx, и эта роль также открывает сервисы http и https в firewalld. Итак, как только веб-сервер установлен и запущен, брандмауэр также готов к работе. Когда я перешел с ufw на firewalld, я просто переписал весь плейбук и поменял только ufw и firewalld.
Если вы делаете одноразовую установку и вам нужно открыть много портов, или какую-то другую сложную конфигурацию, вы можете захотеть открыть порты в firewalld на пустой ВМ, а затем взять результирующий XML файл для этой зоны из каталога /etc/firewalld/zones
. Затем вы можете скопировать:
этот файл в любую систему и перезапустить firewalld, чтобы он использовал соответствующую конфигурацию.