我在 Debian 系统上运行公共 Pi-hole。到目前为止,它运行良好,但显然必须小心恶意行为者。因此,我密切监视客户端列表并查看可疑行为。如果我发现某人,我通常会使用 iptables 阻止 IP,然后人们会继续前进。
我经常会收到来自 Digital Ocean 的 IP 的猛烈攻击,但不会“太猛烈”,因此无需进一步调查,它们可能看起来像是真实的用户流量,只是它们在一天内总共发出了大量请求。查看它们的 DNS 请求后,我发现这些 IP 正在使用相当随机的 URL 模式监控/探测/搜索各种服务,可能使用暴力手段来查找易受攻击的系统。我想阻止这种使用,并试图禁止这些 IP。当然,他们又用另一个 IP 回来了,所以我想尝试禁止整个子网。
这样,普通用户仍然可以毫无问题地使用 Pi-hole,但 Digital Ocean 的那些 VPS 实例(或其他)暂时会停止使用。显然也有办法解决这个问题,但如果我提高门槛,他们可能会转向其他人。目前我对此没有意见。
因此我在 iptables 中添加了以下规则:
iptables -A INPUT -s 157.245.0.0/16 -j DROP
尽管 iptables 接受该规则且不做任何评论,但我仍然看到 Pi-hole 为该子网的 IP 提供服务。至少 Pi-hole 日志/统计数据告诉我的是这样。
我的 iptables 规则有问题吗?或者有没有更好的方法使用 iptables 创建子网范围的规则?我看到了范围参数,但认为定义子网方案会更直观,因此想使用它。
提前致谢!
编辑:这是 iptables-save 的输出:https://pastebin.com/Lm4zV1ii
答案1
使用 IPTables,规则按照它们在链中出现的顺序进行处理。您的系统已ufw
设置 Ubuntu 防火墙管理系统,并且已安装一组规则。
在您的具体示例中,数据包进入系统进入INPUT
链。在链中,第 41 行,数据包开始遍历链。该链包含多个规则,直到第 73 行ufw-before-logging-input
数据包被传递到链。ufw-user-input
在 中ufw-user-input
,第 111 行和第 110 行分别有接受来自端口 80 和 443 的数据包的规则。
现在,由于您添加的规则位于链的末尾INPUT
,这意味着这些规则永远不会被达到,因为数据包已经在ufw-user-input
链中被接受。
对于您的情况下,我建议您查找添加 DROP 规则的官方方法ufw
,而不是使用单独的iptables
命令绕过它。