Criando VPNs usando chaves estáticas

A forma mais simples de configurar o OpenVPN é utilizar chaves estáticas, onde um arquivo contendo um algoritmo de encriptação é usado pelas duas partes para encriptar os dados transmitidos através da VPN.

Nesse modo, você gera uma arquivo de texto no servidor, contendo a chave de encriptação e precisa apenas copiá-la para o cliente e fazer uma configuração rápida para criar a VPN. Se você quer apenas criar uma VPN doméstica, ou criar uma VPN temporária entre duas redes, esta é a configuração recomendada.

O grande problema em utilizar uma chave estática é que, como o nome sugere, a mesma chave é utilizada sessão após sessão, sem nunca mudar. Com isso, existe uma pequena possibilidade de um atacante obstinado conseguir quebrar a VPN usando um ataque de força bruta. Como a chave é um arquivo de texto, que é armazenado tanto no cliente quanto no servidor, existe também a possibilidade de alguém conseguir copiá-lo, caso tenha acesso físico a uma das máquinas. Outra limitação é que usando uma chave estática o servidor suportará a conexão de um único cliente por VPN.

Para VPNs com vários clientes, ou em redes empresariais, onde a segurança é prioridade, é recomendável utilizar uma estrutura baseada em certificados X509, como veremos no tópico seguinte.

Vamos então à configuração de nossa primeira VPN. Para este exercício inicial, recomendo que utilize duas máquinas da rede local, que não tenham firewall ativo. Depois de entender melhor como o sistema funciona, passaremos para uma configuração mais elaborada.

O primeiro passo é gerar o arquivo com a chave, no servidor. O arquivo deve ser gerado dentro do diretório “/etc/openvpn” (o diretório padrão de configuração), de forma que acessamos o diretório antes de executar o comando que gera a chave:

# cd /etc/openvpn
# openvpn –genkey –secret static.key

Isso gerará o arquivo “static.key”, que contém a chave de encriptação que será usada para criar a conexão. Ele é um arquivo de texto simples, que contém uma chave de 2048 bits, como em:

#
# 2048 bit OpenVPN static key
#
—–BEGIN OpenVPN Static key V1—–
0600d007988a59c6f7895884d336d445
2679fd3d2c0b9e0b777b4da92ab97043
… (mais 13 linhas)
e871ed9077185a2a6904e67cd0869e15
—–END OpenVPN Static key V1—–

Este arquivo deve ser copiado para a pasta “/etc/openvpn” do cliente, usando (por exemplo) o SFTP. Você pode usar também um pendrive, ou outra mídia de uso local, mas não é recomendável enviá-lo por meios não seguros (e-mail por exemplo), já que qualquer um que tenha acesso ao arquivo poderá se conectar à sua VPN ou desencriptar todo o tráfego transmitido através dela.

Para acessar o servidor (a partir do cliente) via SFTP, use o comando “sftp ip” para se conectar e, em seguida, use os comandos “cd /etc/openvpn” e “get static.key” para fazer a cópia, como em:

# cd /etc/openvpn
# sftp root@192.168.1.101
Password:
sftp> cd /etc/openvpn
sftp> get static.key

Fetching /etc/openvpn/static.key to static.key
sftp> quit

Com o arquivo contendo a chave presente nas duas máquinas, falta criar os arquivos de configuração que serão usados pelo OpenVPN. Neste exemplo, criarei o arquivo “/etc/openvpn/server.conf” no servidor e o arquivo “/etc/openvpn/client.conf” no cliente. Os nomes podem ser diferentes, mas os arquivos devem ser criados dentro da pasta “/etc/openvpn” e devem terminar com a extensão “.conf”

O arquivo “/etc/openvpn/server.conf”, no servidor, fica com o seguinte conteúdo:

dev tun
ifconfig 10.0.0.1 10.0.0.2
secret static.key

A linha “ifconfig 10.0.0.1 10.0.0.2” inclui os endereços que serão usados pelas interfaces virtuais da VPN, no servidor e no cliente. No exemplo, o servidor utilizará o endereço “10.0.0.1” e o cliente o endereço “10.0.0.2”. Você pode utilizar outros endereços se preferir. O importante é que os endereços utilizados na VPN devem ser sempre diferentes dos endereços usados na rede local.

A linha “secret static.key” especifica o arquivo com a chave de encriptação, que criamos no passo anterior. Não esqueça de alterar a linha caso o nome do arquivo seja diferente.

Em seguida, vem o arquivo “/etc/openvpn/client.conf”, que deve ser criado no cliente:

remote 192.168.1.101
dev tun
ifconfig 10.0.0.2 10.0.0.1
secret static.key

A primeira linha especifica o endereço IP do servidor. No exemplo, estou utilizando um endereço de rede local, já que estamos apenas testando a VPN, mas, em um exemplo real de uso, você utilizaria o endereço IP de Internet do servidor ou (ao utilizar uma conexão com IP dinâmico) um domínio virtual utilizado por ele. Se você ainda não tem um, acesse o no-ip.com ou o dyndns.org e faça o registro.

Com os arquivos de configuração criados, inicializar a VPN é incrivelmente simples. Você precisa apenas reiniciar o serviço “openvpn” tanto no cliente quanto no servidor, usando o comando:

# /etc/init.d/openvpn restart

Ao ser iniciado, o serviço procura por arquivos “.conf” dentro do diretório “/etc/openvpn” e inicia as VPNs configuradas automaticamente (desde que o serviço esteja configurado para subir durante o boot, o que é feito por padrão na maioria das distribuições). Isso não apenas simplifica a configuração, mas faz com que a VPN passe a ser automaticamente restabelecida a cada boot. Para desativá-la, basta parar o serviço:

# /etc/init.d/openvpn stop

Você pode, também, ativar o OpenVPN manualmente, usando (como root) o comando:

# openvpn –config /etc/openvpn/client.conf

(onde o “client.conf” é o arquivo de configuração que será usado)

Este comando manual permite acompanhar as mensagens de inicialização e de conexão, o que ajuda a descobrir o que está errado em casos em que a VPN não funciona, embora a configuração pareça estar correta.

Se a VPN é usada pelos clientes apenas esporadicamente, você pode criar um ícone no desktop, ou um pequeno script contendo o comando, para que o usuário possa se conectar à VPN apenas quando precisar. Outra opção é instalar o kvpnc (http://home.gna.org/kvpnc/), um cliente gráfico que pode ser usado para se conectar a VPNs baseadas em diversos protocolos, incluindo o OpenVPN:

138f1016

Depois de estabelecida a VPN, o cliente passará a ter uma nova interface de rede, a “tun0”, com o endereço IP “10.0.0.2”, que funciona como um link ponto-a-ponto com a interface “tun0” do servidor, que recebe o endereço “10.0.0.1”:

6a8c8d7d

Teste a conexão usando o ping, ou acessando algum serviço disponível no servidor, como em:

# ssh 10.0.0.1

Depois do teste inicial, você pode fazer um teste realizando a conexão via Internet (você pode usar uma conexão discada ou outra conexão temporária no cliente para fazer o teste). Para isso, você vai precisar apenas alterar a configuração no cliente, adicionando o endereço de internet do servidor, como em:

remote guiadohardware.no-ip.org
dev tun
ifconfig 10.0.0.2 10.0.0.1
secret static.key

Não se esqueça de reiniciar o OpenVPN para que a alteração entre em vigor:

# /etc/init.d/openvpn restart

:. Leia mais sobre servidores Linux

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X