Hey there! I’ve got a handful of Haproxy servers that are serving LDAPS and 
HTTPS front/back ends.  I am new to this, so I built these and reused the 
config from the older Haproxy servers we had.
Anyway I mention that because I likely have little idea what I should be done 
here. So far everything is working.. we are able to bind and perform lookups 
successfully. What’s not working like I think it should is logging. I have 
Firewalld setup that is blocking all traffic inbound from the same internal 
subnet as the server, and allowing 0.0.0.0/0 in from all other sources for 
ports 636 and 443.

Rsyslog is matching on program name ‘haproxy’ and the default UNIX socket 
/dev/log and forwarding all info to /var/log/haproxy.log

Rsyslog is matching on program name ‘firewalld’ and sending all info to 
/var/log/firewalld.log

If I tail both files, I see many inbound connections allowed to port 636, but 
no corresponding events in the haproxy.log file.  So I’m hoping that maybe I 
have something on the Haproxy side that’s not quite what it should be.  The 
thought is, Maybe the connection attempts are coming in, but Haproxy is not 
fulfilling them for some reason. And I don’t have the appropriate log options 
or formats setup to determine that.
Attached is my sanitized haproxy.cfg
Please don’t hesitate to ask me for more info 😊
Thanks!!
Ben
global
        log /dev/log    local0
        log /dev/log    local1 notice
#   log 127.0.0.1   local1
        chroot /var/lib/haproxy
        stats socket /run/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        maxconn 2048
        user haproxy
        group haproxy
        daemon

        # Default SSL material locations
        ca-base /etc/ssl/certs
        crt-base /etc/ssl/private

        # Default ciphers to use on SSL-enabled listening sockets.
        # For more information, see ciphers(1SSL). This list is from:
        #  https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
        # An alternative list with additional directives can be obtained from
        #  
https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
        ssl-default-bind-ciphers 
ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
        ssl-default-bind-options no-sslv3
        tune.ssl.default-dh-param 2048

defaults
        log     global
        mode    http
        option  httplog
        log-format "%{+Q}o client_ip=%ci client_port=%cp 
datetime_of_request=[%tr] frontend_name_transport=%ft backend_name=%b 
server_name=%s time_to_receive_full_request=%TR Tw=%Tw Tc=%Tc response_time=%Tr 
active_time_of_request=%Ta status_code=%ST bytes_read=%B 
captured_request_cookie=%CC captured_response_cookie=%CS 
termination_state_with_cookie_status=%tsc actconn=%ac feconn=%fc beconn=%bc 
srv_conn=%sc retries=%rc srv_queue=%sq backend_queue=%bq 
captured_request_headers_default_style=%hr 
captured_response_headers_default_style=%hs server_ip=%si server_port=%sp 
frontend_name=%f http_method=%HM http_request_uri_without_query=%HP 
http_request_query_string=%HQ http_request_uri=%HU bytes_uploaded=%U 
ssl_ciphers=%sslc ssl_version=%sslv"
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

# Enabling HAProxy Stats
listen  stats
        bind    *:8404
        mode    http
        log     global
        maxconn 10
        stats enable
        stats refresh 30s
        stats show-node
        stats auth admin:password
        stats uri  /stats

# LDAPS
frontend ldaps
  mode                  tcp
  log                   global
  bind                  *:636 ssl crt /etc/ssl/private/hap/ldaps.net.pem crt 
/etc/ssl/private/hap/wild.ecorp.com.pem
  description           LDAPS Service
  option                tcplog
  option                logasap
  option                socket-stats
  option                tcpka
  timeout client        60s
  tcp-request inspect-delay 5s
  tcp-request content accept if { req_ssl_hello_type 1 }
  use_backend ecorp_ldaps if { ssl_fc_sni_end ecorp.com }
  default_backend ldaps


# ECorp Stuff
frontend ecorp_https
  bind                  *:443 ssl crt /etc/ssl/private/hap/wild.ecorp.com.pem
  log           global
  mode                  http
  description           ECorpTech
  option                socket-stats
  default_backend       ecorp_https
  option                tcplog
  capture request header Host len <len>
  capture request header Content-Type len <len>
  capture request header User-Agent len <len>
  capture request header Referer len <len>
  capture request header X-Forwarded-For len <len>
  capture response header Content-Type len <len>
  capture cookie Cookie_2 len <len>

# LDAPS backend
backend ldaps
  mode                  tcp
  log           global
  balance               leastconn
  server                rodc01 x.x.x.x:636 maxconn 100 check ssl fall 3 rise 1 
inter 2s verify none check check-ssl ca-file /etc/ssl/private/hap/ldaps.pem
  timeout server        60s
  timeout connect       60s
  option                tcpka
#  option       ldap-check
  option                tcp-check
  tcp-check             connect port 636 ssl
  tcp-check send-binary 300c0201 # LDAP bind request "<ROOT>" simple
  tcp-check send-binary 01 # message ID
  tcp-check send-binary 6007 # protocol Op
  tcp-check send-binary 0201 # bind request
  tcp-check send-binary 03 # LDAP v3
  tcp-check send-binary 04008000 # name, simple authentication
  tcp-check expect binary 0a0100 # bind response + result code: success
  tcp-check send-binary 30050201034200 # unbind request

# ECorp backend LDAPS
backend ecorp_ldaps
  mode                  tcp
  log           global
  server                dc02 x.x.x.x:636 maxconn 20 check ssl fall 3 rise 1 
inter 10s verify none check check-ssl ca-file 
/etc/ssl/private/hap/wild.ecorp.com.pem
  timeout server        60s
  timeout connect       60s
  option                tcpka
  option                tcp-check
  tcp-check             connect port 636 ssl
  tcp-check send-binary 300c0201 # LDAP bind request "<ROOT>" simple
  tcp-check send-binary 01 # message ID
  tcp-check send-binary 6007 # protocol Op
  tcp-check send-binary 0201 # bind request
  tcp-check send-binary 03 # LDAP v3
  tcp-check send-binary 04008000 # name, simple authentication
  tcp-check expect binary 0a0100 # bind response + result code: success
  tcp-check send-binary 30050201034200 # unbind request

# Ecorp backend https
backend ecorp_https
  mode                  http
  server                subca02.ecorp.com x.x.x.x:443 maxconn 20 fall 3 rise 1 
inter 10s verify none check check-ssl
  option                httpchk OPTIONS / HTTP/1.0

Reply via email to