Ssh- Redirecionamento de Portas No SSH-2

7
Sign in | Register IBM Search developerWorks English Profiles Communities

description

ssh- Redirecionamento de portas no SSH

Transcript of Ssh- Redirecionamento de Portas No SSH-2

Page 1: 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!

Page 2: Ssh- Redirecionamento de Portas No SSH-2

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!

Page 3: Ssh- Redirecionamento de Portas No SSH-2

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!

Page 4: Ssh- Redirecionamento de Portas No SSH-2

ú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!

Page 5: Ssh- Redirecionamento de Portas No SSH-2

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!

Page 6: Ssh- Redirecionamento de Portas No SSH-2

(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!

Page 7: Ssh- Redirecionamento de Portas No SSH-2

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!