Ubuntu

如何在 fail2ban 中為監獄指定多個日誌文件?

  • December 17, 2020

嘿,

我正在使用 Ubuntu 15.10 和 fail2ban 0.9.3。Apache 設置有一堆 Apache 虛擬主機。

我的 Apache2 日誌文件位於子目錄中,每個 localhost 一個,例如'/var/log/apache2/vwww_example_vhost_com/,日誌文件位於該子目錄下,即error.logor access.log(or ssl_error.logand ssl_access.log)。

主要的 apache2 日誌文件(用於 localhost 和預設)位於/var/log/apache2.

理想情況下,我希望能夠對子目錄進行萬用字元,並在該子目錄下的任何日誌文件中讀取 fail2ban。

jail.local 手冊頁指出,為了指定多個日誌文件,您必須在每個日誌文件之間放置一個換行符和空格。這似乎不適用於萬用字元目錄。

這是其中一個監獄的預設配置:

[apache-auth]
port     = http,https
logpath  = %(apache_error_log)s
enabled  = true

目前我已經嘗試過:

[apache-auth]
port     = http,https
logpath  = %(apache_error_log)s
          /var/log/apache2/*/*error.log
enabled  = true

在帶有前導空格的換行符上使用輔助日誌文件路徑。此錯誤並service fail2ban restart失敗,並顯示一個神秘(且無用)的錯誤消息。

這失敗了:

[apache-auth]
port     = http,https
logpath  = /var/log/apache2/*/*error.log
enabled  = true

嘗試覆蓋%(apache_error_log)s變數 in/etc/fail2ban/paths-overrides.local也失敗:

[DEFAULT]
apache_error_log = /var/log/apache2/*error.log
              /var/log/apache2/*/*error.log

apache_access_log = /var/log/apache2/*access.log
              /var/log/apache2/*/*access.log

用空格指定日誌文件遮罩會給我“頭或尾”錯誤,/var/log/fail2ban.log但服務將啟動。但是,它根本不使用日誌文件。用分號分隔日誌文件遮罩會阻止 fail2ban 重新啟動。

我的結論是,我將不得不手動定義虛擬主機的目錄名稱,jail.local但我沒有找到任何明確說明您不能使用萬用字元子目錄的內容。

有沒有人對此有見解或解決方法?

編輯:我剛剛嘗試指定多個日誌文件目錄(目錄名稱拼寫)並使用相同的萬用字元文件名遮罩,paths-overrides.local這也導致fail2ban無法啟動。

到目前為止,目錄 glob 似乎沒有任何效果。

我找到的唯一解決方案是為每個子目錄創建一個單獨的條目。

我的每個虛擬主機在 /var/log/httpd 的子目錄中都有各自的錯誤/訪問日誌。

為了獲取錯誤日誌列表(例如),我使用了:

(ls -F /var/log/httpd/ | awk '/\// {print "/var/log/httpd/"$1"*error.log"}') | \
while read line; do \
   sed -i "/apache_error_log/a \\\t$line" /etc/fail2ban/paths-overrides.local ;
done

當然,重複相同的命令,將“錯誤”更改為“訪問”。

(ls -F /var/log/httpd/ | awk '/\// {print "/var/log/httpd/"$1"*access.log"}') | \
while read line; do \
   sed -i "/apache_access_log/a \\\t$line" /etc/fail2ban/paths-overrides.local ;
done

簽入fail2ban,文件列表按預期顯示

# fail2ban-client status apache-auth
Status for the jail: apache-auth
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  `- File list:    /var/log/httpd/error_log /var/log/httpd/myvhost/error_log
`- Actions
  |- Currently banned: 0
  |- Total banned: 0
  `- Banned IP list:   

也許不完全是您正在尋找的東西,但我希望這會有所幫助。

〜克雷洛請

引用自:https://serverfault.com/questions/748872