저는 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를 사용하십시오.