我想在端口 443 上有一个带有 HAProxy 的前端。这个前端的作用如下:
它解密连接的内容并检查:
1-如果连接的加密内容是 ssh,即如果数据包的第一个字是SSH-2.0
,那么它将解密的数据包转发到端口 22。我假设这样的后端如下所示:
backend ssh
mode tcp
option tcplog
server ssh 127.0.0.1:22
timeout server 2h
2- 如果加密内容是其他内容,则将加密内容转发到端口 8443,该端口包含具有正确 SNI 密钥的 Apache 服务器。如果必须为每个网址包含所有正确的 SNI 密钥(为了不被视为中间人攻击,您能否通过示例告诉我如何做到这一点?我可以毫无问题地添加HAProxy 的所有密钥。
为什么?因为我已经有 apache 在端口 443 上工作。我想将它移动到其他端口,而不必重写我的整个配置。所以我想把它移到 8443 端口,然后告诉 HAProxy,如果连接不是 SSH,那么只需将你得到的所有东西都转发到 443 端口。
这样的前端+后端怎么写?请协助。
我目前有以下前端作为起点:
frontend ssl
bind 0.0.0.0:443 ssl crt /home/myuser/SSL/certs.pem no-sslv3 #decrypts the connection with the keys certs.pem
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 #if the decrypted information starts with SSH-2.0
use_backend ssh if client_attempts_ssh #forward to SSH if condition client_attempts_ssh is satisfied.
use_backend forwardToApache if !client_attempts_ssh
请询问您是否需要任何其他详细信息。
谢谢你。
您可以先使用 SNI,选择
或者
而且,只有选择SSH.DOMAIN.com您解密,请执行SSH魔术并将其发送到本地网络服务器未加密的情况下,假设这应该看起来像常规的HTTPS流量,但不包含HTTPS内容中的敏感信息,因为这由site1 和site2 处理。