Как заблокировать все порты, кроме определенных, с помощью firewall-cmd

Как заблокировать все порты, кроме определенных, с помощью firewall-cmd

Я использую CentOS Linux версии 7.7.1908 (Core).

Я хочу заблокировать входящие и исходящие соединения со всех портов TCP/UDP, за исключением нескольких.

Ниже приведена текущая конфигурация брандмауэра ОС:

# firewall-cmd --get-active-zones
public
  interfaces: ens160

# firewall-cmd --list-ports
5901/tcp 5902/tcp 5912/tcp 5911/tcp 5913/tcp 5914/tcp

# firewall-cmd --list-services
dhcpv6-client ssh

Хотя брандмауэр, по-видимому, разрешает соединения только через перечисленные выше порты, я все равно могу использовать определенные порты, такие как 22 (SSH), 80 (HTTP) и т. д.

Как я могу это исправить?

решение1

Там вы можете найти ответ с помощью iptables

https://superuser.com/questions/769814/how-to-block-all-ports-except-80-443-with-iptables/770191

вы можете просто открыть нужные вам порты вместо 80 и 443

решение2

Вы можете посмотреть каталог /etc/firewalld/zones и изменить public.xml

По умолчанию /etc/firewalld/zones/public.xml

<?xml version="1.0" encoding="utf-8"?>
<zone>
  <short>Public</short>
  <description>For use in public areas. You do not trust the other computers on networks to not harm your computer. Only selected incoming connections are accepted.</description>
  <service name="ssh"/>
  <service name="dhcpv6-client"/>
  <service name="cockpit"/>
</zone>

Затем

firewall-cmd --reload

Вы можете изменить свою зону с публичной на закрытую.

cp /usr/lib/firewalld/zones/drop.xml /etc/firewalld/zones/
 
#Add to /etc/firewalld/zones/ the following to permit ssh.
<service name="ssh"/>
 
firewall-cmd --set-default-zone=drop
firewall-cmd --reload

Если вы решите изменить зону брандмауэра по умолчанию на DROP, вам, возможно, придется повторно добавить в нее свои порты.

firewall-cmd --permanent --add-port={5901,5902,5912.5911,5913,59124}/tcp
firewall-cmd --reload

Связанный контент