Amazon-Elb

亞馬遜 ELB 後面的 mod_rpaf

  • December 15, 2011

我已經安裝了從PHP、Apache 日誌等中mod_rpaf的標頭獲取使用者的 IP 地址。X-Forwarded-For

不幸的是,看起來我必須通過設置顯式設置該標頭將受到尊重的 IP RPAFproxy_ips

鑑於 ELB 沒有靜態 IP,我如何判斷mod_rpaf接受來自任何 IP 甚至任何 10.* IP 的標頭?

您可以嘗試使用mod_extract_forwarded而不是mod_rpaf - 它支持MEFaccept all(如果您使用 RHEL/CentOS/other-clone,則該軟體包已經在 EPEL 中)。一個缺點mod_extract_forwardedX-Forwarded-ForForwarded-For標頭名稱是硬編碼的,不能像mod_rpaf.

即使在 中也不支持 IP 範圍mod_extract_forwarded,但您可以配置防火牆以僅允許從某些 IP 範圍直接訪問 Apache,或檢查規則中的MEF_RPROXY_ADDR環境變數mod_rewrite


經過更多思考後,我發現此mod_extract_forwarded配置存在問題 - 雖然mod_rpaf不支持多個代理鏈並且僅從X-Forwarded-For標頭中獲取最後一個地址,但mod_extract_forwarded嘗試支持這一點並使用不屬於受信任代理列表的最後一個地址(因此,如果請求已通過多個受信任的代理,則將使用實際的客戶端地址,而不是倒數第二個代理地址)。不幸的是,使用MEFaccept allmod_extract_forwarded信任所有代理的方式,因此如果 ELB 代理只是將其數據附加到X-Forwarded-For標頭,而不是完全替換它,客戶端可以通過發送帶有自己X-Forwarded-For標頭的請求來傳遞任何欺騙性 IP。

但是,我找到了另一個解析X-Forwarded-For標頭的模組。最近的(不穩定的)Apache 版本有mod_remoteip模組,它顯然支持代理地址的子網遮罩。有一個Apache 2.2的反向移植和一個Fedora 的規範文件;不幸的是,在 Fedora 中包含軟體包的請求被擱置了。

引用自:https://serverfault.com/questions/329893