對 git.kernel.org 的請求中有 98% 是由機器人產生的,造成了巨大的寄生負載。

kernel.org 基礎設施的管理員 Konstantin Ryabtsev 公佈了對 git.kernel.org 服務流量的分析結果,該服務允許查看與內核開發相關的項目的 Git 存儲庫的內容。 Linux該服務每天處理約 6 萬個提交資訊請求,其中 66% 來自機器人,這些機器人會被 Anubis 系統攔截。 33% 的請求會經過 Anubis 系統的驗證,該系統只允許在暴力破解一個 JavaScript 值後才允許訪問,該值的 SHA-256 哈希值與伺服器發送的字串結合後,必須包含一定數量的前導零(此任務需要 CPU 資源來求解,但驗證不需要資源)。

雖然無法準確判斷這 33% 的請求者中哪些是真人,哪些是高級機器人,但根據請求的性質,可以得出結論:合法請求的總體佔比約為 2%,其餘 98% 來自爬蟲程序。機器人的一個特徵是直接請求隨機舊分支中不太可能被真人使用的舊提交。機器人活動會為系統帶來巨大的負擔。 服務 因為機器人不是透過「git clone」操作一次下載所有程式碼和提交歷史記錄,而是發送數十億個請求,透過網頁介面嘗試所有可能的選項,並重複使用不同的參數請求相同的資料。

透過以下方式屏蔽機器人 IP位址 隨著殭屍網路活動或瀏覽器插件變現,殭屍程式轉而使用數百萬個來自家庭或行動網路的隨機IP位址發送請求,自主系統很快就停止了運作。每個位址僅發送4-5個請求,因此在防火牆層面進行攔截毫無用處。

阿努比斯系統一度有效阻止了機器人程序,但隨著時間的推移,機器人程式逐漸適應了阿努比斯提供的計算方式。例如,機器人程式學會了解決難度等級為5的問題,但提高難度等級卻帶來了問題,因為即使是5級問題也需要幾秒鐘的計算時間,這對合法用戶來說非常煩人。

因此,在 kernel.org 基礎設施中處理爬蟲請求消耗的資源比所有其他類型的合法操作(包括「git clone」)都要多。 伺服器在任何給定時間,服務於 git.kernel.org 的 90 個 CPU 核心中,總有 14 到 16 個核心忙於向機器人顯示 Git 提交資訊。為了減輕負載,管理員目前正在嘗試縮減服務的功能,停用一些資源密集型操作,限制匿名訪問,並減少可用於導航的連結數量。

來源: opennet.ru

為具有 DDoS 保護、VPS VDS 服務器的站點購買可靠的主機 🔥 購買具備 DDoS 防護的可靠網站寄存服務,包括 VPS 和 VDS 伺服器 | ProHoster