我使用的是 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