
我們一直在處理對身份驗證 URL 的持續攻擊,每天有數百萬個請求,我猜測他們正在嘗試暴力破解密碼。
每當我們使用伺服器防火牆封鎖該 IP 時,幾秒鐘後,攻擊就會從不同的 IP 再次開始。
我們最終實現了透過機架攻擊和自訂程式碼進行限制的組合,以動態阻止防火牆中的 IP。但隨著我們提高了軟體的安全性,攻擊者也提高了安全性,現在我們看到他們發出的每個請求都是從不同的IP 完成的,每個IP 一次調用,每秒仍然有幾次,雖然數量不多,但仍然是一個問題。
現在我想知道我還能做些什麼來防止這種情況,我們嘗試了重新驗證碼,但很快就用完了每月配額,然後沒有人可以登入。
我正在研究 Nginx 速率限制器,但從我所看到的來看,它也使用 IP,考慮到它們現在為每個請求輪換 IP,有沒有辦法可以實現這一點?
關於如何處理這個問題還有其他建議嗎,也許你們中的一個人也經歷過同樣的事情?
堆疊:Nginx 和 Rails 4、Ubuntu 16。
答案1
透過速率限制,您可以過濾掉一些高容量的密碼噴霧器,這很有幫助。然而,當攻擊者擁有許多 IP 位址、快速輪換這些位址並將請求限制為人類速率時,僅基於 IP 的速率限制將不起作用。
我們嘗試了重新驗證碼,但很快就用完了每月配額,然後沒有人可以登入。
支付驗證碼服務費用並觀察該服務當月的大規模運作。如果您不喜歡這個定價,請查看備擇方案。驗證碼例如,有一個基本的免費套餐。
更根本的是,用更好的東西替換密碼,可能是硬體安全金鑰或生物辨識技術。或至少用額外的身份驗證因素來補充密碼。存在執行此操作的標準,即 FIDO2。對於非使用者互動憑證,ssh 金鑰、x509 憑證或產生的 API 金鑰也比使用者選擇的密碼更好。