VPN - usando SSH

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

[ Hits: 76.262 ]

Por: Perfil removido em 27/01/2012


Introdução e configuração do servidor



O SSH normalmente é usado com a principal finalidade que é o acesso remoto, porém, com esta poderosa ferramenta, há mais coisas que podem ser feitas, uma delas é criar túneis encriptados temporários e uma VPN real.

Neste artigo irei abordar como configurar seu servidor SSH para rodar como um servidor VPN para conexão ponto a ponto. Não se trata de um configuração trabalhosa.

O túnel que será criado irá utilizar a interface TUN/TAP, nos exemplos utilizaremos a TAP para estabelecer a conexão entre cliente e servidor

Chega de papo e vamos à prática!!!!

O primeiro passo é editar o arquivo "/etc/ssh/sshd_config" no servidor (você pode usar o próprio SSH para acessar e depois editar o arquivo), adicionando a linha abaixo no arquivo:

PermitTunnel yes


É necessário também que a linha "PermitRootLogin = yes" esteja presente, já que, por segurança, apenas o 'root' pode criar a VPN.

Se você não quer permitir logins como 'root' devido à questão da segurança, uma opção é combiná-la com a linha "PermitRootLogin = forced- commands-only", como em:

PermitRootLogin = yes
PermitRootLogin = forced-commands-only


Ela torna o acesso como 'root' um pouco mais restritivo, pois permite apenas o uso do 'root' para a execução de comandos (como o que usaremos para criar o túnel) e não para login direto. Depois de feitas as alterações, reinicie o servidor SSH para que as alterações entrem em vigor.

Reinicie o servidor com o comando:

# /etc/init.d/ssh restart

Após configurar o servidor e reiniciar o mesmo, seu servidor estará rodando o SSH e pronto para estabelecer a conexão VPN pelo protocolo de criptografia do SSH.

Caso apareça algum erro, pode ser que a versão do SSH que você utiliza seja mais antiga, pois o SSH só tem este recurso a partir da versão 4.3.

Neste caso, recomendo que instalar a versão mais nova pelo gerenciador de pacotes ou, baixando e instalando manualmente, para então poder proceder com a configuração e conexão da VPN.

Os erros que podem aparecer, caso seu SSH esteja com uma versão anterior à '4.3', são:
/etc/ssh/sshd_config: line 27: Bad configuration option: PermitTunnel
/etc/ssh/sshd_config: terminating, 1 bad configuration options

    Próxima página

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

Programando em Qt

Gerenciamento de Pacotes com Flatpak: Vantagens e Desvantagens

Alterando a imagem do xsplash nos Ubuntu-like

Formatando o bash com cores e efeitos

Arquivos de configuração de rede - Parte I - /etc/hosts

Leitura recomendada

Um olhar sobre as nuvens

Copie/Cole conteúdo do terminal para o X e vice-versa

I Encontro da Comunidade Viva o Linux

Como criar pacotes "task" para o APT

Entendendo os codecs, os containers formats e por que o Ogg é tão bom

  
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