fail2ban 不禁止 ssh 暴力破解,但正则表达式有效

问题描述 投票:0回答:10

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

问候, 鱼

ssh brute-force
10个回答
33
投票

这个问题很老了,但我遇到了同样的问题,经过多次搜索,终于找到了解决方案。

我的问题是由于我的时区发生变化:前段时间,我使用以下命令来设置正确的时区。

sudo dpkg-reconfigure tzdata

我的系统时间没问题,但 auth.log 中的条目时间确实发生了变化。这就是fail2ban的问题:它必须比较auth.log的条目来检查是否必须禁止、保留或取消禁止......并且由于时间错误,记录的条目总是被认为太旧。

我只需使用以下命令重新启动系统日志守护进程:

sudo service rsyslog restart

然后,auth.log 中的时间不再发生变化,fail2ban 成功完成了它的工作。

我希望这会有所帮助!


10
投票

在再次用 Google 搜索并在 ServerFault 上找到答案之前,我尝试了这里的所有解决方案:

运行

service rsyslog restart
就是我需要做的全部事情,现在它按预期工作(当然,这里的所有解决方案也有可能是必要的......)。与这个问题的发布者不同,我从未删除或编辑过日志文件,所以为什么这是我不知道的解决方案。


9
投票

好吧,这不是官方解决方案,但它确实有效:

3个月的时间完美运行,直到fail2ban升级并停止禁止。我可以看出我为解决这个问题付出了多大的努力,最终这是唯一有效的方法。

这应该有效

 sudo service fail2ban stop
 sudo service fail2ban start

这行不通

sudo service fail2ban restart

重要提示:使用另一台设备(3G 蜂窝)测试故意失败的 ssh 日志记录,以验证fail2ban 是否正常工作。如果没有,请重新停止/启动服务。有时有些监狱无法正确加载。永远不要相信!!!!!!

额外说明:

  • 使用jail.local
  • 启用 4 个监狱:ssh、dovecot、apache 和 wootwoot
  • 所有监狱都可以正常工作数月,没有任何问题
  • Ubuntu服务器14.04
  • 失败2禁令0.9

5
投票

我经常遇到这个问题(在 Debian 机器上),这与 tzdata 和错误的时间有关。如果正则表达式有效(并且它正在工作),唯一可以阻止 fai2ban 触发的事情就是日期/时间搞砸了。尝试安装 ntp 并保持同步您的日期。


4
投票

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

2
投票

我在 Ubuntu raring (13.04) 盒子上也有类似的行为。 Fail2ban 未能注意到 /var/log/auth.log 文件中的更改。 更改

jail.conf
文件中的 backend 值不会改变任何内容。

我最终通过使用 NeuroDebian 上的 Backport 版本安装最新版本的 Fail2ban 解决了这个问题,如 Fail2ban 网站的下载页面所述。


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

0
投票

我发现在 sshd 端口的更改生效之前有必要重新启动我的服务器...更改端口非常有效且简单。


0
投票

在我的例子中(手动安装fail2ban 1.0.2,Centos 7),通过设置

backend = auto
而不是
backend = systemd
解决了同样的问题。此设置应该位于您的
jail.conf
jail.local
文件中的某个位置。 希望这会对某人有所帮助。


0
投票

sudo apt installfail2ban sudo 服务fail2ban 启动 光盘 / cp /etc/fail2ban/jail.conf /etc/fail2ban/jain.local

© www.soinside.com 2019 - 2024. All rights reserved.