Nginx

當您啟用 http 到 https 重定向時,使用 fail2ban 阻止 301 暴力破解是否明智?

  • September 8, 2019

最近我的伺服器開始受到匿名掃描器/蠻力的轟炸。

這就是攻擊後我的 nginx access.log 的樣子:

xxx.xxx.xxx.xxx - - [07/Sep/2019:23:30:16 +0200] "GET /phpMyAdmin/index.php HTTP/1.1" 404 548 "-" "Mozilla/5.0..
xxx.xxx.xxx.xxx - - [07/Sep/2019:23:30:18 +0200] "GET /admin/index.php HTTP/1.1" 404 548 "-" "Mozilla/5.0..

連同他們試圖訪問的大量其他網址/管理頁面/隨機名稱。我做了一些研究,fail2ban 出現了。所以我安裝了它。

我把它打開了一段時間,但攻擊又發生了。我意識到預設設置[nginx-botsearch]並不能擷取所有攻擊,更不用說它的日誌路徑配置錯誤了。

我做了一些Google搜尋並確定了這個自定義過濾器:

# /etc/fail2ban/jail.local

[nginx-404-errors]
enabled = true
port     = http,https
logpath  = /var/log/nginx/*.log
maxretry = 2

# /etc/fail2ban/filter.d/nginx-404-errors.conf

[Definition]
failregex = ^<HOST>.*"(GET|POST|HEAD).*" (404|444|403|400) .*$
ignoreregex =

這工作得很好,但攻擊者/s 決定點擊 http。但問題是我在 nginx 上有一個 http 到 https 的重定向規則。

server {
   listen 80;
   server_name example.com www.example.com;
   return 301 https://$server_name$request_uri;
}

所以現在我得到了大量的 301 重定向登錄access.log。我想也許我應該在301上面使用的正則表達式中添加一個。所以現在是:

failregex = ^<HOST>.*"(GET|POST|HEAD).*" (404|444|403|400|301) .*$

攻擊暫時停止。但我擔心普通訪問者在嘗試通過 http 訪問該站點時可能會遇到麻煩,而 fail2ban 可能會選擇他們。

這是我應該減輕這種蠻力攻擊的方式嗎?還是我應該採取不同的路線?

我會考慮您的頁面如何在 HTML 中連結。如果您的訪問者只獲得https://-Links,一旦他升級到 https 的連接,您就可以保持 301-Bans 處於活動狀態。如果您網站上的每一次點擊都會導致 301 重定向到它的 https 等效項,那麼這樣做顯然是不明智的。另外,我建議將 301 的合法數量增加到 10 或 15。

更成問題的是僅 2 次點擊 404 頁面後的禁令。這將使在您的網站上使用內容管理系統變得非常困難,因為每次嘗試連結到不存在的圖像或 URL 都會導致 BAN。將有效限制提高到兩位數。十個 404 請求不會破壞您的伺服器。即使在合法使用情況下,它們也會經常發生,尤其是在多語言站點、缺少 favicon.ico、新頁面部署、延遲圖像上傳等…

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