我有几个 RHEL7/CentOS7 服务器需要阻止全部传出流量到专用机器或专用网络子网,例如 CIDR 168.192.10.0/24。
目前我尝试了,firewall-cmd
但运气不佳。我看到的大多数帖子都在使用,iptables
但我更喜欢基于的解决方案firewalld
。
我已经尝试根据这两个主题提出解决方案阻止传出连接...和使用firewalld阻止Centos 7上的传出连接但不知何故我的规则一定是错的因为我仍然可以打开到服务器的 http 连接。
现行firewalld
规则(未定义规则)
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
假设服务器的源 IP 为 168.192.18.56。接下来,我尝试定义的规则(也使用--permanent
firewall-cmd --direct --add-rule ipv4 filter OUTPUT 0 -d 168.192.10.0/24 -j REJECT
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="168.192.18.56" destination address=168.192.10.0/24 reject'
我也尝试过降低行动。现行规则是
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: dhcpv6-client http https ssh
ports:
protocols:
masquerade: no
forward-ports:
sourceports:
icmp-blocks:
rich rules:
rule family="ipv4" destination address="192.168.10.0/24" log prefix="dropped" level="debug" limit value="20/m" drop
现在不确定是否必须重新加载firewalld
?在这种情况下,我会使规则永久生效。
我的误解是
- 假设 192.168.10.30 上有一个 Web 服务器正在运行。
- 我可以 ping 通 192.168.10.30
- 我还可以打开 HTTP 连接
wget 192.168.10.30
并获取index.html
返回 - 我还可以 ping 被阻止子网中的每台计算机,但这可能需要一条特殊规则,我认为通过阻止所有流量,ICMP 也将被阻止
我很感激知道我做错了什么。