如何實時監測分析X-Forwarded-For偽造——其實就是看XFF和源IP是否存在多對一關系


關鍵詞:全流量分析、網絡安全、X-Forwarded-For、HTTP協議分析

什么是X-Forwarded-For

如果要問當下最走紅的應用層協議,當HTTP莫屬,一個無狀態維護協議,其連接基於TCP,在HTTP協議頭部沒有IP地址字段。所以,如果要在應用層保存IP地址信息(應用服務器統計訪問者信息的主要來源之一),只能通過X-Forwarded-For頭部字段來實現。

X-Forwarded-For位於HTTP協議的請求頭部,屬於HTTP的頭部擴展。在HTTP/1.1(RFC 2616)協議規范中並沒有對X-Forwarded-For有明確的定義。最開始由著名的代理軟件Squid(見www.squid-cache.org)引入,用來傳遞HTTP請求端的真實IP地址。如今,X-Forwarded-For已成為事實上的標准,各大HTTP代理、負載均衡等轉發服務都在廣泛使用它,並在RFC 7239(Forwarded HTTP Extension)標准中收錄。

下圖是X-Forwarded-For格式,越靠近左邊的地址距離服務器越遠,每經過一層代理就在后面加上該代理地址。X-Forwarded-For信息除了在真實代理環境中被正常使用外,其信息也可以通過偽造形成。

網深科技NetInside HTTP協議分析

如何獲取真實的客戶端IP地址

X-Forwarded-For地址可以偽造,那該如何獲取客戶端真實IP地址呢?

開發層面,在開發語言中能夠獲取Remote Address,該地址就是真實的客戶端IP地址,用來與應用服務器建立TCP連接,該地址無法偽造,如果偽造則連接無法成功建立,繼而不會后面的HTTP訪問存在。

運維層面,全流量分析系統實時采集和分析TCP五元組,對所有訪問服務器的客戶端地址統計和記錄,並按需顯示訪問行為特征。

真實的客戶端IP地址就是我們常說的TCP三步握手中發起連接請求的IP地址。

X-Forwarded-For偽造訪問有什么危害

前面已說過,X-Forwarded-For中IP可以偽造。那么,這種偽造會帶來什么危害呢,下面列舉幾種:

  1. 通過偽造IP地址,繞過后台訪問地址限制;
  2. 當前端服務器通過X-Forwarded-For信息判斷來訪地址時,通過修改X-Forwarded-For信息可實現撞庫和爆破;
  3. 惡意爬蟲X-Forwarded-For偽造,造成服務器負荷過重,甚至無法正常提供服務;
  4. X-Forwarded-For偽造也可用於某些CTF題目作弊;
  5. 某些點贊投票系統,如果是基於訪問者IP地址統計投票數量,那么通過修改X-Forwarded-For地址,可進行刷票行為;
  6. 還有更多…

如何實時分析X-Forwarded-For偽造訪問

既然X-Forwarded-For偽造危害如此之大,在系統運維和安全防御中該如何實時分析和發現呢就顯得尤為重要。

對於X-Forwarded-For偽造行為的監測分析主要從2個層面進行。

首先,獲知IP與應用系統之間的連接信息,這里的IP地址為上文中提及的Remote Address,即真實IP地址,偽造地址的客戶端連接服務器的數量會明顯高於其它地址的對象。

下圖顯示服務器在一段時間內的運行狀況,其中連接的IP地址信息部分,顯示連接服務器最多的IP地址信息。

網深科技NetInside HTTP協議分析

其次,查看該地址訪問系統的應用信息,網深科技全流量分析系統可自動發現該地址偽造的IP地址及這些偽造地址訪問的應用內容信息。

網深科技NetInside HTTP協議分析

隨機打開上圖中任意一個應用訪問數據包,即可查看真實的訪問信息。

NetInside系統HTTP解碼分析

或者使用一鍵導出內容功能,在文本編輯工具打開查看。

下圖為另一個X-Forwarded-For偽造訪問例子。

網深科技NetInside系統分析

如何防御

鑒於X-Forwarded-For偽造存在諸多危害,其防御工作絕對不可輕視。以下是X-Forwarded-For偽造行為的主流防御方法,供參考。

  • 直接對外提供服務的 Web 應用,為了安全起見,只能通過 Remote Address 獲取 IP,不能相信任何HTTP請求頭部信息;
  • 使用了 Nginx 等 Web服務器反向代理的 Web 應用,在配置正確的前提下,要用 X-Forwarded-For 最后一節 或 X-Real-IP 來獲取 IP(因為 Remote Address 得到的是 Nginx 所在服務器的內網 IP);同時還應該禁止 Web 應用直接對外提供服務;
  • 在某些特定應用場景,例如通過IP地址顯示所在區域天氣等,可從 X-Forwarded-For 靠前的位置獲取 IP,但必須需要校驗 IP 格式合法性。

目前很多Web 應用(例如獲取用戶所在地區,基於 IP 做訪問頻率控制,禁止某些IP訪問等等),為了獲取用戶真正的 IP,如果從 HTTP 請求頭中獲取 IP地址。這些情況下,必須確保獲取到的IP地址是真實可靠的。

文中使用的工具除Wireshark外,還有網深科技全流量分析系統,該系統通過旁路采集網絡流量,實時解碼2-7層協議信息,智能分析所有應用系統訪問情況,精確發現異常X-Forwarded-For偽造行為。

欲獲取更多信息咨詢,請關注公眾號“數字化性能管理”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM