如何使用firewall-cmd阻止除特定端口之外的所有端口

如何使用firewall-cmd阻止除特定端口之外的所有端口

我使用的是 CentOS Linux 版本 7.7.1908(核心)。

我想阻止來自除少數連接埠之外的所有 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,則可能需要向其中新增 readd 連接埠。

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

相關內容