Назад | Перейти на главную страницу

Добавление firewalld к существующей инфраструктуре с минимальным временем простоя

У меня смешанная инфраструктура на основе 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 считает весь трафик частью public зона. Эта зона разрешает только входящий трафик ответов ssh и DHCP-клиента.

Есть несколько способов справиться с этим.

В моих собственных сценариях и ролях Ansible я настраиваю правила firewalld вместе с каждой службой. Итак, у меня есть роль, которая устанавливает nginx, и эта роль также открывает службы http и https в firewalld. Итак, как только веб-сервер установлен и запущен, брандмауэр также готов к работе. Когда я перешел с ufw на firewalld, я просто повторно запустил всю playbook, и изменились только вещи ufw и firewalld.

Если вы выполняете одноразовую операцию и у вас есть много портов для открытия или другая сложная конфигурация, вы можете открыть порты в firewalld на пустой виртуальной машине, а затем получить полученный XML-файл для этой зоны из /etc/firewalld/zones каталог. Тогда ты можешь copy: этот файл в любую систему и перезапустите firewalld, чтобы он использовал соответствующую конфигурацию.