quarta-feira, 11 de abril de 2012

SSH reverse tunnel


Cenário

Você precisa ajudar um amigo que possui um servidor protegido por um Firewall, O trafego de saida é liberado, mas o de entrada não é permitido, então o servidorSSH pode acessar qualquer máquina da Internet em qualquer porta, o inverso não é verdadeiro, desta forma mesmo que o servidorSSh esteja rodando o sshd na porta 22 ninguem da internet poderá acessar esse serviço se o mesmo não for liberado pelo firewall. Neste cenario estou levando em consideração que não temos acesso ao Firewall.

 servidorSSH -------> firewall --------> internet ---------> Suporte

Para resolver este problema iremos realizar uma conexão reversa usando o comando ssh. Com isso o  servidorSSH irá se conectar em uma máquina na Internet, que chamarei de Suporte, e a conexão estabelecida sera utilizada para realizar uma conexão reversa. 

No servidorSSH execute o comando abaixo:

ssh -fgNTR 2222:localhost:22 root@suporte_IP

Este comando ira acessar a máquina Suporte via SSH e disponibilizara a sua própria porta 22 usando a porta 2222.

Agora na máquina Suporte é só executar:

ssh -p2222 user@localhost

Ao se conectar na porta 2222 estaremos usando a conexão estabelicida anteriormente para se conectar na porta 22 do servidorSSH.

Digamos que você queira acessar uma aplicação que se encontra em um outro servidor, que chamaremos de servidorHTTP, apenas execute o comando abaixo no servidorSSH:

ssh -L 8000:IP_servidorHTTP:80 root@localhost

No browser da máquina Suporte execute:

http://127.0.0.1:8000

Veja um terceiro cenário no link abaixo:

http://mywiki.wooledge.org/SshTunnel

Um abraço para todos.


Nenhum comentário:

Postar um comentário