使用firewalld我可以制定这样的规则:(note the invert="True"
)
firewall-cmd --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.100.0/24" invert="True" drop'
我可以指定对于某些来源,我需要将它们视为区域的一部分:
firewall-cmd --permanent --zone=external --add-source=ipset:knowns
是否可以颠倒这一点并确保将不在 ipset 中的任何 ip 视为另一个指定区域的一部分?我查看了手册页,但找不到任何迹象表明这是否可能。
答案1
您可以通过创建包含所有“不良”IP 地址/范围的 ipset(使用firewall-cmd)来模仿此行为。然后,您添加一个仅将此 ipset 作为源的防火墙区域。
# firewall-cmd --permanent --zone=axisofevil --add-source=ipset:roguenations
ipset“roguenations”来源的所有流量都可以访问“axisofevil”区域的所有服务。如果您根本不允许任何服务,则这些客户端将无法获得任何服务。
不要忘记添加另一个包含所有“不良”IPv6 地址/范围的 inet6 类型区域。
# firewall-cmd --permanent --new-ipset=roguenations6 --type=hash:net --family=inet6
提示:您可以使用来自例如的整个地理IP数据库https://www.ip2location.com/free/visitor-blocker以 CIDR 格式添加到 ipset(使用firewall-cmd --new-ipset-from-file或者--从文件添加条目..:)
我建议禁用默认打开的“AllowZoneDrifting”。
华泰