Настройка бриджа и firewalld на almalinux 9


Настраивал бридж и файервол на Almalinux 9, нативными средствами - с помощью nmcli и firewalld , и решил записать памятку, что бы впоследствии не искать всю инфу заново.

Настройка бриджа со статичным адресом:

  1. Создаем бридж, как устройство, и сразу корректируем название, ибо встроенные названия подключений мне не очень нравятся:

nmcli con add type bridge ifname br0

nmcli co mod bridge-br0 connection.id br0

  1. Отключаем ipv6, ибо нема, и сразу прописываю адресацию

nmcli co mod br0 ipv6.method disabled

nmcli co mod br0 ipv4.addresses 11.22.33.44/24

nmcli co mod br0 ipv4.gateway 11.22.33.1

nmcli co mod br0 ipv4.method manual

nmcli co mod br0 stp off # Те, кому нужен STP, знают об этом, остальным можно выключить для избежания лишнего головняка

  1. Добавляем в бридж устройство eno2 и правлю название, ибо нафиг рабов.

nmcli con add type bridge-slave ifname eno1 master br0

nmcli co mod bridge-slave-eno1 connection.id bridge-eno1

  1. Удаляем стандартное подключение "eno1"

nmcli co del eno1

  1. Можно включить бридж, и проверить.

nmcli co up br0

nmcli co sh #(все должно быть зеленым)

ip r # у меня тут 2 default gateway-я, что не есть правильно.

  1. Отключаю гейтвей на второй сетевухе

    nmcli co mod eno2 ipv4.gateway ""

nmcli co up eno2

ip r # гейт остался один, который прописывал на втором шаге, все ок, можно проверять пингом внешку.

Настройка firewalld по белому списку

  1. Для начала перевесим ssh на альтернативный порт:

sed -i -e 's/#Port\ 22/Port\ 32202/g' /etc/ssh/sshd_config

semanage port -a -t ssh_port_t -p tcp 32202 # если не отключать selinux

firewall-cmd --permanent --service=ssh --add-port=32202/tcp

firewall-cmd --permanent --service=ssh --remove-port=22/tcp #правила не применятся пока не сделать firewall-cmd --reload, установленные соединения не оборвутся даже после reload-а.

  1. Назначим зоны для trested-а и public - интернета. Можно использовать зону dmz, вместо trusted, разные варианты открытости.

firewall-cmd --zone=public --change-interface=br0 --permanent # eno1 в бридже, он ни на что не влияет

firewall-cmd --zone=trusted --change-interface=eno2 --permanent

  1. Создаем и заполняем вайтлист

firewall-cmd --permanent --new-ipset=whitelist --type=hash:net

firewall-cmd --permanent --ipset=whitelist --add-entry=22.33.44.0/24

firewall-cmd --permanent --ipset=whitelist --add-entry=33.44.55.0/24

...

смотрим на результат

firewall-cmd --permanent --ipset=whitelist --get-entries

  1. Разрешаем подключение из вайтлиста к нужным портам

firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="whitelist" service name="ssh" accept'

firewall-cmd --permanent --zone=public --add-rich-rule='rule source ipset="whitelist" service name="ntp" accept'

...

  1. В настройках зоны public разрешено подключение к ssh и некоторым другим портам, мне оно не нужно, оставляем только тех, кто в вайтлисте.

firewall-cmd --list-services --zone=public

firewall-cmd --zone=public --permanent --remove-service=cockpit

firewall-cmd --zone=public --permanent --remove-service=dhcpv6-client

firewall-cmd --permanent --zone=public --remove-service=ssh

  1. Осталось проверить, все ли хорошо, и релоуд (все правила кучей применятся)

firewall-cmd --set-default-zone public # все новые подключения пойдут в зону public, мало ли сетевуха сменит название.

firewall-cmd --info-zone=public

firewall-cmd --reload

  1. Проверяю, что недоступно не из вайтлиста и доступно из вайтлиста по ssh (ибо встречался, что ссш остался торчать).

ssh -p32202 myserver

Запись добавлена | Категория: Linux | Опубликовано | Автор: |