Linux

無法理解此範例 fail2ban 規則

  • March 18, 2015

我正在嘗試保護我的管理員和使用者登錄頁面免受暴力攻擊。我已經設置了 iptables,我能找到的最接近的看起來很有用的是:

監獄檔案:

[nginx-login]
enabled = true
filter = nginx-login
action = iptables-multiport[name=NoLoginFailures, port="http,https"]
logpath = /var/log/nginx*/*access*.log
bantime = 600 # 10 minutes
maxretry = 6

/etc/fail2ban/filter.d/nginx-login.conf

# Blocks IPs that fail to authenticate using web application's log in page.
# Scan access log for HTTP 200 + POST /sessions => failed log in.
[Definition]
failregex = ^<HOST> -.*POST /sessions HTTP/1\.." 200
ignoreregex =

我似乎無法理解它在這方面做了什麼。首先,結果 200 表示登錄成功,所以我看不到它會如何檢測無效登錄。

誰能解釋一下這段程式碼在做什麼以及為什麼它可能被用來阻止暴力登錄?

我似乎無法理解它在這方面做了什麼。首先,結果為200表示登錄成功,

不,這只是OK. 所以伺服器在協議層沒有遇到任何問題,伺服器上執行的應用程序也沒有任何嚴重的問題(4xx 和 5xx)。這僅意味著將提供一個頁面。

所以我看不到它將如何檢測無效登錄

它沒有。它只計算 IP/session通過 POST 呼叫 URL 的頻率(送出 HTML 表單)。

failregex = ^<HOST> -.*POST /sessions HTTP/1\.." 200

在日誌中此行出現 6 次後(因此使用者送出表單 6 次),使用者獲取被阻止。

maxretry = 6

阻塞bantime的時間是 ,fail2ban 向後看的時間是findtime。預設情況下,這兩個值都是 600 秒,因此是 5 分鐘。

要僅禁止失敗的登錄,您必須從應用程序中記錄它們,因為如果登錄(由 Web 應用程序處理)失敗或成功,網路伺服器現在不會這樣做。

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