Na semana passada foram publicados dois tutoriais a ensinar a instalar e a configurar um servidor de VPNs no Ubuntu, usando o OpenVPN. Mas como será no Raspberry Pi? Será que podemos usar o “mini PC” para funcionar como servidor até porque é um dispositivo bastante eficiente em termos energéticos? A resposta é sim, e a instalação e configuração é muito idêntica à que já apresentamos.
Como sabem, 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.
O OpenVPN é um software multi-plataforma que permite a criação de uma VPN entre várias máquinas com sistemas operativos diferentes, e ao contrário do protocolo PPTP, que garante uma criptografia considerada básica, este, para além de conseguir garantir uma elevada criptografia, garante também um elevado desempenho.
Algumas características do OpenVPN
- Criptografia entre: 160 bits e 256 bits, sendo os dados autênticos com certificados digitais;
- Um dos melhores protocolos a nível de desempenho, confiabilidade e estabilidade;
- Software multi-plataforma, suportado pela maioria dos sistemas operativos desktop e de dispositivos móveis (Android e iOS).
Vamos então começar com a instalação e configuração.
Passo 1) Instalar os serviços de OpenVPN e OpenSSL
sudo apt-get install openvpn openssl
Passo 2) Copiar a configuração de exemplo do easy-rsa
cd /etc/openvpn && sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 ./easy-rsa
Passo 3) 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 e editar confirme mostra a figura seguinte.
sudo nano easy-rsa/vars
Nota: Depois de editar o ficheiro, pressionar as teclas: Ctrl + X (sair), seguido de Y para gravar e Enter.
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.
sudo cp /etc/openvpn/easy-rsa/openssl-1.0.0.cnf /etc/openvpn/easy-rsa/openssl.cnf
Passo 4) Criação da Public Key Infrastructure usando osscripts easy-rsa
source ./vars
./easy-rsa/vars && sudo -E ./easy-rsa/clean-all
Nota2: -E: Indica que o utilizador deseja preservar as variáveis de ambiente existentes.
— Configuração do servidor —
Uma vez instalado o OpenVPN, vamos proceder à configuração do servidor. Para isso, vamos começar por criar o ficheiro da Autoridade de certificação (CA), onde irá ser pedido ao utilizador para completar alguns dados como o Nome, País, etc, que podem ser preenchidos ou não.
Passo 6) – Criar o ficheiro da Autoridade de certificação (CA)
cd easy-rsa && sudo -E ./build-ca VPN
Passo 7) Criação do certificado do servidor
Agora que temos a CA criada, vamos criar o próprio certificado para o servidor OpenVPN
sudo -E ./build-key-server server
O procedimento de preenchimento é o mesmo do anterior, acrescentando apenas um parâmetro ao qual devem responder sim (Y), sendo ele a assinatura do certificado. Se tiver alguma dificuldade veja aqui o nosso tutorial.
Passo 8) Gerar um certificado de cliente
sudo -E ./easy-rsa/build-key ipad
O nome dado ao certificado foi “ipad”, mas foram criados mais dois certificados (android e pc) para usar futuramente em cada dispositivo . Cada um pode criar os certificados que entender.
É necessário também gerar a chave Diffie Hellman para a troca inicial segura (entre cliente e servidor) das chaves. Para isso basta usar o seguinte comando:
sudo -E ./easy-rsa/build-dh
De seguida, vamos proceder à configuração propriamente dita do serviço OpenVPN, definindo alguns parâmetros importantes, como os certificados, servidor, DNS…
Passo 9) Criar ficheiro de configuração
Para criar um ficheiro com o nome server.conf podem usar o editor nano:
sudo nano /etc/openvpn/server.conf
O conteúdo do ficheiro deverá seguir o seguinte exemplo. Não se esqueçam de verificar se têm os certificados criados em /etc/openvpn/easy-rsa/keys.
ca /etc/openvpn/easy-rsa/keys/ca.crt
cert /etc/openvpn/easy-rsa/keys/server.crt
key /etc/openvpn/easy-rsa/keys/server.key
# Chave Diffie Hellman
dh /etc/openvpn/easy-rsa/keys/dh1024.pem
dev tun
server 10.8.0.0 255.255.255.0
proto udp
port 1194
#DNS Server
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
user nobody
group nogroup
persist-key
persist-tun
status /var/log/openvpn-status.log
log-append /var/log/openvpn
comp-lzo
client-to-client
#Para encaminhar todo o trafego do cliente via VPN
push "redirect-gateway def1"
Como se pode verificar na configuração acima, a porta definido para correr o serviço é o 1194. Por omissão, o serviço OpenVPN usa esta porta, mas podem sempre alterar alterar assim como os DNS entre outros parametros.
E está feito. No próximo tutorial vamos ensinar como podem configurar o NAT no Raspberry e também o Port Forwarding, no router Technicolor TG784n v3. Estejam atentos, a segunda parte sai já amanha.