Вы находитесь на странице: 1из 7

IBM Bluemix Develop in the cloud at the click of a button!

Sign in | Register
Start your free trial

IBM

Search developerWorks
Profiles

Blogs

Communities

My Blogs

English

Apps

This Blog

Search

Public Blogs
My Updates

to participate

Blog do developerWorks

B--b do SSH, parte 7:


Tneis
PabloHess | Sep 13 2010 | Visits (14804)

Overview
Recent Updates
Members
Blog
Forums
Bookmarks
Files

Agora que j entramos nos recursos


avanados do OpenSSH, hora de
apresentar aquele que talvez seja o
mais apreciado pelos usurios
avanados: tneis.

3
Like

Share
Tweet

Um tnel SSH uma conexo criptografada entre duas


mquinas (o servidor e o cliente), que tem como objetivo
redirecionar o trfego entre a mquina remota (o servidor) e
uma terceira, como mostra a figura:

IBM Bluemix Develop in the cloud at the click of a button!


Start your free trial

O tubo amarelado que atravessa parte da nuvem representa


justamente a conexo criptografada (chamada de tnel) entre o
seu computador local (indicado pelo texto local) e o servidor
SSH (indicado pro inter, de intermedirio).
Por sua vez, o servidor SSH se conecta mquina de destino
(destino) sem qualquer criptografia, e age como intermedirio
nas comunicaes entre a sua mquina local e a de destino.
Vejamos como usar isso.

Exemplos prticos
Fulano est em sua mquina de casa e precisa alterar uma
regra no firewall da empresa. Porm, o sistema de
gerenciamento do firewall s pode ser acessado a partir de
dentro da prpria rede da empresa. Como fazer?
Basta criar um tnel SSH entre sua mquina de casa e uma
mquina no trabalho, redirecionando o trfego para a porta
correta do sistema de gerenciamento do firewall.
Para este exemplo, suponhamos a seguinte estrutura de rede:
Fulano em casa (mquina casa): 10.0.1.2
Mquina no trabalho (mquina trab): 222.222.222.222
(escutando SSH via Internet)
Sistema de gerenciamento do firewall (mquina fire):
192.168.1.60 (na rede interna da empresa), porta 4545
Com esse cenrio, a criao do tnel SSH com as
caractersticas desejadas s precisaria do seguinte comando:

[fulano@casa ~] $ ssh ftal@trab -NL 6000:192.168.1.6


0:4545
Este comando diz: crie uma conexo SSH com a mquina trab

`` usando o usurio ``ftal, no execute comando algum (-N)


e ligue minha porta local (-L) 6000 porta 4545 da mquina
192.168.1.60.
Confuso? Veja se a figura abaixo ajuda.

IBM Bluemix Develop in the cloud at the click of a button!


Start your free trial

Como mostra a figura, quando o Firefox apontado para o


endereo localhost:6000, o trfego repassado, por meio de
uma porta qualquer (representada por abc), porta 22 da
mquina trab via SSH isto , sob forte criptografia e, em
seguida, sai de trab por uma porta qualquer (xyz na figura) em
direo 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 prprias, inmeras
requisies a outros servidores, possivelmente at em portas
diferentes da TCP 80. O resultado que muitos sites falham.

Tnel compactado
Um exemplo extremamente importante o emprego de tneis
SSH com uso de compactao. Um timo caso de uso: VNC
via Internet.
O protocolo VNC simples e inegavelmente prtico, mas via
Internet ele pode ser impraticvel, dependendo da velocidade
de acesso das duas pontas envolvidas. Com uso da
compactao no tnel, tudo funciona melhor.
Vejamos o comando:

[fulano@casa ~] $ ssh ftal@trab -CNL 55900:localhost:


5900
Note, neste comando, o uso da opo -C, que ativa a
compactao da conexo, e o uso da mquina de destino

localhost. Isto significa: entre em trab com o usurio ftal e, l,


redirecione a porta 5900 (VNC) de localhost para a porta
55900 da minha mquina local. Notou a diferena? O
redirecionamento de uma porta do prprio servidor SSH
intermedirio requer o uso de localhost no lugar da mquina
de destino.
Em seguida, entre em trab e abra uma sesso VNC. Eu gosto
do x11vnc, que exporta a sesso X.org atual via VNC muito

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
(vrias linhas na sada)
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 multiplexao de terminais
conforme proposto na parte 5 desta srie, importante criar o
tnel sobre uma nova conexo SSH. Portanto, o comando mais
indicado, nesse caso, :

