fail2ban 一直说已经禁止但实际上并没有禁止

fail2ban 一直说已经禁止但实际上并没有禁止

我刚刚配置了一个新服务器并安装了fail2ban,但是当我不断尝试使用错误的密码连接时它并没有禁止我

失败2ban.log:

2018-03-23 12:46:29,363 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:46:30,747 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:46:33,346 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:46:35,515 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:46:36,372 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:47:45,471 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:47:46,820 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:47:49,503 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:47:50,458 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:47:51,893 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:48:49,699 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:48:51,835 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:48:52,531 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:48:54,477 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:48:57,056 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:50:53,240 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:50:53,677 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:50:55,065 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:50:58,253 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:51:00,494 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:51:00,685 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:52:06,119 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:52:08,300 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:52:11,583 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:52:11,773 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:52:13,498 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:53:07,823 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:53:09,712 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:53:09,842 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:53:11,718 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:53:13,696 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:37,181 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:37,949 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:54:39,092 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:40,906 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:42,616 fail2ban.filter         [9756]: INFO    [sshd] Found [my ip]
2018-03-23 12:54:42,955 fail2ban.actions        [9756]: NOTICE  [sshd] [my ip] already banned
2018-03-23 12:54:52,074 fail2ban.action         [9756]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- stdout: ''
2018-03-23 12:54:52,075 fail2ban.action         [9756]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- stderr: ''
2018-03-23 12:54:52,075 fail2ban.action         [9756]: ERROR   iptables -w -n -L INPUT | grep -q 'f2b-sshd[ \t]' -- returned 1
2018-03-23 12:54:52,075 fail2ban.CommandAction  [9756]: ERROR   Invariant check failed. Trying to restore a sane environment
2018-03-23 12:54:52,180 fail2ban.action         [9756]: ERROR   iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
iptables -w -F f2b-sshd
iptables -w -X f2b-sshd -- stdout: ''
2018-03-23 12:54:52,181 fail2ban.action         [9756]: ERROR   iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
iptables -w -F f2b-sshd
iptables -w -X f2b-sshd -- stderr: "iptables v1.4.21: Couldn't load target `f2b-sshd':No such file or directory\n\nTry `iptables -h' or 'iptables --help' for more information.\niptables: No chain/target/match by that name.\niptables: No chain/target/match by that name.\n"
2018-03-23 12:54:52,181 fail2ban.action         [9756]: ERROR   iptables -w -D INPUT -p tcp -m multiport --dports ssh -j f2b-sshd
iptables -w -F f2b-sshd
iptables -w -X f2b-sshd -- returned 1
2018-03-23 12:54:52,181 fail2ban.actions        [9756]: ERROR   Failed to execute unban jail 'sshd' action 'iptables-multiport' info '{'matches': '2018-03-23T11:53:46.707058149-210-194-176.colo.transip.net sshd[27676]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=ip-[my ip].ip.prioritytelecom.net  user=root2018-03-23T11:53:48.733188149-210-194-176.colo.transip.net sshd[27676]: Failed password for root from [my ip] port 31224 ssh22018-03-23T11:54:51.709842149-210-194-176.colo.transip.net sshd[27676]: Failed password for root from [my ip] port 31224 ssh2', 'ip': '[my ip]', 'time': 1521802491.930057, 'failures': 3}': Error stopping action

当我跟踪日志文件时,我看到我的 ssh 登录尝试被记录,但在第三次尝试之后我只能继续尝试;例如,如果我在第十次尝试后使用正确的密码,它就会让我登录。

我也会时不时地在日志文件末尾看到错误。

我的本地监狱:

[DEFAULT]
#ban n hosts for one hour:
bantime = 3600

#maxtrys
maxretry = 3

# Override /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled = true

有谁知道为什么会发生这种情况?

答案1

看起来您的iptables配置不包含名为 的过滤器链f2b-sshd

首先,关于 的迷你入门iptables

iptables既是命令,又是 Linux 防火墙子系统的名称。该命令用于在 RAM 中设置防火墙规则。防火墙iptables规则首先排列成表:有默认filter表,但也有natmanglerawsecurity表,用于各种目的。fail2ban正在做流量过滤,所以它使用了filter表。

然后,这些表进一步分为过滤器链。每个表都有一定的标准链:对于filter表来说,标准链是INPUTFORWARDOUTPUTFORWARD仅当系统配置为为其他系统路由流量时,才会使用该链。该INPUT链处理该系统的传入流量。

如果fail2ban将其规则直接添加到INPUT链中,并在所有禁令到期时将该链清除干净,那么您将必须将对防火墙输入规则的完全控制权移交给fail2ban- 您无法轻松拥有任何自定义防火墙规则此外有什么fail2ban作用。这显然是不可取的,所以fail2ban不会这样做。

相反,fail2ban创建自己的过滤器链,它可以完全自行管理,并在启动时向链添加单个规则,以发送要通过的链INPUT进行处理的任何匹配流量。fail2ban

例如,当配置为 protected 时sshdfail2ban应在启动时执行以下命令:

iptables -N f2b-sshd
iptables -A f2b-sshd -j RETURN
iptables -I INPUT -p tcp -m multiport --dports <TCP ports configured for sshd protection> -j f2b-sshd

这些命令创建一个f2b-sshd过滤器链,设置RETURN为它的最后一个规则(这样当任何fail2ban规则被处理时,INPUT规则的正常处理将像没有一样继续fail2ban,最后,在表的开头添加一个规则INPUT以捕获任何SSH流量并首先将其发送到f2b-sshd链上。

现在,当fail2ban需要禁止某个 IP 地址用于 SSH 时,它只会向f2b-sshd链中插入一条新规则。

如果您正在使用firewalldiptables 或其他为您管理防火墙规则的系统,或者您手动清除所有规则iptables,那么这些初始规则以及可能的整个f2b-sshd过滤器链可能会被清除。您应该确保您可能使用的任何防火墙管理工具都维护 INPUT 链中的初始规则,并且f2b-sshd根本不触及该链。

代码片段末尾的错误消息表明fail2ban正在检查初始规则是否仍然存在(“不变检查”),并发现它们不存在。

答案2

问题是,禁令正在起作用,但攻击者正在使用持久连接,因此禁令不会立即生效,因为它仍然处于连接状态并且没有新的连接,发生这种情况时唯一的方法是重新启动邮件服务器

答案3

我只得处理这个问题。该问题与遵循 exim4 failure2ban 教程有关。 Jail.d/exim4.conf 文件包含以下内容:

[exim-spam]
port = smtp,ssmtp

实际需要的地方,因为 exim4 正在端口 25、464 上运行587,是这样的:

[exim-spam]
port = smtp,ssmtp,587

仅此而已。

基本上,所有过滤器都已正确设置,一切正常......但是:

  • 攻击来自端口 587
  • 并且配置文件指示fail2ban仅阻止端口25和465

因此,攻击当然会继续!因此,请使其适应您正在使用的协议(在本例中为 sshd)。

“netstat -an | more”、“iptables -L -n”和“lsof -i :587”是您的朋友。

相关内容