Bom dia !!
Eu recebi esta dica, pela lista da unicamp, e achei que fosse interessante que todos tivessem..
Tunelando com OpenSSH
=====================
� Ricardo Iramar dos Santos - Agent Smith
Introdu��o
==========
Apesar de a palavra "Tunelando" n�o existir no portugu�s (t�nel n�o � um verbo), por�m tecnicamente faz muito sentido empregar tal palavra na utiliza��o do OpenSSH (http://www.openssh.com) descrita nesta documenta��o.
O OpenSSH cria um "t�nel virtual" atrav�s de um Firewall inserindo um cabe�alho com direitos de acesso (protocolo, porta e endere�o) no lado do cliente e fazendo o processo inverso no lado do servidor. Al�m disso todos os dados que iram trafegar nesse t�nel seram encriptados tornando assim a conex�o muito segura.
As possibilidades de aplica��es s�o infinitas, nesta documenta��o veremos uma aplica��o que servir� como base para todas as demais.
Nesta documenta��o o ambiente consiste em duas m�quinas (Smith e Trinity) com Slackware 10.0 fechando um t�nel entre si. Em Smith usarei o usu�rio ricardo e em Trinity o usu�rio agent. Nas duas m�quinas possuo o OpenSSH instalados como cliente e servidor.
Smith est� atr�s de um Firewall fazendo NAT onde tem permiss�es para sair pela porta 22 e 80. J� a Trinity � uma m�quina com um IP v�lido din�mico (Speedy).
________
------- | | /��������\ ---------
| Smith | --- [ Firewall ] ---/ ~ /--- ( Internet ) ---/ ~ /--- | Trinity |
------- |________| \......../ ---------
Smith ir� acessar Trinity atrav�s de um "t�nel virtual" utilizando o VNC (http://www.realvnc.com) e vice-versa. Portanto irei instalar o VNC (servidor e cliente) nas duas m�quinas.
O VNC utiliza a porta 590x (por padr�o 5900 no Windows e 5901 no Linux) e o protocolo RFB, mais informa��es podem ser obtidas na �rea documenta��es (http://www.realvnc.com/documentation.html) no site do VNC. Perceba que o Firewall n�o permite esse tipo de acesso nos dois sentidos.
Hey Ho! Let's Go!
Pr�-requisitos ==============
- OpenSSH (http://www.openssh.com).
- VNC (http://www.realvnc.com).
Instala��o ==========
Como na grande maioria das distribui��es o OpenSSH j� vem instalado, a procedimento para sua instala��o n�o ser� abortado aqui.
A vers�o atual do VNC � a 4.0. Segue abaixo a instala��o super simples dos bin�rios do VNC.
[EMAIL PROTECTED]:~/binarios/VNC$ wget http://www.realvnc.com/dist/vnc-4.0-x86_linux.tar.gz
(...)
[EMAIL PROTECTED]:~/binarios/VNC$ tar jxvf vnc-4.0-x86_linux.tar.gz
(...)
[EMAIL PROTECTED]:~/binarios/VNC$ cd vnc-4.0-x86_linux
[EMAIL PROTECTED]:~/binarios/VNC/vnc-4.0-x86_linux$ su
Password authentication bypassed.
[EMAIL PROTECTED]:/home/ricardo/binarios/VNC/vnc-4.0-x86_linux# ./vncinstall /usr/local/bin
(...)
[EMAIL PROTECTED]:/home/ricardo/binarios/VNC/vnc-4.0-x86_linux# exit
exit
[EMAIL PROTECTED]:~/binarios/VNC/vnc-4.0-x86_linux$
Procedimento ============
Para facilitar o entendimento irei subdividir esse item em dois com base no sentido da comunica��o entre Smith e Trinity.
Smith acesando Trinity ======================
Para este primeiro caso imagine que estou pr�ximo a Smith em meu servi�o e Trinity est� em casa a 25 Km conectada a internet via Speedy. Relembrando que j� possuo o sshd (OpenSSH servidor) rodando nas duas m�quinas.
Primeiramente Smith (VNC cliente) ir� acessar Trinity (VNC servidor), desta forma precisamos executar o vncserver em Trinity. Como estou longe de Trinity irei fazer isso via ssh (OpenSSH cliente).
Se for a primeira vez que estiver executando o vncserver ser� necess�rio definir a senha de acesso que ser� gravada em ~/.vnc/passwd.
[EMAIL PROTECTED]:~$ ssh [EMAIL PROTECTED] da Trinity] [EMAIL PROTECTED] da Trinity]'s password: [senha do usu�rio agent em Trinity] (...) [EMAIL PROTECTED]:~$ vncserver
New 'trinity:1 (agent)' desktop is trinity:1
Starting applications specified in /home/agent/.vnc/xstartup Log file is /home/agent/.vnc/trinity:1.log
[EMAIL PROTECTED]:~$ exit logout Connection to [IP da Trinity] closed. [EMAIL PROTECTED]:~$
Veja a linha "Starting applications specified in /home/agent/.vnc/xstartup", isso quer dizer que quando voc� se conectar a est� m�quina utilizando o vncviewer o vncserver ir� executar o X e em seguinta os comandos em ~/.vnc/xstartup. Eu deixo neste arquivo o seguinte conte�do.
#!/bin/sh
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources vncconfig -iconic & sh $HOME/.xinitrc
Assim quando me conectar em Trinity via VNC ser� iniciado o Window Manager padr�o para meu usu�rio, isto �, o mesmo quando executo o startx.
Agora localmente em Smith iremos redirecionar a porta local 1024 para a porta remota 5901 em Trinity utilizando ssh. Voc� pode utilizar qualquer porta acima de 1023 pois abaixo ou igual s� o root ter� permiss�o para fazer isso.
[EMAIL PROTECTED]:~$ ssh -f -N -L 1024:localhost:5901 [EMAIL PROTECTED] da Trinity] [EMAIL PROTECTED] da Trinity]'s password: [senha do usu�rio agent em Trinity] [EMAIL PROTECTED]:~$
O par�metro -f serve para deixar o processo roando em segundo plano n�o prendendo o prompt. Com o comando acima foi criado o famoso "t�nel virtual" redirecionando as portas citadas de uma forma convenientemente.
Agora que a m�gica acontece, com o comando abaixo em Smith iremos acessar via VNC a Trinity atrav�s do t�nel criado acima.
[EMAIL PROTECTED]:~$ vncviewer localhost:1024:1 & (...) [EMAIL PROTECTED]:~$
Se o vncviewer perguntar a senha do vncserver configurada acima j� pode ficar feliz, caso contr�rio revise os passos acima. Perceba o & no final da linha para executar o vncviewer em segundo plano liberando o prompt.
Na janela do vncviewer utilize a tecla F8 para configurar-lo em tempo real ou at� mesmo sair. Quando tudo estiver terminado finalize o vncserver da seguinte forma.
[EMAIL PROTECTED]:~$ ssh [EMAIL PROTECTED] da Trinity] [EMAIL PROTECTED] da Trinity]'s password: [senha do usu�rio agent em Trinity] (...) [EMAIL PROTECTED]:~$ vncserver -kill :1 Killing Xvnc process ID 2563 [EMAIL PROTECTED]:~$ exit logout Connection to [IP da Trinity] closed. [EMAIL PROTECTED]:~$
Localmente em Smith finalize o processo do OpenSSH respons�vel pela cria��o do t�nel da seguinte forma.
[EMAIL PROTECTED]:~$ ps aux | grep [IP da Trinity]
ricardo 10473 0.0 0.6 3208 1604 ? S 11:41 0:00 ssh -f -N -L 1024:localhost:5901 [EMAIL PROTECTED] da Trinity]
[EMAIL PROTECTED]:~$ kill -9 10473
[EMAIL PROTECTED]:~$
A velocidade de atualiza��o da tela no VNC � diretamente proporcional a velocidade do link em Smith e Trinity. Por�m essa velocidade ser� afetada devido a encripta��o dos dados trafegados pelo t�nel. De qualquer forma isso pode ser solucionado com um link de 2Mbps nas duas pontas :^D .
Trinity acesando Smith ======================
O procedimento � bem similar ao item anterior, s� que agora de uma forma reversa.
O problema est� no Firewall que n�o permite nenhum tipo de acesso a Smith. Mas se Smith abrir e manter esse acesso � Trinity, ir� fazer com que o Firewall "pense" que na verdade Smith � quem esta acessando Trinity.
Tendo isso em mente minutos antes de eu ir para minha casa, onde se encontra Trinity, irei excutar o vncserver para acesso remoto futuramente de casa e em seguinda abrir um t�nel redirecionando a porta local 5901 em Smith para a porta remota 1024 em Trinity da seguinte forma.
[EMAIL PROTECTED]:~$ vncserver
New 'smith:1 (ricardo)' desktop is smith:1
Starting applications specified in /home/ricardo/.vnc/xstartup Log file is /home/ricardo/.vnc/smith:1.log [EMAIL PROTECTED]:~$ ssh -f -N -R 1024:localhost:5901 [EMAIL PROTECTED] da Trinity] [EMAIL PROTECTED] da Trinity]'s password: [senha do usu�rio agent em Trinity] [EMAIL PROTECTED]:~$
Perceba que a sintaxe � bem similar a do item anterior, exceto o -L que agora � -R de "reverse".
Deixando Smith ligado no servi�o vou para casa e de la executo o seguinte comando.
[EMAIL PROTECTED]:~$ vncviewer localhost:1024:1 [EMAIL PROTECTED]:~$
Mais uma vez a m�gica acontece, agora � s� digitar a senha do vncserver configurada no servi�o e partir para brincadeira.
Para finalizar tudo basta matar os processos como explicado no item anterior.
Conclus�o =========
A minha conclus�o � que os desenvolvedores do OpenSSH s�o g�nios!
Al�m da aplica��o com o VNC voc� pode utilizar o Tunelamento com OpenSSH para diversas outras aplica��es. Como por exemplo fazer uma conex�o segura com um servidor POP, desta forma tanto o seu nome de usu�rio e senha enviados ao servidor POP como seus e-mails seram encriptados e trafegaram com muito mais seguran�a pela internet.
Outra coisa interessante. que eu mesmo utilizo quase que diariamente. � fazer um ponte com uma terceira m�quina. No meu caso n�o gosto de deixar minha m�quina em casa ligada por muito tempo para n�o fritar o processador AMD, desta forma eu fa�o todo o procedimento acima com uma terceira m�quina na qual tenhu uma conta shell com acesso ao OpenSSH e quando estou em casa fecho o t�nel entre essa terceira m�quina e a minha m�quina.
Isso ir� afetar diretamente a velocidade, mas se voc� for usar somente o console, assim como eu, n�o ter� problema algum.
Refer�ncias ===========
- http://www.openssh.com
- http://www.realvnc.com
- http://www.google.com.br
--------------------
D�vidas, cr�ticas e sugest�es devem ser enviadas para [EMAIL PROTECTED] ([EMAIL PROTECTED]).
Quer saber mais um pouco sobre o autor desta documenta��o? Acesse minha home page em http://www.agentsmith.kit.net (http://www.agentsmith.kit.net).
-------------------------------------------------------------------
--------------------------------------------------------------------------- Esta lista � patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br
Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br Regras de utiliza��o da lista: http://linux-br.conectiva.com.br FAQ: http://www.zago.eti.br/menu.html
