我知道如何使用fail2ban 以及如何配置jail,但我对它的实际工作方式并不满意。
问题是,有一个特别的监狱选项激起了我的好奇心:findtime.
当我配置过滤器时,需要使用HOST关键字(匹配IP地址),以便fail2ban可以知道IP进行比较并在必要时禁止。好吧。
但是时间没有这样的东西:fail2ban 无法知道将一行添加到日志文件的确切时间,因为没有TIME关键字,对吧?实际上,它可以扫描文件而无需任何时间,它仍然可以工作。
我猜这意味着fail2ban 正在定期扫描文件:它在内部设置了一个扫描时间,因此它可以findtime通过比较自己的扫描日期来处理选项。
首先,我说得对吗?如果是,扫描频率是多少?如果要经常扫描的大日志文件很多,这不是瓶颈吗?
那么,如果扫描频率优于findtime选项会发生什么?这是否意味着fail2ban适应findtime它发现的设置其最小扫描频率的最小选项?
首先。这(也许)不是答案,但可能比评论更好(并且有点长)。
找到你的陈述:
实际上,它可以扫描文件而无需任何时间,它仍然可以工作。
与文档冲突。你说的工作是什么意思?
如果您要创建自己的 failregex 表达式,以下是您应该了解的一些事项:
[...]
为了使日志行与您的 failregex 匹配,它实际上必须匹配两部分:该行的开头必须匹配时间戳模式或 regex,该行的其余部分必须与您的 failregex 匹配。如果failregex 以前导^ 为锚定,则锚定指的是该行剩余部分的开始,在时间戳和中间空格之后。
当前没有记录匹配时间戳的模式或正则表达式,用户无法阅读或设置。请参阅Debian 错误 #491253。如果您的日志具有fail2ban 不期望的时间戳格式,这是一个问题,因为它将无法匹配任何行。因此,您应该针对示例日志行测试任何新的 failregex,如下例所示,以确保它匹配。如果fail2ban 无法识别您的日志时间戳,那么您有两个选择:要么重新配置您的守护进程,以使用更常见格式的时间戳记录日志,例如在上面的示例日志行中;或提交错误报告,要求包含您的时间戳格式。
请注意,日志文件可以配置为包括时间戳以及时间戳的格式。(这包括评论中提到的dmesg。)
另请参阅此线程,特别是消息 #14 和 #19:
请注意,您还可以使用以下命令进行测试:
fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
Run Code Online (Sandbox Code Playgroud)
$ fail2ban-regex ' [1.2.3.4] authentication failed' '\[<HOST>\] authentication failed'
Running tests
=============
Use failregex line : \[<HOST>\] authentication failed
Use single line : [1.2.3.4] authentication failed
Results
=======
Failregex: 0 total
Ignoreregex: 0 total
Date template hits:
Lines: 1 lines, 0 ignored, 0 matched, 1 missed
|- Missed line(s):
| [1.2.3.4] authentication failed
`-
Run Code Online (Sandbox Code Playgroud)
$ fail2ban-regex 'Jul 18 12:13:01 [1.2.3.4] authentication failed' '\[<HOST>\] authentication failed'
Running tests
=============
Use failregex line : \[<HOST>\] authentication failed
Use single line : Jul 18 12:13:01 [1.2.3.4] authentication failed
Results
=======
Failregex: 1 total
|- #) [# of hits] regular expression
| 1) [1] \[<HOST>\] authentication failed
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [1] MONTH Day Hour:Minute:Second
`-
Lines: 1 lines, 0 ignored, 1 matched, 0 missed
Run Code Online (Sandbox Code Playgroud)
评估反应时间是相当困难的。Fail2ban在检查要扫描的新日志之前等待1 秒。在大多数情况下,这应该没问题。但是,可能会出现比 maxretry 指定的更多的登录失败。
在这方面也请参阅此线程:Re: Bug#481265: fail2ban: Poll interval is not configure。
但在可选但推荐的软件之一下找到Gamin。
Gamin 是一个文件更改监视器。Gamin 极大地受益于启用“inotify”的内核。因此,不再需要主动轮询来获取文件修改。
如果安装了 Gamin 并且backendinjail.conf设置为auto(或gamin) - 将使用 Gamin。
| 归档时间: |
|
| 查看次数: |
6975 次 |
| 最近记录: |