簡體   English   中英

欺騙HTTP請求的始發IP地址

[英]Spoofing the origination IP address of an HTTP request

這只需要在單個子網上工作,不得惡意使用。

我有一個用Python編寫的負載測試工具,它基本上會在URL上發出HTTP請求。 我需要針對基於IP的負載均衡器運行性能測試,因此請求必須來自一系列IP。 大多數商業性能工具都提供此功能,但我想將其構建到我自己的工具中。

該工具使用Python的urllib2進行傳輸。 是否可以為構成請求的數據包發送帶有欺騙IP地址的HTTP請求?

這是對HTTP的誤解。 HTTP協議基於TCP TCP協議依賴於3次握手來初始化請求。

alt text http://upload.wikimedia.org/wikipedia/commons/archive/c/c7/20051221162333!300px-Tcp-handshake.png

毋庸置疑,如果您欺騙原始IP地址,您將永遠不會超過同步階段,也不會發送任何HTTP信息(服務器無法將其發送給合法主機)。

如果您需要測試IP負載均衡器,則不是這樣做的。

您想要設置用於連接的源地址。 谷歌搜索“urllib2源地址”給出http://bugs.python.org/file9988/urllib2_util.py 我沒試過。

您運行的系統需要配置您正在測試的IP。

請注意,正如我昨天剛剛學到的那樣:

我想你已經暗示你已經知道了,但是對HTTP請求的任何響應都會轉到標題中顯示的IP地址。 因此,如果您想要查看這些響應,則需要控制路由器並進行設置,以便將欺騙性IP全部路由回您用於查看響應的IP。

您可以在Linux機器上使用IP別名,並根據需要設置多個IP地址。 問題在於,除非將其設置為其他網絡並為該網絡設置顯式路由,否則無法預測IP標頭中將標記哪些IP。 即 -

current client address on eth0 = 192.168.1.10/24

server-side:
ifconfig eth0:1 172.16.1.1 netmask 255.255.255.0

client-side:
ifconfig eth0:1 172.16.1.2 netmask 255.255.255.0 
route add -net 172.16.1.0/24 gw 172.16.1.1 metric 0

根據需要重復多個子網。 重新啟動apache以在所有新別名接口上設置偵聽器,並且您已關閉並正在運行。

我建議您看看是否可以配置負載均衡器以根據X-Forwarded-For標頭做出決定,而不是包含HTTP請求的數據包的源IP。 我知道大多數重要的商業負載平衡器都具備這種功能。

如果你不能這樣做,那么我建議你可能需要配置一個帶有一堆二級IP的linux盒子 - 不要在LB上配置靜態路由,只需讓你的linux盒子成為LB的默認網關設備。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM