Как мне полностью заблокировать порт с помощью firewalld?
Отказ от ответственности: это первый раз, когда я использую firewalld, будьте осторожны:) .
У меня есть машина CentOS, и я хочу реализовать следующие требования с помощью firewalld:
- Разрешить подключения из любого места к портам 1, 2, 3, 4.
- Разрешить подключения к порту 5 только с IP-адресов IP1, IP2 и IP3
- Полностью блокируйте соединения с портом 6 из любого места.
Итак, я сделал это:
- добавили порты 1, 2, 3 и 4 к
public
зона - добавил порт 5 и IP-адреса IP1, IP2 и IP3 в зону
trusted
Теперь зоны выглядят так:
public (active)
target: default
icmp-block-inversion: no
interfaces: eno12345
sources:
services: ssh dhcpv6-client
ports: 1/tcp 2/tcp 3/tcp 4/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
trusted (active)
target: ACCEPT
icmp-block-inversion: no
interfaces:
sources: IP1 IP2 IP3
services:
ports: 5/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
Замечания: public
зона по умолчанию.
Таким образом, первые 2 правила, кажется, применяются правильно.
Однако я застрял с последним правилом (полностью заблокируйте порт 6). Я пробовал несколько решений, но ни одно из них не работает.
1). Что я должен сделать, чтобы применить это?
2). Почему я могу подключиться через порт 6, даже если он явно не указан как разрешенный в конфигурации firewalld? Никаких правил об этом не добавлено iptables
или.
2 ответа
То, как я решил это, я добавил богатое правило в trusted
зона:
rule family="ipv4" port port="6" protocol="tcp" drop
Из того, что я знаю, сначала применяются богатые правила. Кажется, работает правильно в моем случае.
Некоторые общие команды ниже
firewall-cmd --list-ports
firewall-cmd --get-zones
firewall-cmd --zone=public --add-port=5000/tcp
Для получения дополнительной документации и более подробной информации, пожалуйста, проверьте его. https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Security_Guide/sec-Configuring_firewalld.html