Neste post vou falar
sobre uma ferramenta muito legal e que com certeza vai salvar a vida
de muita gente. O sslh permite com que na mesma máquina aceite
conexões HTTPS e SSH, com ele você tanto pode acessar sua aplicação
na porta HTTPS quanto gerenciar seu servidor através do serviço
SSH, e tudo isso apenas com a porta 443 aberta.
Imagine o seguinte, você
trabalha em uma empresa onde você não gerencia o firewall de borda
desta empresa, mas você tem um servidor WEB (porta 80 e 443) em
produção na rede interna que é a acessada da Internet por meio de
um NAT criado no firewall de borda, veja a figura abaixo:
Neste cenário temos um
servidor WEB na rede interna com o IP 10.1.4.249. Como esta máquina
possui um IP privado (não acessível pela Internet), então é
precisso criar um NAT no Firewall para que o acesso vindo da Internet
seja possível. Foi criado um NAT, onde todo o tráfego vindo da
Internet com destino ao IP 200.164.100.103 será redirecionado para o
IP 10.1.4.249, perceba também que só as portas 80 e 443 foram
liberadas neste Firewall, com isso qualquer outra tentativa de acesso
em outra porta do servidor será bloqueada pelo Firewall.
O que queremos fazer é
usar a conexão liberada pelo Firewall na porta 443 para acessar
minha aplicação WEB e também o serviço SSHD, que permite com que
eu possa administrar meu servidor, é ai que entra o sslh. O sshl vai
gerenciar toda conexão com destino a porta 443 do servidor e decidir
se aquela conexão tem que ser direcionada para a aplciação (porta
443) ou para o serviço SSHD (porta 22), veja a figura abaixo:
Primeiramente vamos instalar o sslh
(Debian):
#aptitude install sslh
Levando em consideração
que seu servidor WEB já esta funcionando e configurado para aceitar
conexões na porta 443 (SSL), certifique-se que o apache esteja
escutando na porta 443 com o IP 127.0.0.1, veja figura abaixo:
Vamos editar o arquivo de configuração
do sslh (vim /etc/default/sslh), ficando assim:
RUN=yes
DAEMON_OPTS="-u sslh -p
10.1.4.249:443 -s 127.0.0.1:22 -l 127.0.0.1:443"
Onde:
-p 10.1.4.249:443 = ip do servidor com
a porta onde o sslh vai estar esperando por conexão
-s 127.0.0.1:22 = Ip e porta do serviço
SSHD (neste caso local)
-l 127.0.0.1:443 = por onde as conexões
SSL vão ser repassadas
Agora reinicie o serviço sslh:
#/etc/init.d/sslh restart
Veja com o comando netstat como ficou
os serviços:
Pronto. Agora podemos testar.
Primeiro vamos acessar nossa aplicação
WEB na porta SSL:
Como podemos ver
conseguimos acessar nossa aplicação sem problema, agora vamos usar
o comando ssh do linux para acessar o serviço SSHD usando o IP
200.164.100.103 e a porta 443, exatamente como usamos para acessar
via browser, veja como ficou:
Agora só é
entrar com a senha. Pronto você nem precisou acionar os responsáveis
pelo Firewall para adicionarem uma nova porta na sua regra para
acessar seu serviço SSHD.
Conhecimento é “tudo”.