Eu gostaria de ter um front-end com o HAProxy na porta 443. Esse front-end age da seguinte maneira:
Decifra o conteúdo da conexão e verifica:
1- Se o conteúdo criptografado da conexão for ssh, ou seja, se as primeiras palavras dos pacotes forem SSH-2.0
, então ele encaminhará os pacotes decriptografados para a porta 22. Assumo que um back-end desse tipo tem a seguinte aparência:
backend ssh
mode tcp
option tcplog
server ssh 127.0.0.1:22
timeout server 2h
2- Se o conteúdo criptografado for qualquer outra coisa, encaminhe o conteúdo criptografado para a porta 8443, que contém um servidor Apache com chaves SNI corretas. Se for necessário incluir todas as chaves SNI corretas para cada endereço da Web (para não parecer um ataque intermediário, você poderia me dizer como fazer isso com um exemplo? Não tenho problema em adicionar todas as chaves para o HAProxy.
Por que? Porque eu já tenho o apache trabalhando na porta 443. Eu gostaria de movê-lo para alguma outra porta sem ter que reescrever toda a minha configuração. Então, eu gostaria de movê-lo para a porta 8443, por exemplo, e então dizer ao HAProxy, se a conexão não é SSH, então apenas encaminhar tudo o que você chegar à porta 443.
Como escrevo um front end + back ends? Por favor, ajude.
Eu tenho o seguinte front end como ponto de partida:
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
Por favor, pergunte se você precisar de mais detalhes.
Obrigado.