我刚注意到我的服务器上有一个ssh暴力,它实际上应该被fail2ban禁止,但由于某种原因它并没有禁止它。大多数有fail2ban问题的人,似乎都有正则表达式的问题,这在这里似乎没问题。
jail.conf
的一部分[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
findtime = 6000
bantime = 86400
fail2ban-client status 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不会禁止,即使我有很多正则表达式匹配?
此致 鱼
答案 0 :(得分:19)
这个问题很老了,但我遇到了同样的问题,经过多次搜索,终于找到了解决方案。
我的问题是由于我的时区发生了变化:前段时间,我使用以下命令来设置正确的时区。
sudo dpkg-reconfigure tzdata
我的系统时间还可以,但是auth.log中的条目时间确实已经转移了。这就是fail2ban的问题:它必须比较auth.log的条目以检查它是否必须禁止,保留或取消...并且由于时间错误,记录的条目总是被认为太旧了。
我只需要使用:
重新启动syslog守护程序sudo service rsyslog restart
然后,auth.log中的时间不再转移,fail2ban成功完成了它的工作。
我希望这会有所帮助!
答案 1 :(得分:10)
在我再次使用Google搜索之前,我尝试了所有解决方案并在ServerFault找到答案:
我需要运行service rsyslog restart
,现在它按预期工作(当然,这里的所有解决方案都是必要的......)。与此问题的海报不同,我从未删除或编辑过日志文件,为什么这是我不知道的解决方案。
答案 2 :(得分:7)
好的,这不是官方解决方案,但确实有效:
完美工作3个月,直到fail2ban升级并停止禁止。我可以说我有多难以解决这个问题,最后这是唯一有效的方法。
这应该有效
sudo service fail2ban stop
sudo service fail2ban start
这不起作用
sudo service fail2ban restart
重要提示:使用其他设备(3G单元)测试故意失败的ssh日志记录以验证fail2ban是否正常工作。如果没有,服务停止/重新开始。有时一些jails无法正确加载。永远不要相信!!!!!
附注:
答案 3 :(得分:4)
通常当我遇到这个麻烦时(在Debian盒子上),它与tzdata和错误的时间有关。如果正则表达式正常工作(并且它正在工作),唯一可以阻止fai2ban进行诡计的事情就是日期/时间搞砸了。尝试安装ntp并保持同步日期。
答案 4 :(得分:4)
Fail2ban没有禁止和regexp匹配很多?可能是你的监狱错过了禁令行动。您有两种选择:
选项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) 只需编写此示例(示例)
,即可为所有jail包含全局操作# 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
BTW,在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
答案 5 :(得分:2)
我在Ubuntu raring(13.04)框中有类似的行为。 Fail2ban未能注意到 /var/log/auth.log 文件中的更改。
更改 jail.conf 文件中的backend
值并未发生任何变化。
我最终通过安装最新版本的Fail2ban来解决这个问题,使用Backport版本可以从NeuroDebian获得,如Fail2ban网站download page所述。
答案 6 :(得分:1)
有时这是因为__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
答案 7 :(得分:0)
我发现在更改sshd端口生效之前需要重新启动服务器...更改端口非常有效且简单。