Sei sulla pagina 1di 4

19/08/12

VPN - usando SSH [Artigo]

VPN - usando SSH


Autor: Edson <edsondeabreuoliveira at yahoo.com.br>
Data: 27/01/2012
Introduo e configurao do servidor
O SSH normalmente usado com a principal finalidade que o acesso remoto, porm, com esta
poderosa ferramenta, h mais coisas que podem ser feitas, uma delas criar tneis encriptados
temporrios e uma VPN real.
Neste artigo irei abordar como configurar seu servidor SSH para rodar como um servidor VPN para
conexo ponto a ponto. No se trata de um configurao trabalhosa.
O tnel que ser criado ir utilizar a interface TUN/TAP, nos exemplos utilizaremos a TAP para
estabelecer a conexo entre cliente e servidor
Chega de papo e vamos prtica!!!!
O primeiro passo editar o arquivo "/etc/ssh/sshd_config" no servidor (voc pode usar o prprio SSH
para acessar e depois editar o arquivo), adicionando a linha abaixo no arquivo:
PermitTunnel yes
necessrio tambm que a linha "PermitRootLogin = yes" esteja presente, j que, por segurana, apenas
o 'root' pode criar a VPN.
Se voc no quer permitir logins como 'root' devido questo da segurana, uma opo 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
execuo de comandos (como o que usaremos para criar o tnel) e no para login direto. Depois de feitas
as alteraes, reinicie o servidor SSH para que as alteraes entrem em vigor.
Reinicie o servidor com o comando:
# /etc/init.d/ssh restart
Aps configurar o servidor e reiniciar o mesmo, seu servidor estar rodando o SSH e pronto para
estabelecer a conexo VPN pelo protocolo de criptografia do SSH.
Caso aparea algum erro, pode ser que a verso do SSH que voc utiliza seja mais antiga, pois o SSH s
www.vivaolinux.com.br/artigos/impressora.php?codigo=13301

1/4

19/08/12

VPN - usando SSH [Artigo]

tem este recurso a partir da verso 4.3.


Neste caso, recomendo que instalar a verso mais nova pelo gerenciador de pacotes ou, baixando e
instalando manualmente, para ento poder proceder com a configurao e conexo da VPN.
Os erros que podem aparecer, caso seu SSH esteja com uma verso anterior '4.3', so:
/etc/ssh/sshd_config: line 27: Bad configuration option: PermitTunnel
/etc/ssh/sshd_config: terminating, 1 bad configuration options

Estabelecendo a conexo - Tnel ponto a ponto


Depois de realizar a configurao no servidor, hora de estabelecer a conexo com o mesmo e comear
a usar sua VPN.
Logado como 'root' (no cliente), digite no terminal o comando abaixo:
# ssh -f -w 0:0 -o Tunnel=ethernet root@192.168.222.33 ifconfig tap0 10.5.5.1 netmask
255.255.255.0
Obs.: necessrio digitar usando o usurio 'root', pois s ele tem poder administrativo para gerar o
dispositivo virtual no servidor e no cliente. A autenticao realizada vai seguir a configurada no servidor,
pode ser atravs da senha do 'root' ou atravs das chaves de autenticao ( o que mais seguro).
Caso digite o comando sem o usurio 'root' ter permisso de se logar via SSH (configurao feita no
"/etc/ssh/sshd_config" na primeira pgina), provavelmente um erro como o mostrado abaixo ser
retornado:
Tunel device open failed
Could not request tunnel forwarding
Caso aparea este outro erro descrito abaixo, significa que, ou o SSH do servidor no est usando uma
verso mais antiga ou a opo 'PermitTunnel' est desabilitada:
SIOCSIFADDR: Dispositivo inexistente
tap0: ERROR while getting interface flags: Dispositivo inexistente
SIOCSIFNETMASK: Dispositivo inexistente
Explicao das opes usadas:
-f:- Esta opo faz com que o comando seja executado em background e no fique ocupando seu
terminal durante a execuo.
-w 0:0:- usada para criar o tnel, neste caso criando a interface 'tap0' no cliente e a interface
'tap0' no servidor.
-o Tunnel=ethernet:- Indica que deve ser criada uma interface virtual TAP. O default do SSH
(quando a opo omitida) criar uma interface TUN. A grande diferena entre as duas que a
interface TAP pode ser usada para criar um 'bridge', o que permite efetivamente unir as duas redes.
root@192.168.222.33:- O '192.168.222.33' representa o endereo IP do servidor, e deve ser
substitudo pelo endereo IP do seu servidor SSH. O "root" refere-se ao usurio que ir logar no
servidor.
www.vivaolinux.com.br/artigos/impressora.php?codigo=13301

2/4

19/08/12

VPN - usando SSH [Artigo]

ifconfig tap0 10.5.5.1 netmask 255.255.255.0:- Configura o endereo IP e a mscara que ser
usada pela interface 'tap0' que ser criada no servidor. Voc pode usar o endereo e mscara que
quiser, mas ela deve ser diferente da faixa de IPs usada na rede local.
Aps executar o comando no cliente e no ter gerado algum erro como comentado no inicio da pgina,
logue no servidor como 'root' e execute o comando:
# ifconfig
E veja que a interface 'tap0' foi criada:
tap0 Encapsulamento do Link: Ethernet Endereo de HW EA:CE:66:FB:1A:DG
inet end.: 10.5.5.1 Bcast:10.5.5.255 Masc:255.255.0.0
endereo inet6: fe80::e8ce:ecff:fefb:1add/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Mtrica:1
pacotes RX:4 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:26 erros:0 descartados:0 excesso:0 portadora:0
colises:0 txqueuelen:500
RX bytes:328 (328.0 b) TX bytes:4317 (4.2 KiB)
Observe que foi criado at um MAC para a interface virtual.
Agora hora de configurar a interface 'tap0' do cliente que ainda no foi ativada. Para isto, execute no
terminal como 'root':
# ifconfig tap0 10.5.5.2 netmask 255.255.255.0 up
Teste, usando o ping:
# ping -c 3 10.5..5.1
Definindo rotas
Todo o trabalho at ento, foi apenas para estabelecer a conexo do cliente com servidor permitindo a
comunicao entre ambos.
Porm, para que implantar uma VPN na rede, se no conseguir se comunicar com os outros 'hosts' da
rede?
Como este no o propsito do artigo, ento 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
Explicao:
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.
www.vivaolinux.com.br/artigos/impressora.php?codigo=13301

3/4

19/08/12

VPN - usando SSH [Artigo]

O segundo comando faz com que todo trfego 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 endereos usada na rede local do servidor. O
'255.255.255.0' indica a mscara, e o '10.5.5.1' indica o endereo da interface 'tap0' do servidor.
Com isso, o cliente passa a encaminhar todas as tentativas de acesso a endereos dentro da faixa
especificada para o servidor (usando a interface 'tap0'), e o servidor as encaminha para a interface de rede
local.

Concluso
Esta uma forma de utilizar uma VPN usando o SSH como ferramenta principal e bastante segura.
Referncias:
http://www.hardware.com.br - Criando VPNs usando o SSH

http://www.vivaolinux.com.br/artigo/VPN-usando-SSH
Voltar para o site

www.vivaolinux.com.br/artigos/impressora.php?codigo=13301

4/4

Potrebbero piacerti anche