fail2ban 不会禁止 vsftp 日志中的“匹配”IP

fail2ban 不会禁止 vsftp 日志中的“匹配”IP

使用 fail2ban 保护 vsftp 登录:

监狱.本地

[vsftpd]
enabled = true
bantime  = 600
findtime  = 5000
maxretry = 1
port = ftp,ftp-data
action = iptables-multiport
logpath = /var/log/vsftpd/vsftpd.log

正则表达式匹配,如您在此处所见:

fail2ban-regex /var/log/vsftpd/vsftpd.log /etc/fail2ban/filter.d/vsftpd.conf --print-all-matched

Running tests
=============

Use   failregex filter file : vsftpd, basedir: /etc/fail2ban
Use      datepattern : {^LN-BEG} : Default Detectors
Use         log file : /var/log/vsftpd/vsftpd.log
Use         encoding : UTF-8


Results
=======

Failregex: 23 total
|-  #) [# of hits] regular expression
|   2) [23] ^ \[pid \d+\] \[[^\]]+\] FAIL LOGIN: Client "<HOST>"(?:\s*$|,)
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [385] {^LN-BEG}(?:DAY )?MON Day %k:Minute:Second(?:\.Microseconds)?(?: ExYear)?
`-

Lines: 385 lines, 0 ignored, 23 matched, 362 missed
[processed in 0.03 sec]

|- Matched line(s):
|  Wed Mar  9 08:36:06 2022 [pid 2619415] [bla] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:36:13 2022 [pid 2619420] [bla] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:36:18 2022 [pid 2619422] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:36:30 2022 [pid 2619425] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:36:37 2022 [pid 2619508] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:36:45 2022 [pid 2619511] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:36:53 2022 [pid 2619514] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:47:39 2022 [pid 2620744] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:47:47 2022 [pid 2620746] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:47:55 2022 [pid 2620748] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:48:03 2022 [pid 2620763] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:48:12 2022 [pid 2620767] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:48:12 2022 [pid 2620766] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:55:07 2022 [pid 2621558] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:55:15 2022 [pid 2621560] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:55:23 2022 [pid 2621562] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:55:23 2022 [pid 2621564] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 08:55:26 2022 [pid 2621566] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 09:36:56 2022 [pid 2627379] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 09:37:48 2022 [pid 2627498] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 09:37:57 2022 [pid 2627500] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 09:37:57 2022 [pid 2627501] [blaas] FAIL LOGIN: Client "some_IP"
|  Wed Mar  9 09:37:58 2022 [pid 2627504] [blaas] FAIL LOGIN: Client "some_IP"
`-
Missed line(s): too many to print.  Use --print-all-missed to print all 362 lines

使用 fail2ban cli / fail2ban-client status vsftpd 检查

Status for the jail: vsftpd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- Journal matches:
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

知道什么原因可能导致不禁止“匹配”的 IP /如何进一步调试?

答案1

知道什么原因可能导致不禁止“匹配”的 IP /如何进一步调试?

错误backend(如果这是systemd您系统的默认设置)?请尝试backend = auto为此 jail 指定(它会自动选择与文件相关的监控后端)。

对于其他可能的原因,请参阅https://github.com/fail2ban/fail2ban/wiki/How-fail2ban-works

答案2

你为什么认为它没有被禁止?事实上它没有被禁止现在并不意味着监狱不起作用。

我在你的监狱日志中看到了一个特定的模式布拉斯:连续六次尝试,然后有些延迟(大约 10 分钟),然后再尝试六次,然后延迟一段时间,然后再尝试六次......

这可以有两种解释:

  1. 尝试六次后将禁止该账号 10 分钟。然后解除该账号的禁令。

  2. 你面临着聪明的bot,它了解 fail2ban 的典型行为,并能够确定 jail 设置(在哪个时间段尝试多少次会触发禁令)。这样的 bot 存在了很长时间。所以,它可能只是调整了自身,以免触发禁令操作。

为了解决这些问题,您需要启用惯犯jail 会扫描 fail2ban 自己的日志文件,查找被禁止和解禁次数过多的地址(例如,每天五个),并禁止它们很长一段时间,比如整整一个月。在第二种情况下,您还必须大大收紧 jail 限制,以便在机器人有机会确定您的 jail 设置之前用 recidive 捕获它。

总是读日志档案(也许/var/log/fail2ban.log),不是正则表达式匹配助手。该助手专门用于调试导致命中的匹配。当正则表达式匹配器已经调试并正常工作时,它不会帮助调试禁止行为。


我重新阅读了你的问题,注意到了 jail 的定义:禁令时间实际上设置为 10 分钟。如果我可以在不查看设置的情况下确定这一点,为什么机器人不能呢?

相关内容