Настройка firewall в CentOS для Zabbix
Решал проблему с системой OpenVZ на безе CentOS7 и CentOS8, при которой с контейнера нельзя было подключиться к агенту на самом хосте. Причём проблема такая была именно внутри одного сервера: с контейнеров на других серверах с этой же ОС можно было сделать подключение, в а пределах одного сервера не работало.
Для начала на сервер надо выполнять вот такую команду:
iptables -vnL
По результату будет видно, что интерфейса venet0 настроено правило DROP для всех портов, кроме разрешённых.
Поэтому для этого интерфейса надо разрешить входящие соединения на порт 10050:
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 10 -p tcp --dport 10050 -i venet0 -j ACCEPT
При необходимости можно разрешить ping:
firewall-cmd —permanent —direct —add-rule ipv4 filter INPUT 0 -p icmp -i venet0 -j ACCEPT
Чтобы просто разрешить подключение к zabbix агенту с других серверов или контейнеров на других серверах, то достаточно выполнить команду:
firewall-cmd --permanent --zone=public --add-port=10050/tcp
После всех команд выше надо перезапускать firewall:
firewall-cmd --reload
Ещё нашёл такое решение конкретно для zabbix агента.
firewall-cmd --permanent --new-service=zabbix
firewall-cmd --permanent --service=zabbix --add-port=10050/tcp
firewall-cmd --permanent --service=zabbix --set-short="Zabbix Agent"
firewall-cmd --permanent --add-service=zabbix
firewall-cmd --reload
По аналогии можно сделать всё то же самое для других нужных сервисов.
Разрешить ping для всех ip адресов:
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 0 -p icmp -s 0.0.0.0/0 -d 0.0.0.0/0 -j ACCEPT
Или для конкретного ip адреса:
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 10 -p tcp -s 10.10.10.247 --dport 10050 -i venet0 -j ACCEPT
Все текущие правила можно вручную без команд отредактировать в файле:
nano /etc/firewalld/direct.xml
#Iptable вместо firewall-cmd на CentOS
На CentOS можно использовать Iptables. Но если включен firewall-cmd, то правила не будут сохранятся, которые были введены через iptables. Отключение firewall-cmd:
systemctl disable firewalld systemctl mask firewalld systemctl enable iptables
Устанавлвиаем пакет, который позволит нам сохранять правила iptabes после перезагрузки и восстанавливать их:
yum install iptables-services
Теперь правила можно сохранять так:
service iptables save
И восстанавливать:
service iptables restore
Использованный материал
— https://shurshun.ru/knowledgebase/firewalld-zabbix-agent/
— https://www.8host.com/blog/perexod-s-firewalld-na-iptables-v-centos-7/