我刚刚配置了一个新服务器并安装了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
表,但也有nat
、mangle
、raw
和security
表,用于各种目的。fail2ban
正在做流量过滤,所以它使用了filter
表。
然后,这些表进一步分为过滤器链。每个表都有一定的标准链:对于filter
表来说,标准链是INPUT
、FORWARD
和OUTPUT
。FORWARD
仅当系统配置为为其他系统路由流量时,才会使用该链。该INPUT
链处理该系统的传入流量。
如果fail2ban
将其规则直接添加到INPUT
链中,并在所有禁令到期时将该链清除干净,那么您将必须将对防火墙输入规则的完全控制权移交给fail2ban
- 您无法轻松拥有任何自定义防火墙规则此外有什么fail2ban
作用。这显然是不可取的,所以fail2ban
不会这样做。
相反,fail2ban
创建自己的过滤器链,它可以完全自行管理,并在启动时向链添加单个规则,以发送要通过的链INPUT
进行处理的任何匹配流量。fail2ban
例如,当配置为 protected 时sshd
,fail2ban
应在启动时执行以下命令:
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
链中插入一条新规则。
如果您正在使用firewalld
iptables 或其他为您管理防火墙规则的系统,或者您手动清除所有规则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”是您的朋友。