尽管 iptables 阻止了子网,但仍可处理请求

尽管 iptables 阻止了子网,但仍可处理请求

我在 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命令绕过它。

相关内容