Назад | Перейти на главную страницу

HAProxy не может подключиться, когда брандмауэр Shorewall включен на веб-серверах

У меня довольно стандартная установка HAProxy / Web Cluster, которая работает отлично - пока я не включаю брандмауэр Shorewall на серверах веб-кластера.

Как только я это сделаю, в системном журнале сервера HAProxy появятся сообщения об ошибках, а веб-сайты, обслуживаемые через HAProxy, вернут 503.

В качестве примера возьмем сервер HAProxy и один из веб-серверов.

Конфигурация HAProxy выглядит так:


global
    daemon
    maxconn 8192
    log 127.0.0.1 local5 info

defaults
    mode http
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms
    log global
    option httplog
    option dontlognull
    option http-server-close
    option tcplog clf
    option httplog clf
    stats enable
    stats refresh 10s
    stats uri /haprsts

listen http-in
    bind *:80
    mode http
    option forwardfor
    default_backend www_servers

backend www_servers
    balance leastconn
    cookie SERVERID insert indirect nocache
    server server1 XXX.XXX.XXX.XXX:9009 maxconn 128 check cookie server1
    server server2 YYY.YYY.YYY.YYY:9009 maxconn 128 check cookie server2

listen https-in
    mode http
    bind *:443 ssl crt /etc/haproxy/certs/cert.pem
    option forwardfor
    reqadd X-Forwarded-Proto:\ https
    default_backend www_servers_ssl

backend www_servers_ssl
    balance leastconn
    cookie SERVERID insert indirect nocache
    server server1 XXX.XXX.XXX.XXX:9009 maxconn 128 check inter 3000 fall 2 rise 2 cookie server1
    server server2 YYY.YYY.YYY.YYY:9009 maxconn 128 check inter 3000 fall 2 rise 2 cookie server2

XXX.XXX.XXX.XXX и YYY.YYY.YYY.YYY - публичные IP-адреса.

Конфигурации Apache и vhosts на веб-сервере настроены на прослушивание порта 9009 в соответствии с конфигурацией HAProxy. До сих пор все работает нормально.

Теперь я включаю Shorewall Firewall на веб-сервере с файлом правил брандмауэра, который выглядит следующим образом:


# РАЗДЕЛ ВСЕ

# РАЗДЕЛ СОЗДАН

# РАЗДЕЛ, СВЯЗАННЫЙ С

РАЗДЕЛ НОВЫЙ

ПРИНЯТЬ сеть: ZZZ.ZZZ.ZZZ.ZZZ $ FW: XXX.XXX.XXX.XXX TCP 9009

ПРИНЯТЬ сеть: WWW.WWW.WWW.WWW $ FW: XXX.XXX.XXX.XXX TCP 9009

# Отбросьте Ping из "плохой" сетевой зоны .. и предотвратите переполнение вашего журнала ..

Ping (DROP) net $ FW

# Разрешить весь ICMP-трафик ОТ межсетевого экрана В сетевую зону

ПРИНЯТЬ $ FW net icmp


ZZZ.ZZZ.ZZZ.ZZZ - это первичный сервер HAProxy, а WWW.WWW.WWW.WWW - вторичный сервер HAProxy (и сейчас это не имеет отношения к этой проблеме).

И весь веб-трафик умирает, когда на веб-сервере включен брандмауэр.

Сервер HAProxy начинает отправлять такие файлы в системный журнал: Сообщение от syslogd @ localhost 30 сентября, 12:59:38 ... haproxy [14631]: backend www_servers не имеет доступного сервера!

И веб-сервер возвращает 503 ошибки.

В файле правил есть и другие правила, которые, например, разрешают SSH на определенном порту с определенного IP-адреса, и все эти правила работают, поэтому я предполагаю (хотя могу ошибаться) это имеет мало общего с правилами брандмауэра Shorewall. само собой.

Неужели HAProxy нуждается в дополнительных портах, открытых на веб-сервере (это то, что я подозреваю), и если да, то что это за недокументированные порты, или кто-нибудь знает, что здесь может быть не так?

Любая помощь приветствуется.

Ура, / j.

Вероятно, это проверки работоспособности, которые вызывают бан, поскольку они не отправляют имя хоста. Вместо этого вы можете попробовать использовать httpchk или ssl-hello-chk, что может решить проблему и позволить повторно включить fail2ban.