i was trying to add fail2ban on my ubuntu 10.04 LTS app servers and i realized 
that fail2ban is blocking my load balancer IP whenever a bad request is formed, 
so i have some questions on my implementation of the x-forward-for

in my apache access log i see this entry when i try to hit an incorrect URL

apache/access.log
- - - [25/Sep/2013:23:47:42 -0400] "OPTIONS /product/data.php HTTP/1.1" 200 
3477 "-" "-"


why is it missing the public IP of the client server?

while if a request comes in from wordpress i see the public ip in the access.log

apache/access.log

<PUBLIC_IP> - - [25/Sep/2013:23:45:21 -0400] "GET 
/wp-content/themes/test/lib/scripts/cluetip/jquery.cluetip.js?ver=3.1 HTTP/1.1" 
304 - "https://xxx/our-apps/"; "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; 
rv:24.0) Gecko/20100101 Firefox/24.0"


in my haproxy.cfg, i do have entries relevant for x-forward for

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        retries 3
        option http-server-close
        option forwardfor except 10.0.0.1 # set the client's IP in 
X-Forwarded-For.
        option redispatch
        timeout connect 5s
        timeout client 180s
        timeout server 180s
        timeout http-request 5s    # A complete request may never take that 
long.
        errorfile 503 /etc/haproxy/errors/503.http

frontend http-in
        bind <public_IP>:80 name http
        bind <private_IP>:8000 name https # forwared by stunnel

        option forwardfor
        acl host_d1 hdr_beg(host) -i d1.xx.com
        use_backend d1 if host_demo1
        acl host_d2 hdr_beg(host) -i d2.xx.com
        use_backend d2 if host_setdemo
        acl host_d3 hdr_beg(host) -i d3.xx.com
        use_backend d3 if host_d3
        default_backend d4

backend d2
        acl secure dst_port eq 8000
        stats enable
        stats auth admin:admin
        stats uri  /admin?stats
        balance roundrobin
        cookie BALANCEID insert indirect nocache
        option http-server-close
        option forwardfor except 10.0.0.1   # set the client's IP in 
X-Forwarded-For.
        option httpchk OPTIONS /check.php HTTP/1.1\r\nHost:\ www
        server 2-app <private_IP>:80 cookie B weight 5 check inter 20000 
maxconn 30
        server 3-app <IP>:80 cookie C weight 5 check inter 20000 maxconn 30 
backup
        redirect prefix d2.xx.com if !secure


does anything look be amiss in this setup?
why would i get public ip from wordpress but not from my php application?

Thanks in advance

Reply via email to