Fail2ban 已被监禁,但 IP 仍可访问服务器

Fail2ban 已被监禁,但 IP 仍可访问服务器

我有一台服务器运行着许多 WordPress 网站,这些网站在多次登录失败后都会拒绝来自 IP 的登录。步骤如下:

  1. 来自某个 IP 的 3 次登录失败 = WP 拒绝来自该 IP 的登录 10 分钟(1 级锁定)
  2. 第二次 1 级锁定后,将转至 2 级,届时 IP 将被拒绝 1 小时

此外,WP 安全插件会写入服务器上的一个文件(级别 3?)。这意味着我们可以跨该服务器上托管的站点汇集数据。现在使用 Fail2Ban,我们会在 1 个月内查找 3 次 3 级锁定,然后在服务器级别禁止 3 个月。

然而,WP 插件仍然显示这些相同 IP 地址重复被锁定。这意味着犯罪者仍在访问此服务器上托管的网站。

如果我查看服务器日志,我可以看到锁定信息被写入正确的文件。我还可以看到 Fail2Ban 和相关 jail/操作正在检测重复的 IP/违规者并禁止他们。

现在,如果我运行以下命令:

iptables -L

我得到类似这样的输出(为简洁起见进行了编辑):

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
f2b-WordPress  tcp  --  anywhere             anywhere            multiport dports http,https
f2b-Http-Get-Dos  tcp  --  anywhere             anywhere             multiport dports http,https
.....

并进一步如下:

Chain f2b-WordPress (1 references)
target     prot opt source               destination         
REJECT     all  --  dedic980.hidehost.net  anywhere             reject-with icmp-port-unreachable
REJECT     all  --  dedic693.hidehost.net  anywhere             reject-with icmp-port-unreachable
RETURN     all  --  anywhere             anywhere

因此,我可以看到我的监狱被触发了,并且与所用 IP 相关的主机名被拒绝了,但用户仍然可以通过重复使用的相同 IP 访问服务器。因此,很明显他们仍然可以访问服务器上的网站,并试图强行进入网站管理员。

这需要尽快停止。

因此,我假设 iptables 阻止的是主机名而不是 IP。由于此主机名似乎来自旨在隐藏真实主机名的服务,因此我认为这是问题的原因,即:iptables 阻止了错误的主机名。但也许我错了……如果是这样的话,我欢迎更好的解决方案。

在此基础上,我对 /etc/fail2ban/jail.conf 进行了如下编辑(我知道我应该创建一个本地版本):

# "usedns" specifies if jails should trust hostnames in logs,
#   warn when DNS lookups are performed, or ignore all hostnames in logs
#
# yes:   if a hostname is encountered, a DNS lookup will be performed.
# warn:  if a hostname is encountered, a DNS lookup will be performed,
#        but it will be logged as a warning.
# no:    if a hostname is encountered, will not be used for banning,
#        but it will be logged as info.
# usedns = warn
usedns = no

然后,我保存了所有内容并重新启动了 fail2ban 服务。日志文件表明一切运行正常,并且 wordpress jail 完成了其工作并禁止了此特定用户使用的 2 个 IP。

然而,从另一个角度看iptables -L,主机名已被阻止,而不是 IP .....

那么,我现在该做什么?

更新

我刚刚通过 Webmin > Linux 防火墙(我认为它使用了防火墙)将两个 IP 手动添加到 iptables,然后运行,iptables -L显示的是主机名而不是我输入的 IP。那么,这是 iptables 将 IP 转换为主机名而不是 fail2ban 吗?如果是这样,为什么我手动添加规则的其他 20 个 IP 都显示为其 IP 而不是主机名?

答案1

规则将阻止新连接,而不是现有连接。只要保持连接处于活动状态,它们就能够进行查询。

要断开现有连接,请在已建立连接的接受规则上方添加拒绝规则的副本。一旦连接断开,就删除该规则。

您应该能够在命令“netstat -ant | grep EST”的输出中看到连接。

如果他们继续尝试,您可能需要手动添加规则。Fail2ban 只会在 bantime 设置指定的时间段内禁止连接。手动添加的规则应该有效。

相关内容