Criando VPNs usando chaves estáticas

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

Nenhum comentário:

Postar um comentário