Introdução
Configuração de uma
Virtual Private Network (VPN) simples, usando criptografia com chaves estáticas.
"Rede Privada Virtual é uma rede de comunicações privada normalmente utilizada por uma empresa, ou um conjunto de empresas e/ou instituições, construída em cima de uma rede de comunicações pública (como por exemplo, a internet). O tráfego de dados é levado pela rede pública utilizando protocolos padrão, não necessariamente seguros.
VPNs seguras usam protocolos de criptografia por tunelamento que fornecem a confidencialidade, autenticação e integridade necessárias para garantir a privacidade das comunicações requeridas. Quando adequadamente implementados, estes protocolos podem assegurar comunicações seguras através de redes inseguras."
Fonte:
Virtual Private Network – Wikipédia, a enciclopédia livre
Configuração do servidor
No servidor:
Instale o
OpenVPN com o comando (se for uma distribuição baseada no
Debian):
# apt-get install openvpn
Gerar a chave criptográfica:
# openvpn --genkey --secret /etc/openvpn/key
"Key" é o nome da chave, e pode receber outro nome.
Com seu editor de textos, crie um arquivo de configuração do servidor, o nome é de sua preferência, é obrigatório colocar a extensão ".conf", o OpenVPN irá ler os arquivos ".conf" dentro da pasta "/etc/openvpn":
# vim /etc/openvpn/servidor.conf
No arquivo, coloque:
dev tun
ifconfig 10.0.0.1 10.0.0.2
secret /etc/openvpn/key
port 5000
comp-lzo
verb 4
keepalive 10 120
persist-key
persist-tun
float
Salve e feche o arquivo.
Explicação:
- dev tun :: habilita o suporte ao driver TUN/TAP.
- ifconfig :: configura o IP do servidor (10.0.0.1) e o IP do cliente (10.0.0.2).
- secret :: chama a chave criptografada passando a local dela.
- verb :: nível para depuração de erros.
- keepalive :: envia um ping a cada 10 segundos sem atividade na VPN, e reinicia a VPN depois de 120 segundo sem resposta.
- persist-key :: mantém as chaves carregadas, quando a VPN é reestabelecida depois de uma desconexão.
- persist-tun :: mantém a interface TUN aberta, quando a VPN é restabelecida depois de uma desconexão.
- float :: permite que o túnel continue aberto mesmo que o IP da outra máquina mude.
Inicie o OpenVPN:
# /etc/init.d/openvpn start
Verifique se foi criada uma nova interface de rede.
Ex.: tun0
# ifconfig
Configuração do cliente
Primeiro, é preciso copiar para o cliente a chave criptográfica criada no servidor, para isso, existem diversas formas.
Vou utilizar o comando
scp que permite copiar arquivos de uma máquina remota. Para utilizar o
scp, a máquina que possui o arquivo que será copiado precisa ter o servidor SSH instalado e funcionando.
Comando:
# scp root@IP_do_servidor:/etc/openvpn/chave /etc/openvpn/chave
Explicando o comando:
- scp :: programa que faz a cópia do arquivo.
- root :: usuário do servidor.
- : :: usado para separar o IP do caminho do arquivo.
- /etc/open/chave :: caminho completo do arquivo a ser copiado.
- /etc/openvpn/chave :: arquivo local que receberá o conteúdo do arquivo copiado.
Crie um arquivo para o cliente em "/etc/openvpn/". Exemplo:
# vim /etc/openvpn/cliente.conf
Coloque no arquivo:
dev tun
remote "IP_do_servidor_vpn_sem_aspas"
ifconfig 10.0.0.2 10.0.0.1
secret /etc/openvpn/key
port 5000
comp-lzo
verb 4
keepalive 10 120
persist-key
persist-tun
float
Salve e feche o arquivo.
Inicie o OpenVPN:
# /etc/init.d/openvpn start
Verifique se foi criada uma nova interface de rede.
Ex.: tun0
# ifconfig
Teste a conectividade
No cliente, ping o servidor:
# ping 10.0.0.1
No servidor, ping o cliente:
# ping 10.0.0.2
Com essa configuração, quando as máquinas servidor e cliente reiniciarem, a VPN será criada automaticamente.
* Lembre-se de mudar o IP na opção "remote" no cliente se o IP do servidor mudar.
Pronto.