Ssh- Redirecionamento de Portas No SSH-2
-
Upload
diegosmaia -
Category
Documents
-
view
268 -
download
0
description
Transcript of Ssh- Redirecionamento de Portas No SSH-2
Sign in | RegisterIBM
Search developerWorks
English
Profiles Communities
Blogs
My Blogs
Public Blogs
My Updates
SearchThis Blog
3
1LikeLike
TweetTweet 0
Bê-á-bá do SSH, parte 7:
Túneis
PabloHess | Sep 13 2010 | Visits (14804)
Agora que já entramos nos recursos
avançados do OpenSSH, é hora de
apresentar aquele que talvez seja o
mais apreciado pelos usuários
avançados: túneis.
Um túnel SSH é uma conexão criptografada entre duas
máquinas (o servidor e o cliente), que tem como objetivo
redirecionar o tráfego entre a máquina remota (o servidor) e
uma terceira, como mostra a figura:
Blog do developerWorksBlog do developerWorks
OverviewOverview
Recent UpdatesRecent Updates
MembersMembers
BlogBlog
ForumsForums
BookmarksBookmarks
FilesFiles
1
ShareShare
Apps
to participate
to participate
Start your free trial
IBM Bluemix Develop in the cloud at the click of a button!
O tubo amarelado que atravessa parte da nuvem representa
justamente a conexão criptografada (chamada de túnel) entre o
seu computador local (indicado pelo texto local) e o servidor
SSH (indicado pro inter, de intermediário).
Por sua vez, o servidor SSH se conecta à máquina de destino
(destino) sem qualquer criptografia, e age como intermediário
nas comunicações entre a sua máquina local e a de destino.
Vejamos como usar isso.
Exemplos práticosFulano está em sua máquina de casa e precisa alterar uma
regra no firewall da empresa. Porém, o sistema de
gerenciamento do firewall só pode ser acessado a partir de
dentro da própria rede da empresa. Como fazer?
Basta criar um túnel SSH entre sua máquina de casa e uma
máquina no trabalho, redirecionando o tráfego para a porta
correta do sistema de gerenciamento do firewall.
Para este exemplo, suponhamos a seguinte estrutura de rede:
Fulano em casa (máquina casa): 10.0.1.2
Máquina no trabalho (máquina trab): 222.222.222.222
(escutando SSH via Internet)
Sistema de gerenciamento do firewall (máquina fire):
192.168.1.60 (na rede interna da empresa), porta 4545
Com esse cenário, a criação do túnel SSH com as
características desejadas só precisaria do seguinte comando:
[fulano@casa ~] $ ssh ftal@trab -NL 6000:192.168.1.6
0:4545
Este comando diz: crie uma conexão SSH com a máquina trab
`` usando o usuário ``ftal, não execute comando algum (-N)
e ligue minha porta local (-L) 6000 à porta 4545 da máquina
192.168.1.60.
Confuso? Veja se a figura abaixo ajuda.
Start your free trial
IBM Bluemix Develop in the cloud at the click of a button!
Como mostra a figura, quando o Firefox é apontado para o
endereço localhost:6000, o tráfego é repassado, por meio de
uma porta qualquer (representada por abc), à porta 22 da
máquina trab via SSH — isto é, sob forte criptografia — e, em
seguida, sai de trab por uma porta qualquer (xyz na figura) em
direção à porta 4545 de fire.
Outro exemplo útil, mas que nem sempre dá certo, é o
redirecionamento da porta TCP 80 (ou seja, web). O motivo da
frequente falha é que muitos sites empregam javascript e
outras tecnologias que fazem, elas próprias, inúmeras
requisições a outros servidores, possivelmente até em portas
diferentes da TCP 80. O resultado é que muitos sites falham.
Túnel compactadoUm exemplo extremamente importante é o emprego de túneis
SSH com uso de compactação. Um ótimo caso de uso: VNC
via Internet.
O protocolo VNC é simples e inegavelmente prático, mas via
Internet ele pode ser impraticável, dependendo da velocidade
de acesso das duas pontas envolvidas. Com uso da
compactação no túnel, tudo funciona melhor.
Vejamos o comando:
[fulano@casa ~] $ ssh ftal@trab -CNL 55900:localhost:
5900
Note, neste comando, o uso da opção -C, que ativa a
compactação da conexão, e o uso da máquina de destino
localhost. Isto significa: entre em trab com o usuário ftal e, lá,
redirecione a porta 5900 (VNC) de localhost para a porta
55900 da minha máquina local. Notou a diferença? O
redirecionamento de uma porta do próprio servidor SSH
intermediário requer o uso de localhost no lugar da máquina
de destino.
Em seguida, entre em trab e abra uma sessão VNC. Eu gosto
do x11vnc, que exporta a sessão X.org atual via VNC — muito
Start your free trial
IBM Bluemix Develop in the cloud at the click of a button!
útil quando o seu computador do trabalho é incapaz de exibir
adequadamente aquele site todo feito em Flash, por exemplo.
[fulano@casa ~] $ ssh ftal@trab
ftal@trab [~]$ x11vnc
(várias linhas na saída)
Por último, num novo terminal em casa, conecte seu cliente
VNC à porta 55900 local:
[fulano@casa ~] $ vncviewer localhost::55900
Um detalhe: se você já usa a multiplexação de terminais
conforme proposto na parte 5 desta série, é importante criar o
túnel sobre uma nova conexão SSH. Portanto, o comando mais
indicado, nesse caso, é:
[fulano@casa ~] $ ssh ftal@trab -MCNL 55900:localh
ost:5900
Note a opção -M. Ela significa que a sessão SSH deve ser
uma sessão mestre, mesmo que já existam outras sessões
SSH estabelecidas de casa para trab.
Múltiplas portasQuer redirecionar mais de uma porta de trab para portas locais
em casa? Basta usar múltiplas vezes a opção -L, da seguinte
forma:
[fulano@casa ~] $ ssh ftal@trab -MCN \
-L 55900:localhost:5900 \
-L 8080:localhost:80 \
-L 4545:fire:4545 \
-L 25:mail.empresa.br:25
Este comando, como você pode imaginar, redireciona as
portas:
5900 de trab para a 55900 de casa
8080 de trab para a 80 de casa
4545 de fire para a 4545 de casa (note que é possível
usar o mesmo número de porta local e remota sem
qualquer problema)
25 de mail.empresa.br para a 25 de casa.
Note que as opções -M (criar uma nova sessão para esta
conexão), -C (ativar a compressão do tráfego) e -N (não
executar nenhum comando) só precisam ser definidas uma
única vez, pois dizem respeito à conexão entre fulano@casa
e ftal@trab.
Start your free trial
IBM Bluemix Develop in the cloud at the click of a button!
Túneis reversosSe o seu problema envolte acesso externo à sua máquina
local, geralmente a questão é atravessar alguma (ou até várias)
camadas de NAT. Nestes casos, o OpenSSH também oferece
a solução: um túnel reverso.
Se os túneis normais permitem a conexão da máquina local a
destinos externos por meio de uma porta local, os túneis
reversos fazem justamente o oposto: permitem conectar uma
porta da máquina intermediária a outra porta de uma máquina
remota ou local por meio da sua máquina local. Calma, o
comando esclarece:
[fulano@casa ~] $ ssh ftal@trab -NR 8080:www.google.
com.br:80
Resultado: qualquer um que acesse a porta 8080 em trab terá
sua conexão redirecionada, por meio do túnel SSH que passa
por casa, para a porta 80 de www.google.com.br.
Outro exemplo: Fulano está em seu computador de trabalho,
trab, e já sabe que precisará acessar a máquina fire a partir do
computador casa. Com isso, Fulano já prepara o túnel reverso
e deixa tudo pronto para uso. Quando chegar em sua casa,
bastará acessar a porta 8080 da máquina casa para se
conectar à porta 4545 de fire através do túnel que passa por
trab:
ftal@trab [~]$ ssh fulano@casa -NR 8080:fire:4545
Ou seja, para fire, o tráfego vai parecer ter vindo de trab, que
é onde foi criado o túnel reverso.
Assim como nos túneis normais, o uso de compressão é
altamente recomendável, assim como a criação de uma sessão
mestre para esta conexão. E múltiplas portas também podem
ser encaminhadas, ou ainda misturadas com túneis normais:
ftal@trab [~]$ ssh fulano@casa -MCN \
-R 8080:fire:4545 \
-R 9091:localhost:8081 \
-L 3300:www.google.com.br:80 \
-R 55900:localhost:5900
Isto significa: abra uma conexão com fulano em casa e crie os
túneis entre as portas:
8080 de casa para 4545 de fire (passando por trab,
pois é um túnel reverso)
9091 de casa para 8081 de trab (túnel reverso)
3300 de trab para 80 de www.google.com.br
Start your free trial
IBM Bluemix Develop in the cloud at the click of a button!
(passando por casa, pois é um túnel normal)
55900 de casa para 5900 de trab (túnel reverso).
VPN para os menos
favorecidosIsto mostra que o OpenSSH pode ser usado até para criar
VPN's (redes privadas virtuais, que se comportam como redes
locais mas encontram-se espalhadas pela Internet)
rudimentares.
SSH + Proxy = VPN webUma outra forma — esta com menos ar de gambiarra — de
usar a criptografia do SSH para estabelecer uma espécie de
VPN é o uso de um servidor proxy no computador
intermediário. Isto será tema de um post exclusivo no futuro,
mas já posso adiantar as bases do sistema: configure um proxy
simples (não precisa ser o Squid, basta algo como o privoxy)
na máquina intermediária — isto é, no servidor OpenSSH — e
crie um túnel para a porta do proxy, depois configure seu
navegador para usar como proxy esta porta em localhost.Com isto, você garante o tráfego criptografado entre a sua
máquina e o computador intermediário, e ainda consegue fugir
de diversos tipos de bloqueios de acesso locais.
ConclusãoA criação de túneis SSH torna o uso da Internet ainda mais
seguro, já que acrescenta possibilidades altamente flexíveis de
uso da criptografia entre vários pontos. Além disso, os túneis
SSH reversos conseguem facilitar a árdua tarefa de atravessar
camadas de NAT para oferecer algum serviço.
Os túneis SSH, tanto normais quanto reversos, são também
uma forma extremamente eficaz de proteger serviços. Como
eles possibilitam acessar portas como se o usuário remoto
estivesse na máquina local, é possível deixar os servidores
escutando apenas na interface loopback e controlar o acesso
por meio da criação de túneis protegidos por criptografia.
A série "Bê-a-bá do SSH" ainda não terminou! Temos muito
mais assuntos para abordar.
Até o próximo post.
Tags: ssh openssh
Start your free trial
IBM Bluemix Develop in the cloud at the click of a button!
About
Help
Contact us
Submit content
Feeds
Newsletters
Report abuse
Terms of use
Third party notice
IBM privacy
IBM accessibility
Faculty
Students
Business Partners
Select a language:
English
中文
日本語
Русский
Português (Brasil)
Español
Việt
Comments (0) Add a Comment More Actions
There are no comments to display
Previous Entry Main Next Entry
Start your free trial
IBM Bluemix Develop in the cloud at the click of a button!