持續的並發連接耗盡了我的伺服器儲存空間
如果這個問題出現在錯誤的論壇中,我提前道歉,這是我在這裡的第一個問題!
我的客戶使用阿里雲(中國的阿里巴巴雲)託管。我已經在他們的伺服器上部署了一個微型站點,其結構如下:
microsite.com -> CDN1 -> SLB -> 2x ECS -> DB ECS
oss.microsite.com -> CDN2 -> OSS
SLB 下的 ECS 實例具有粘性會話,僅提供 HTML 響應。所有其他文件(js、css 等)均來自 OSS 域。這些實例還使用數據庫來儲存會話數據(例如,使用者 IP 地址、上次活動的時間戳等)
3 週後,數據庫實例用完了 40GB 的儲存空間。當我查看它時,我看到了 2300 萬個會話條目。
ECS 實例在 100-150 個並發連接下,晝夜,24/7,儘管實際使用者(我們使用 GA 進行跟踪)可能每天 10-15 個(活動尚未開始)。
我很困惑,因為客戶端 IT 說這是“正常”而不是“攻擊”,因為它會“更嚴重”。他們沒有解釋這些流量來自哪裡。但是,我可以在訪問日誌(tail -f access.log)中看到不斷的請求流。
這些總是在那裡,無論白天還是黑夜,只要我 SSH 進入。GA 是空的,除非我打開微型站點或來自客戶端的某個人(因為連結尚未推送到媒體)。
有人有什麼建議嗎?在我看來,一些嘗試使伺服器耗盡資源,或者一些不成功的 DDoS。但是因為還是在100-200並發連接,所以阿里雲沒有啟動防火牆/安全規則。我無法訪問阿里雲控制台,只能通過 SSH 訪問伺服器。
我簡直不敢相信這是“正常的”。在 CloudFlare 上,我有機器人保護、javascript 挑戰等選項。阿里雲似乎什麼都沒有。或者他們根本不在乎。
一些技術資訊:
所有 ECS 實例都在 Ubuntu 20.04 上。Web 服務是 Apache2,執行 PHP7.4 和 PHP7.4-FPM。數據庫實例有 MySQL8。數據庫實例只允許來自 Web 伺服器實例的連接,而那些只允許來自 SLB(Server Load Balancer,相當於 AWS 上的 Elastic Load Balancer)的 HTTP 連接。這意味著所有流量仍然必須通過 SLB 到達其下的實例。
有沒有人經歷過這樣的事情?如果他們無法做到這一點,我該如何保護我的後端?
好的,我們發現了問題所在,所以我結束了這個問題,因為沒有 DDoS 或任何攻擊:
客戶端 IT 已經將他們的負載均衡器設置為機器槍伺服器實例,而我在訪問日誌中看到的所有流量實際上都是 - 健康檢查。
現在,當他們將每次檢查設置為合理的 2-3 分鐘時,它就消失了。
很抱歉給大家添麻煩了。