Uma rede privada virtual (VPN – Virtual Private Network ) garante a segurança das comunicações ponto a ponto, nomeadamente a privacidade, integridade e autenticidade dos dados. Para isso esta tecnologia faz a encriptação dos pacotes, garantindo que estes não sejam lidos por terceiros.
Hoje vamos ensinar como podem criar um servidor de VPNs no Ubuntu 15.04 usando o OpenVPN.
O OpenVPN é um software multi-plataforma que permite a criação de uma VPN entre várias máquinas com sistemas operativos diferentes. Para proceder à instalação e configuração do OpenVPN e OpenSSL (obrigatório para a criação de certificados para o serviço), devem seguir os seguintes passos:
Passo 1) Instalar o Openvpn e Openssl
sudo apt-get install openvpn openssl
Passo 2) Copiar configuração de exemplo
O OpenVPN traz já uma configuração exemplo para ser usada como base. Vamos copiar essa configuração para /etc/openvpn
cp /usr/share/doc/openvpn-*/sample/sample-config-files/server.conf /etc/openvpn
Passo 3) Modificação do ficheiro de configuração do OpenVPN
Como resultado do passo anterior, passamos a ter em /etc/openvpn o ficheiro server.conf. Vamos editá-lo e incluir/alterar os seguintes parâmetros:
#Para encaminhar todo o trafego do cliente via VPN
push "redirect-gateway def1 bypass-dhcp"
#Servidores de DNS a serem usados pelo cliente
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
#Por questões de segurança, use o user e grupo nobody que têm poucas permissões
user nobody
group nobody
Passo 4) Cópia da estrutura easy-rsa
Após a instalação, é necessário gerar as chaves para o servidor e client. O openvpn traz já uma estrutura de exemplo, designada de easy-rsa, na qual podemos-nos basear para configurar a nossa VPN. Para isso, vamos usar essa estrutura em /etc/openvpn, copiando-a de /usr/share/easy-rsa.
sudo apt-get install easy-rsa
sudo cp -R /usr/share/easy-rsa /etc/openvpn
cd /etc/openvpn/easy-rsa/
Passo 5) Modificação do ficheiro “vars”
A ferramenta easy-rsa inclui o ficheiro “vars” que podemos editar e mudar alguns parâmetros definidos por omissão e que serão depois úteis na hora de criar os certificados. Para editar o ficheiro basta usar o comando:
nano -w /etc/openvpn/easy-rsa/vars
Nota: Adaptem os dados ao vosso cenário. Estes parâmetros podem ser posteriormente modificados, aquando da criação dos certificados.
Vamos agora copiar o ficheiro /etc/openvpn/easy-rsa/openssl-1.0.0.cnf para /etc/openvpn/easy-rsa/openssl.cnf para que não haja problemas ao nível do OpenSSL
cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
Passo 6) Criação da Autoridade de certificação (CA)
Basicamente basta introduzir os comandos seguinte e depois, de forma interativa, ir confirmando ou alterando as informações solicitadas.
cd /etc/openvpn/easy-rsa
source ./vars
./clean-all
./build-ca
./build-key-server server
É necessário também gerar a chave Diffie Hellman para a troca inicial segura (entre cliente e servidor) das chaves.
./build-dh
cd /etc/openvpn/easy-rsa/keys
cp dh1024.pem ca.crt server.crt server.key /etc/openvpn
Por fim, para autenticar os clientes com base no certificado, é preciso criar um certificado por cada cliente. Para isso basta usar executar os seguintes comandos:
cd /etc/openvpn/easy-rsa
./build-key client
Configurações de Encaminhamento
De acordo com a configuração que temos no ficheiro server.conf, o endereço 10.8.0.1 vai ser atribuído ao túnel do lado do servidor enquanto os restantes IPs da rede 10.8.0.0 passarão a estar disponíveis para os clientes.
Vamos então criar uma regra NAT no iptables para que todos os pacotes com origem na rede 10.8.0.0/24 sejam encaminhados via eth0
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo apt-get install iptables-persistent
Vamos agora activar o encaminhamento IP
nano -w /etc/sysctl.conf
net.ipv4.ip_forward = 1
E por fim vamos aplicar as configurações anteriores e iniciar o servidor OpenVPN
sysctl -p
/etc/init.d/openvpn start
Se tudo correr bem, podemos ver se o túnel já está criado usando o comando
ifconfig tun0