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。