我试图让我的防火墙用规则阻止一个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: 发布于 2018-10-11 15:43:43
好吧,经过大量的挖掘,我终于开始工作了。它要求我添加所谓的direct rule,因此要阻止像216.49.176.33这样的ip,要添加的规则是:
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在此之后,您必须清除浏览器(S)的浏览数据,之后您将无法访问该ip地址,注意,我还使用了mask 32来确保那些具有多个ip指向其域的ip将被阻塞。
当然,我的CHAIN选项也可以是INPUT,以防止在病房范围内的流量。选项--dport=<80|443>用于捕获http和https流量。
用法:
usage: --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>https://askubuntu.com/questions/1082298
复制相似问题