我刚刚注意到我的服务器上有一个 ssh 暴力破解,它实际上应该被fail2ban 禁止,但由于某种原因它没有禁止它。大多数遇到fail2ban问题的人似乎都遇到了他们的正则表达式的问题,这在这里似乎没问题。
部分jail.conf
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
findtime = 6000
bantime = 86400
fail2ban-客户端状态ssh
Status for the jail: ssh
|- filter
| |- File list: /var/log/auth.log
| |- Currently failed: 0
| `- Total failed: 0
`- action
|- Currently banned: 0
| `- IP list:
`- Total banned: 0
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
Running tests
=============
Use regex file : /etc/fail2ban/filter.d/sshd.conf
Use log file : /var/log/auth.log
Results
=======
Failregex
|- Regular expressions:
| [1] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?Authentication failure for .* from <HOST>\s*$
| [2] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*(?:error: PAM: )?User not known to the underlying authentication module for .* from <HOST>\s*$
| [3] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*Failed (?:password|publickey) for .* from <HOST>(?: port \d*)?(?: ssh\d*)?$
| [4] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*ROOT LOGIN REFUSED.* FROM <HOST>\s*$
| [5] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*[iI](?:llegal|nvalid) user .* from <HOST>\s*$
| [6] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*User .+ from <HOST> not allowed because not listed in AllowUsers$
| [7] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*authentication failure; logname=\S* uid=\S* euid=\S* tty=\S* ruser=\S* rhost=<HOST>(?:\s+user=.*)?\s*$
| [8] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*refused connect from \S+ \(<HOST>\)\s*$
| [9] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\S
+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*Address <HOST> .* POSSIBLE BREAK-IN ATTEMPT!*\s*$
| [10] ^\s*(?:\S+ )?(?:kernel: \[\d+\.\d+\] )?(?:@vserver_\S+ )?(?:(?:\[\d+\])?:\s+[\[\(]?sshd(?:\(\S+\))?[\]\)]?:?|[\[\(]?sshd(?:\(\
S+\))?[\]\)]?:?(?:\[\d+\])?:)?\s*User .+ from <HOST> not allowed because none of user's groups are listed in AllowGroups\s*$
|
`- Number of matches:
[1] 0 match(es)
[2] 0 match(es)
[3] 380 match(es)
[4] 0 match(es)
[5] 353 match(es)
[6] 26 match(es)
[7] 0 match(es)
[8] 0 match(es)
[9] 0 match(es)
[10] 0 match(es)
Ignoreregex
|- Regular expressions:
|
`- Number of matches:
Summary
=======
Addresses found:
[1]
[2]
[3]
198.245.50.151 (Sat Dec 21 15:18:12 2013)
198.245.50.151 (Sat Dec 21 15:18:15 2013)
198.245.50.151 (Sat Dec 21 15:18:18 2013)
198.245.50.151 (Sat Dec 21 15:18:21 2013)
198.245.50.151 (Sat Dec 21 15:18:24 2013)
..................
Date template hits:
23379 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
..................
Success, the total number of match is 759
有什么想法吗,为什么fail2ban不禁止,即使我有很多正则表达式匹配?
问候, 鱼
这个问题很老了,但我遇到了同样的问题,经过多次搜索,终于找到了解决方案。
我的问题是由于我的时区发生变化:前段时间,我使用以下命令来设置正确的时区。
sudo dpkg-reconfigure tzdata
我的系统时间没问题,但 auth.log 中的条目时间确实发生了变化。这就是fail2ban的问题:它必须比较auth.log的条目来检查是否必须禁止、保留或取消禁止......并且由于时间错误,记录的条目总是被认为太旧。
我只需使用以下命令重新启动系统日志守护进程:
sudo service rsyslog restart
然后,auth.log 中的时间不再发生变化,fail2ban 成功完成了它的工作。
我希望这会有所帮助!
在再次用 Google 搜索并在 ServerFault 上找到答案之前,我尝试了这里的所有解决方案:
运行
service rsyslog restart
就是我需要做的全部事情,现在它按预期工作(当然,这里的所有解决方案也有可能是必要的......)。与这个问题的发布者不同,我从未删除或编辑过日志文件,所以为什么这是我不知道的解决方案。
好吧,这不是官方解决方案,但它确实有效:
3个月的时间完美运行,直到fail2ban升级并停止禁止。我可以看出我为解决这个问题付出了多大的努力,最终这是唯一有效的方法。
这应该有效
sudo service fail2ban stop
sudo service fail2ban start
这行不通
sudo service fail2ban restart
重要提示:使用另一台设备(3G 蜂窝)测试故意失败的 ssh 日志记录,以验证fail2ban 是否正常工作。如果没有,请重新停止/启动服务。有时有些监狱无法正确加载。永远不要相信!!!!!!
额外说明:
我经常遇到这个问题(在 Debian 机器上),这与 tzdata 和错误的时间有关。如果正则表达式有效(并且它正在工作),唯一可以阻止 fai2ban 触发的事情就是日期/时间搞砸了。尝试安装 ntp 并保持同步您的日期。
Fail2ban 没有禁止和正则表达式匹配很多?您的监狱可能缺少禁令行动。您有两个选择:
选项1) 在你的监狱中 [ssh] 包括
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
action = %(action_mwl)s # <<== THIS IS FOR BANNING
maxretry = 6
findtime = 6000
bantime = 86400
选项2) 包括对所有监狱的全球行动,只是写下这个(示例)
# Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
findtime = 6000
bantime = 86400
顺便说一句,在jail.conf 的顶部,我可以阅读使用jail.local 而不是jail.conf 的建议。遵循他们的指示可能会有所帮助:
To avoid merges during upgrades DO NOT MODIFY THIS FILE
# and rather provide your changes in /etc/fail2ban/jail.local
我在 Ubuntu raring (13.04) 盒子上也有类似的行为。 Fail2ban 未能注意到 /var/log/auth.log 文件中的更改。 更改
jail.conf文件中的
backend
值不会改变任何内容。
我最终通过使用 NeuroDebian 上的 Backport 版本安装最新版本的 Fail2ban 解决了这个问题,如 Fail2ban 网站的下载页面所述。
有时这是因为
__bsd_syslog_verbose
是错误的。 fail2ban 期望 /var/log/auth.log 以 YYYY.MM.DD
开头(即:2014.10.15),但日志读取为 MMM DD
(即:10 月 15 日)
要解决此问题,您需要执行以下操作:
cp /etc/fail2ban/filter.d/common.conf /etc/fail2ban/filter.d/common.local
编辑
common.local
并设置:
__bsd_syslog_verbose = (<[^.]+ [^.]+>)
重新启动fail2ban:
Ubuntu(不要使用重启):
sudo service fail2ban stop
sudo service fail2ban start
我发现在 sshd 端口的更改生效之前有必要重新启动我的服务器...更改端口非常有效且简单。
在我的例子中(手动安装fail2ban 1.0.2,Centos 7),通过设置
backend = auto
而不是 backend = systemd
解决了同样的问题。此设置应该位于您的 jail.conf
或 jail.local
文件中的某个位置。
希望这会对某人有所帮助。
sudo apt installfail2ban sudo 服务fail2ban 启动 光盘 / cp /etc/fail2ban/jail.conf /etc/fail2ban/jain.local