VPN - usando SSH

Este artigo ensina como fazer o SSH trabalhar como uma VPN.

[ Hits: 76.224 ]

Por: Perfil removido em 27/01/2012


Definindo rotas



Todo o trabalho até então, foi apenas para estabelecer a conexão do cliente com servidor permitindo a comunicação entre ambos.

Porém, para que implantar uma VPN na rede, se não conseguir se comunicar com os outros 'hosts' da rede?

Como este não é o propósito do artigo, então vamos adicionar rotas para fazer com que o cliente se conecte aos 'hosts' da rede do servidor.

No servidor, execute os comandos abaixo para fazer o roteamento usando o 'root':

# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -s 10.5.5.2 -A POSTROUTING -o eth0 -j MASQUERADE


Explicação:

O primeiro comando faz com que o redirecionamento de pacotes seja ativado no servidor, permitindo que os pacotes do cliente seja redirecionado para os outros 'hosts' da rede e vice-versa.

O segundo comando faz com que todo tráfego vindo do cliente seja mascarado, neste caso estou supondo que a interface 'eth0' seja a interface conectada à rede local do servidor.

No cliente, ative uma rota para a rede do local do servidor:

# route add -net 192.168.222.0 netmask 255.255.255.0 gw 10.5.5.1 dev tap0

No comando acima, o '192.168.222.0' indica a faixa de endereços usada na rede local do servidor. O '255.255.255.0' indica a máscara, e o '10.5.5.1' indica o endereço da interface 'tap0' do servidor.

Com isso, o cliente passa a encaminhar todas as tentativas de acesso a endereços dentro da faixa especificada para o servidor (usando a interface 'tap0'), e o servidor as encaminha para a interface de rede local.

Conclusão

Esta é uma forma de utilizar uma VPN usando o SSH como ferramenta principal e bastante segura.

Referências:
Página anterior    

Páginas do artigo
   1. Introdução e configuração do servidor
   2. Estabelecendo a conexão - Túnel ponto a ponto
   3. Definindo rotas
Outros artigos deste autor

Criando Arrays, Arrays Multidimensionais e Hashes em BASH Script

Instalando o OpenOffice

Básico sobre tratamento de exceções em Python 3.4

Instalação de VMWare Server 1.8 em Debian Etch sem segredo

Usando tabelas no editor de textos do OpenOffice

Leitura recomendada

KDEMod 4.1 no Arch Linux

Conceitos de criptografia com chave simétrica e assimétrica

Exclusivo - Entrevista com Fábio Berbert, criador e mantenedor do projeto Viva o Linux!

Customizando o (K/X/ED)Ubuntu Linux Live-CD

Instalação e configuração da zsh no Gentoo GNU/Linux

  
Comentários
[1] Comentário enviado por hwarang em 27/01/2012 - 13:48h

Muito legal a dica!!!
Valews!!!

[2] Comentário enviado por removido em 27/01/2012 - 14:21h

Boa dica !

[3] Comentário enviado por dimasdaros em 27/01/2012 - 18:01h

Excelente dica.
Vou testar assim que chegar em casa.

Muito obrigado =)

----
Edit

Ocorreu tudo certo, muito massa
Cada dia aprendo uma coisa nova à respeito do SSH, redirecionamento de porta, abrir arquivo com X localmente, VPN.

E viva o espirito livre :P

[4] Comentário enviado por cesarufmt em 30/01/2012 - 10:09h

Já vou testar hoje.
Chegou em ótima hora!
Valeu demais! o//

[5] Comentário enviado por ricardoolonca em 01/02/2012 - 08:58h

Simples e eficiente. Parabéns pelo artigo.

[6] Comentário enviado por arthurmatiello em 02/02/2012 - 22:46h

OTIMO ARTIGO, ADICIONADO AOS FAVORITOS

[7] Comentário enviado por removido em 07/02/2012 - 19:01h

Obrigado pelos comentários..

Espero que ajude a muitos que necessitam criar uma vpn sem a necessidade configurações mais complexas.

Abraço...

[8] Comentário enviado por ragen em 23/02/2012 - 23:01h

Olá Edson,

Lendo o artigo pensei: ótimo, é uma mão na roda não precisar mais fazer chaves pro OpenVPN... Mas ai me ocorreu que e SE hipoteticamente alguém ganhar acesso à um servidor seu ele pode pular em efeito cascata para os demais tendo se houver autenticação por troca de chaves.

O pior já seria dado a shell de root para qualquer atacante que por exemplo bootasse sua máquina em modo single. Já parou para pensar nisso?

Mas não deixo de parabenizá-lo pelo excelente artigo e didática.

Abraço!

[9] Comentário enviado por removido em 24/02/2012 - 13:48h

Amigo ragen Obrigado pelo comentário e sua observação foi bem feita,

Mas...

Primeiro para acessar servidores usando autenticação com chaves de segurança é aconselhavel usar chaves com senha, para que se tenha mais segurança.

Segundo para acessar um servidor fisicamente, só pode alguém com permissão e não é qualquer um que pode, além de poder usar autenticação para manipular a edição das opções de boot e linha de comando do grub;

Mas caso alguém consiga acesso via ssh usando o usuário root, tem como limitar o usuário root localmente no servidor ssh, fiz uma observação na primeira página explicando que no arquivo de configuração do servidor ssh tem uma opção para "limitar" os recursos que o usuário root pode usar, fazendo com que o mesmo não consiga fazer login, Mas para fazer isso é necessário mais configurações no servidor para permitir os comandos remotamente.


[10] Comentário enviado por renato_pacheco em 28/02/2012 - 17:24h

Engraçado... não sabia q dava pra criar um túnel apenas com o SSH, mas os procedimentos (e até alguns parâmetros) são bem parecidos com os procedimentos do OpenVPN.

Show d bola!

[11] Comentário enviado por tonnytg em 07/01/2013 - 10:03h

Parabéns, ficou muito bem explicado.
Costumo usar o SSH para fazer tuneis redirecionando portas com: ssh -L 5901:localhost:5901 root@destino
Assim consigo abrir a porta 5901 do destino na minha própria máquina localhost:5901.

[12] Comentário enviado por kadu137 em 05/06/2013 - 22:39h

Ótima dica, é bom lembrar que se o IP do VPNServer(SSH) estiver no mesmo range da sua rede remota (um caso hipotético seria: rede com IP's reais de uma grande instituição), no momento que vc adicionar a rota para a rede, a conexão com 10.5.5.1 vai cair, porque ela já estava estabelecida através da sua máquina client WAN.

Aconteceu comigo e a solução em vez de criar a rota para a rede tora "- net" fiz um loop e criei por host "-host" e coloquei um if se chegar no ipsshserver.

Resumindo:

#LOOP Para adicionar Rota atraves da VPN
for ip in `seq 1 254`;do
if [ $ip -ne "SUFIXO IP SSHSERVER (ex.:190)" ];then
route add -host $PREFIXO.$ip/32 gw 10.5.5.1 dev tap0;
fi;
done

abraços.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts