HAProxy를 사용하여 https를 통해 SSH 터널 설정

HAProxy를 사용하여 https를 통해 SSH 터널 설정

저는 Apache 웹 서버가 있는 서버와 http(포트 80) 및 https(포트 443)에서 실행되는 여러 웹 사이트를 가지고 있습니다. Apache와 사용자 사이의 포트 443에서 프록시를 사용하고 싶습니다. 존재하다이 페이지, 이를 수행하는 방법에 대한 튜토리얼이 있습니다. 들어오는 연결이 SSH인지 자동으로 감지하고 SSH라면 자동으로 포트 22로 전달하기 때문에 이상하게 들립니다.

/etc/haproxy/haproxy.cfg해당 링크에 언급된 대로 HAProxy를 구성했습니다. 아래는 내 구성 파일입니다.

global
        log /dev/log    local0
        log /dev/log    local1 notice
        chroot /var/lib/haproxy
        stats socket /etc/haproxy/admin.sock mode 660 level admin
        stats timeout 30s
        user haproxy
        group haproxy
        daemon

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

        # 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/
        ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
        ssl-default-bind-options no-sslv3

        tune.ssl.default-dh-param 2048


defaults
        log     global
        mode    http
        option  httplog
        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

backend secure_http
    reqadd X-Forwarded-Proto:\ https
    rspadd Strict-Transport-Security:\ max-age=31536000
    mode http
    option httplog
    option forwardfor
    server local_http_server 127.0.0.1:80

backend ssh
    mode tcp
    option tcplog
    server ssh 127.0.0.1:22
    timeout server 2h

frontend ssl
    bind 0.0.0.0:443 ssl crt /home/myuser/SSL/certs.pem no-sslv3
    mode tcp
    option tcplog
    tcp-request inspect-delay 5s
    tcp-request content accept if HTTP
    acl client_attempts_ssh payload(0,7) -m bin 5353482d322e30
    use_backend ssh if !HTTP
    use_backend ssh if client_attempts_ssh
    use_backend secure_http if HTTP

질문:

이 튜토리얼에서는 Apache가 HAProxy가 이 포트에 바인딩되어 사용자로부터 보안 연결을 받는 포트 443을 사용하지 않는다고 가정합니다. 이는 웹 서버의 모든 웹 사이트가 443 대신 포트 80을 사용하고 가상 호스트에서 SSL 엔진을 비활성화하도록 Apache 구성에서 많은 항목을 변경해야 함을 의미합니다. 나는 이것을 피하고 싶다!

그렇다면 Apache 구성을 최소한으로 변경하고(예: 포트 443을 다른 것으로 변경) HAProxy가 연결을 Apache(SSH가 아닌 경우)로 전달하도록 하는 방법이 있습니까?

더 자세한 내용이 필요하시면 문의해 주세요.

답변1

다른 포트에 아파치를 설정해야 합니다.

인터넷-(443) ---- (443)-HAP-|------(22) SSH

                          |-----(Other port ex 8443) apache 

그렇지 않으면 https, ssh, xmpp에 적합한 sslh를 사용하십시오.

관련 정보