Security

我可以在 Apache 中對 HTTP 基本身份驗證使用速率限制嗎?

  • December 3, 2020

所以我在我的伺服器上執行了一些流行的 Web 應用程序。我希望這些可以從任何電腦上訪問,而不會造成太多漏洞。

我使用 Apache 2.4.29 作為我的 HTTP 伺服器。我目前對攻擊者隱藏應用程序中潛在安全漏洞的想法是AuthType Basic為相關虛擬主機啟用 HTTP 基本身份驗證 () 作為附加安全層。當然,我只允許 SSL 連接。

現在這一切都很容易完成。但我的問題是:我怎樣才能最好地避免使用 HTTP 基本身份驗證的蠻力式攻擊?即,如何啟用速率限制?

我目前的計劃是這樣的:

由於我使用 ufw(簡單防火牆)來限制 SSH 連接,我想我可以在用於 HTTPS 的特定埠上做同樣的事情。但是,我看到了兩個問題:

  1. 攻擊者不能在Connection: Keep-Alive不重新連接的情況下使用並繼續嘗試不同的密碼嗎?所以限制傳入連接在這裡沒有任何用處。
  2. 如果我以某種方式禁用Connection: Keep-Alive,我想我會遇到底層 Web 應用程序的問題,因為它們需要大量單獨的連接,以便瀏覽器可以檢索其他文件。

*如果我可以指示 Apache 只為經過身份驗證的使用者保持連接並在嘗試失敗時斷開連接,那將是完美的。有沒有辦法做到這一點?*我實際上不確定預設行為是什麼,並且對 HTTP 了解不夠,無法輕鬆測試。

Apache 中的KeepAliveandMaxKeepAliveRequests設置顯然可以基於每個虛擬主機進行配置,但我不確定如何根據成功的身份驗證更改這些設置。

HTTP 基本身份驗證是通過在客戶端發出的每個請求(即每個資源)中發送一個附加標頭來完成的。

Authorization: Basic <credentials>

如果您未在請求中提供此標頭,系統將提示您提供憑據。

因此,沒有任何單一的登錄頁面可以通過任何類型的速率限製或防火牆規則來保護。限制所有頁面的速率也不是一種選擇。如果您將每個 IP 地址的速率限制為每秒僅一個請求,則有效使用者每秒只能獲取一個資源。因此,載入一個網頁、兩個樣式表和四個圖像至少需要 7 秒。

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