fail2ban没有禁止ssh暴力,但正则表达式工作

时间:2013-12-21 14:42:02

标签: ssh brute-force

我刚注意到我的服务器上有一个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不会禁止,即使我有很多正则表达式匹配?

此致 鱼

8 个答案:

答案 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无法正确加载。永远不要相信!!!!!

附注:

  • 使用jail.local
  • 启用了4个jail:ssh,dovecot,apache和wootwoot
  • 所有监狱作为魅力工作几个月没有问题
  • Ubuntu服务器14.04
  • fail2ban 0.9

答案 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端口生效之前需要重新启动服务器...更改端口非常有效且简单。