使用 Firewalld 阻止网页

使用 Firewalld 阻止网页

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>用于捕获httphttps交通。

用法:

usage: --direct --add-rule { ipv4 | ipv6 | eb } <table> <chain> <priority> <args>

相关内容