fail2ban 的 logpath 可以使用 regex(正则表达式)

2 min

language: ja bn en es hi pt ru zh-cn zh-tw

你好,我是无能。

对于每个 *nix 系列的操作系统,当日志轮换设置不同时,/var/log/auth.log 可能会很快被归档,导致无法进行封禁,因此似乎可以使用如下正则表达式。

How! to! Use!

:/etc/fail2ban# cat jail.local 
[sshd]
ignoreip = 127.0.0.1/8 ::1
enabled = true
port    = all
logpath = /var/log/auth.log*
bantime = 10w
findtime = 10d
maxretry = 2

然后,如果查看 fail2ban-client status sshd

:/usr/local/etc/fail2ban # fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/auth.log /var/log/auth.log.2.bz2 /var/log/auth.log.1.bz2 /var/log/auth.log.6.bz2 /var/log/auth.log.3.bz2 /var/log/auth.log.4.bz2 /var/log/auth.log.5.bz2 /var/log/auth.log.0.bz2
`- Actions
   |- Currently banned: 158
   |- Total banned:     158

好像 .bz 文件也被列为目标了……它在看这些文件吗……?我当时这么想,但正常来说应该是不可能的吧 (´・ω・`)

虽然还没有仔细研究,但如果它能像 zgrep 那样智能地查看压缩二进制文件,那就太好了。

于是,我用 ls auth.log.*.bz2 | xargs bunzip2 解压并重启了 fail2ban,但被封禁的 IP 没有变化,所以它很可能也在查看压缩的二进制日志。

在此类软件中,不小心使用正则表达式,特别是 .* 等,通常会消耗不必要的资源,因此建议使用明确的正则表达式。

惊人的 HeznerVPS 机器

太可怕了。

:/etc/fail2ban# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
|  |- Currently failed: 814
|  |- Total failed:     132602
|  `- File list:        /var/log/auth.log.1 /var/log/auth.log
`- Actions
   |- Currently banned: 2503
   |- Total banned:     2503

竟然有 2503 个 IP……?

感觉获取到了一个美味的数据源,开心的 Dos。