ip
我正在尝试让我的防火墙使用以下规则阻止地址:
sudo firewall-cmd --zone=block --add-source=<ip_address/submask> --permanent
并将其添加richrule
到默认区域(公共)sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address=<ip_address> reject
,然后我最后重新加载规则sudo firewall-cmd --reload
但我仍然可以在浏览器中导航到这些网站。显然我做错了什么。如何使用 阻止访问任何网页firewalld
。
以下是我设置的区域规则:
block (active)
interfaces: enp0s3
sources: 172.217.5.110/32 216.49.176.33/32
services:
ports:
protocols:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
public (default, active)
interfaces: docker0
sources:
services: dhcpv6-client ssh
ports: 993/tcp 995/udp 995/tcp 22161/udp 4243/tcp 22/tcp 22/udp 465/tcp
protocols:
masquerade: no
forward-ports:
icmp-blocks:
rich rules:
答案1
好吧,经过一番挖掘,我终于让它工作了。它要求我添加所谓的direct rule
,因此要阻止 IP,需要216.49.176.33
添加的规则如下:
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -d 216.49.176.33/32 -p tcp -m tcp --dport=80 -j DROP
sudo firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 -d 216.49.176.33/32 -p tcp -m tcp --dport=443 -j DROP
然后重新加载:
sudo firewall-cmd --reload
查看添加的规则:
sudo firewall-cmd --direct --get-all-rules
现在从默认区域中删除接口,在我的情况下,public
正如规则所说的那样:
如果我的接口与某个区域相关联,在这种情况下
public
,来自该接口的任何请求都将通过,因为该区域对接口没有任何限制。Firewalld 使用的规则是:当收到或生成数据包时,哪个区域与该数据包匹配。然后该区域中的规则将应用于该数据包以确定如何处理它。
为了删除我使用;
sudo firewall-cmd --permanent --remove-interface=enp0s3
sudo firewall-cmd --reload
笔记:
在此之后,您将必须清除所涉及的浏览器中的浏览数据,之后您将无法访问该 IP 地址,请注意,我还使用了 32 来mask
确保那些具有多个指向其域的 IP 将被阻止。
当然,也CHAIN
可以选择INPUT
阻止病房内的交通。该选项--dport=<80|443>
用于捕获http
和https
交通。
用法:
usage: --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>