Apache-2.2
已經在 haproxy 中啟用了 x-forwarded,但是 mod_remoteip 2.2 backport 仍然不起作用
我正在使用 haproxy 將請求轉發到與 modsecurity 2.7 和 OWASP_CRS 捆綁在一起的 Apache 2.2。我已啟用在以下位置插入 X-Forwarded-For 標頭
haproxy config
:defaults: option forwardfor except 127.0.0.1 header X-Forwarded-For
在
mod_audit.log
X-Forwarded 標頭中顯示了真實的 ip 地址:--06f84712-B-- GET /item/820 HTTP/1.1 Host: myownsite.com Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 From: googlebot(at)googlebot.com Accept-Encoding: gzip,deflate User-Agent: ...... X-Forwarded-For: 66.249.35.164 Connection: close
但在
error_log
文件中,所有日誌仍然記錄了我的伺服器 IP,而不是真實的客戶端 IP:[Fri Oct 23 12:55:57 2015] [error] [client mylocalIPAddress] ModSecurity: Access denied with code 403 (phase 2). Pattern match "<(a|abbr|acronym|address|applet|area|audioscope|b|base|basefront|bdo|bgsound|big|blackface|blink|blockquote|body|bq|br|button|caption|center|cite|code|col|colgroup|comment|dd|del|dfn|dir|div|dl|dt|em|embed|fieldset|fn|font|form|frame|frameset|h1|head|h ..." at ARGS:type. [file "/etc/httpd/crs-tecmint/owasp-modsecurity-crs/base_rules/modsecurity_crs_41_xss_attacks.conf"] [line "301"] [id "973300"] [rev "2"] [msg "Possible XSS Attack Detected - HTML Tag Handler"] [data "Matched Data: <div> found within ARGS:page_type: <div>"] [ver "OWASP_CRS/2.2.9"] [maturity "8"] [accuracy "8"] [tag "OWASP_CRS/WEB_ATTACK/XSS"] [tag "WASCTC/WASC-8"] [tag "WASCTC/WASC-22"] [tag "OWASP_TOP_10/A2"] [tag "OWASP_AppSensor/IE1"] [tag "PCI/6.5.1"] [hostname "myownsite"] [uri "/item/31"] [unique_id "Vim93dj1xSwAAFZ0AKoAAAAB"]
我啟用了mod_remoteip-httpd22模組,但文件中沒有記錄真實客戶端的 IP
error_log
。誰能告訴我是否缺少某些東西?這是 mod_remoteip 的配置
LoadModule remoteip_module modules/mod_remoteip.so RemoteIPHeader X-Forwarded-For RemoteIPInternalProxy 127.0.0.1
經過數小時試圖了解這些事情的工作原理後,我已經確定了這個問題。
在 haproxy 配置中,我發現來自的 IP
backend apache
與 mod_remote_ip 設置不符。backend apache2 ***** // think of this ip as my real server ip server apache2 214.4.334.1:3001 weight 1 maxconn 1024 check *****
相反,我應該使用 127.0.0.1 作為 IP 地址:
backend apache2 ***** server apache2 127.0.0.1:3001 weight 1 maxconn 1024 check *****
當 Haproxy 將請求轉發到 Apache 時,mod_remote_ip 會檢查傳入的 IP 是否為代理 IP
127.0.0.1
。如果是這樣,它將在文件中使用 IP inX-forwarded for
而不是。error_log
[error] [client myrealIP] ModSecurity: Access denied with code 403