[fulano@casa ~] $ ssh ftal@trab -MCNL 55900:localh


ost:5900
Note a opo -M. Ela significa que a sesso SSH deve ser
uma sesso mestre, mesmo que j existam outras sesses
SSH estabelecidas de casa para trab.

Mltiplas portas
Quer redirecionar mais de uma porta de trab para portas locais
em casa? Basta usar mltiplas vezes a opo -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 possvel
usar o mesmo nmero de porta local e remota sem
qualquer problema)
25 de mail.empresa.br para a 25 de casa.
Note que as opes -M (criar uma nova sesso para esta
conexo), -C (ativar a compresso do trfego) e -N (no
executar nenhum comando) s precisam ser definidas uma
nica vez, pois dizem respeito conexo entre fulano@casa
e ftal@trab.

Start your free trial

IBM Bluemix Develop in the cloud at the click of a button!

Tneis reversos
Se o seu problema envolte acesso externo sua mquina
local, geralmente a questo atravessar alguma (ou at vrias)
camadas de NAT. Nestes casos, o OpenSSH tambm oferece
a soluo: um tnel reverso.
Se os tneis normais permitem a conexo da mquina local a
destinos externos por meio de uma porta local, os tneis
reversos fazem justamente o oposto: permitem conectar uma
porta da mquina intermediria a outra porta de uma mquina
remota ou local por meio da sua mquina 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 conexo redirecionada, por meio do tnel 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 mquina fire a partir do


computador casa. Com isso, Fulano j prepara o tnel reverso
e deixa tudo pronto para uso. Quando chegar em sua casa,
bastar acessar a porta 8080 da mquina casa para se
conectar porta 4545 de fire atravs do tnel que passa por

trab:
ftal@trab [~]$ ssh fulano@casa -NR 8080:fire:4545
Ou seja, para fire, o trfego vai parecer ter vindo de trab, que
onde foi criado o tnel reverso.
Assim como nos tneis normais, o uso de compresso
altamente recomendvel, assim como a criao de uma sesso
mestre para esta conexo. E mltiplas portas tambm podem
ser encaminhadas, ou ainda misturadas com tneis 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 conexo com fulano em casa e crie os
tneis entre as portas:
8080 de casa para 4545 de fire (passando por trab,
pois um tnel reverso)
9091 de casa para 8081 de trab (tnel 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 tnel normal)

55900 de casa para 5900 de trab (tnel reverso).

VPN para os menos


favorecidos
Isto 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 web


Uma outra forma esta com menos ar de gambiarra de
usar a criptografia do SSH para estabelecer uma espcie de
VPN o uso de um servidor proxy no computador
intermedirio. Isto ser tema de um post exclusivo no futuro,
mas j posso adiantar as bases do sistema: configure um proxy
simples (no precisa ser o Squid, basta algo como o privoxy)
na mquina intermediria isto , no servidor OpenSSH e
crie um tnel para a porta do proxy, depois configure seu
navegador para usar como proxy esta porta em localhost.
Com isto, voc garante o trfego criptografado entre a sua
mquina e o computador intermedirio, e ainda consegue fugir
de diversos tipos de bloqueios de acesso locais.

Concluso
A criao de tneis SSH torna o uso da Internet ainda mais
seguro, j que acrescenta possibilidades altamente flexveis de
uso da criptografia entre vrios pontos. Alm disso, os tneis
SSH reversos conseguem facilitar a rdua tarefa de atravessar
camadas de NAT para oferecer algum servio.
Os tneis SSH, tanto normais quanto reversos, so tambm
uma forma extremamente eficaz de proteger servios. Como
eles possibilitam acessar portas como se o usurio remoto
estivesse na mquina local, possvel deixar os servidores
escutando apenas na interface loopback e controlar o acesso
por meio da criao de tneis protegidos por criptografia.
A srie "B-a-b do SSH" ainda no terminou! Temos muito
mais assuntos para abordar.
At o prximo post.

Tags: ssh openssh

Start your free trial

IBM Bluemix Develop in the cloud at the click of a button!

Comments (0)

Add a Comment

More Actions

Start your free trial


There are no comments to display
Previous Entry

Main

Next Entry

About

Feeds

Report abuse

Faculty

Select a language:

Help

Newsletters

Terms of use

Students

English

Contact us

Third party notice

Business Partners

Submit content

IBM privacy

IBM accessibility

Portugus (Brasil)
Espaol
Vit

Вам также может понравиться