Voltar ao blog

Configurando o OpenVPN no Ubuntu 18.04

Configurando o OpenVPN no Ubuntu 18.04

Introdução

Gostaria de acessar a Internet de forma segura a partir do seu smartphone ou laptop quando se conecta a uma rede não confiável (por exemplo, Wi-Fi em um hotel ou cafeteria)? Felizmente, existe uma maneira de realizar o seu desejo. Você pode se conectar de forma segura a uma rede não confiável como se estivesse em uma rede privada usando uma Rede Privada Virtual (VPN).

O que é uma VPN?

VPN significa Rede Privada Virtual (Virtual Private Network). Ela oferece a possibilidade de abrir um túnel seguro para um servidor confiável. Todas as solicitações são então enviadas e recebidas por meio deste servidor. A vantagem é proteger o seu acesso e transações ao usar redes públicas, como Wi-Fi gratuito em um hotel.

Através da VPN, todos os dados são criptografados e processados pelo servidor. Dispositivos intermediários, como roteadores de terceiros e afins, não têm como redirecionar o tráfego para destinos indesejados. Além disso, uma vez estabelecida a conexão com sucesso, você passa a fazer parte da rede do servidor. Outros servidores, computadores ou dispositivos, como impressoras, que normalmente só estariam acessíveis na rede local do servidor, agora também podem ser alcançados através do túnel VPN. No entanto, como nem todos os dados precisam ser enviados por um túnel criptografado, é possível configurar o cliente VPN para que apenas uma parte definida das solicitações seja enviada pelo túnel VPN. O restante do tráfego é processado normalmente pela Internet.

Neste tutorial, vamos guiar você pelos passos de configuração de um servidor OpenVPN no Ubuntu 18.04.

Requisitos

Você precisa ter acesso a um servidor Ubuntu 18.04 para hospedar o seu OpenVPN serviço para concluir este tutorial. Antes de iniciar este guia, você também precisa configurar um usuário não-root com permissões sudo. Você pode instalar facilmente o seu servidor seguindo o nosso tutorial sobre como configurar um servidor Ubuntu.

Além disso, você precisará de um computador separado para funcionar como uma autoridade de certificação (CA). Tecnicamente, você pode usar o seu servidor OpenVPN ou o seu computador local como uma autoridade de certificação. No entanto, não recomendamos isso, pois exporá sua VPN a falhas de segurança. De acordo com a documentação oficial do OpenVPN, você deve colocar a autoridade de certificação em um computador separado dedicado a importar e assinar solicitações de certificado. Portanto, assumimos que sua autoridade de certificação está em um servidor Ubuntu 18.04 separado que também possui um usuário não-root com permissões sudo e um firewall básico. Ao longo deste guia, todas as etapas de instalação e configuração serão as mais simples possíveis para cada uma das instalações. Você também pode dar uma olhada no nosso tutorial sobre como configurar um servidor Open VPN no Docker.

Passo 1 – Instalar o OpenVPN e o EasyRSA

Primeiro, atualize o índice de pacotes do seu servidor VPN e instale o OpenVPN. Você pode instalar o OpenVPN usando o apt porque ele está disponível nos repositórios padrão do Ubuntu:

Passo 2: Criar uma autoridade de certificação

Crie uma autoridade de certificação (CA) simples para emitir certificados confiáveis para o servidor OpenVPN. Para fazer isso, baixe a versão mais recente do EasyRSA tanto na sua máquina CA quanto no servidor OpenVPN usando o wget. Para obter a versão mais recente, acesse a página de Releases do projeto oficial do EasyRSA no GitHub, copie o link de download para o arquivo que termina em .tgz e cole-o no seguinte comando:

Em seguida, extraia o arquivo tarball:

 OpenVPN EasyRSA software

Neste ponto, todo o software necessário foi instalado com sucesso no seu computador CA e no servidor.

Passo 3 – Configurar as variáveis do EasyRSA e criar a CA

O EasyRSA vem com um arquivo de configuração que você pode editar para definir uma série de variáveis para a sua CA usando este comando:

Há um arquivo no diretório com o nome vars.example. Faça uma cópia deste arquivo e nomeie a cópia como vars sem extensão de arquivo:

Use o seu editor de texto preferido para abrir este novo arquivo:

Em seguida, encontre as configurações que definem os padrões de campo para novos certificados. Será semelhante a isto:

Atualize essas variáveis para o que desejar, conforme mostrado abaixo:

Salve e feche o arquivo assim que estiver pronto. O próximo passo é chamar o script easyrsa e executá-lo com a opção init-pki para iniciar a infraestrutura de chaves públicas no servidor CA:

easyrsa init-pki

Em seguida, execute o comando build-ca com a opção nopass para que você não precise digitar uma senha toda vez que interagir com sua CA:

Na saída, você será solicitado a confirmar o nome comum para sua CA:

 OpenVPN build-ca

Com isso, sua CA está configurada e pronta para começar a assinar solicitações de certificado.

Passo 4 – Gerar certificado do servidor, chave e arquivos de criptografia

Depois que a CA estiver pronta, você poderá gerar a chave privada e a solicitação de certificado a partir do servidor e, em seguida, enviá-la para a CA para assinatura, criando o certificado necessário. Primeiro, navegue até o diretório EasyRSA no servidor OpenVPN:

A partir daí, execute o script easyrsa com a opção init-pki. Embora você já tenha executado este comando no computador da CA, este comando também deve ser executado aqui. Isso ocorre porque os diretórios PKI do servidor e da CA são diferentes:

Em seguida, chame o script easyrsa novamente, desta vez com a opção gen-req, seguida pelo nome genérico do computador:

Isso criará uma chave privada para o servidor e um arquivo de solicitação de certificado chamado server.req. Copie a chave do servidor para o diretório /etc/openvpn/:

Transfira o arquivo server.req para o seu computador CA usando um método seguro (como SCP no exemplo a seguir):

Em seguida, navegue até o diretório EasyRSA no seu computador CA:

Use o script easyrsa novamente para importar o arquivo server.req e adicione seu nome comum após o caminho do arquivo:

Em seguida, assine a solicitação executando o script easyrsa com a opção sign-req seguida pelo tipo de solicitação e nome comum. Para a solicitação de certificado do servidor OpenVPN, certifique-se de usar o tipo de solicitação server:

A saída solicita que você verifique se a solicitação é de uma fonte confiável. Digite yes e pressione Enter para confirmar. Verifique os detalhes mostrados abaixo para garantir a precisão. Observe que esta solicitação ainda não foi verificada por senha.

Solicite o assunto e assine-o como um certificado de servidor por 3650 dias:

 OpenVPN sign certificate for server

Se você criptografou a chave CA, a senha será solicitada neste momento. Em seguida, use um método seguro para transferir o certificado assinado de volta para o seu servidor VPN:

Transfira o arquivo ca.rt para o servidor antes de fazer logout do computador CA:

Em seguida, faça login no seu servidor OpenVPN novamente e copie os arquivos server.crt and ca.crt para o seu diretório /etc/openvpn/:

Em seguida, navegue até o seu diretório EasyRSA:

Insira o seguinte código para criar uma chave Diffie-Hellman forte que você possa usar durante a troca de chaves:

Quando terminar, gere uma assinatura HMAC para melhorar a funcionalidade de verificação de integridade TLS do servidor:

Quando o comando for concluído, copie os dois novos arquivos para o diretório / etc / openvpn /:

Dessa forma, todos os certificados e arquivos de chave exigidos pelo servidor são gerados. Agora, você pode criar o certificado e a chave apropriados que o computador cliente usará para acessar o servidor OpenVPN.

Passo 4 – Gerar certificado do cliente e par de chaves

Em seguida, criaremos uma chave de cliente e vários certificados. Se você tiver vários clientes, poderá repetir esse processo para cada cliente. Observe, no entanto, que você deve passar um valor de nome exclusivo para o script para cada cliente. Neste tutorial, nomearemos o primeiro par de certificado/chave como client1. Primeiro, crie uma estrutura de diretórios em seu diretório home para armazenar os certificados do cliente e os arquivos de chave:

Como você salva o par de certificado/chave e o arquivo de configuração do cliente neste diretório por motivos de segurança, você deve agora revogar as permissões:

Em seguida, navegue de volta para o diretório EasyRSA e execute o script easyrsa com as opções gen-req e nopass, bem como o nome genérico do cliente:

Pressione Enter para confirmar o nome comum. Depois disso, copie o arquivo client1.key para o diretório / client-configs / keys / criado anteriormente:

Em seguida, use um método seguro para transferir o arquivo client1.req para o seu computador CA:

Faça login no seu computador CA, navegue até o diretório EasyRSA e importe a solicitação de certificado:

import client.req

Em seguida, como na etapa anterior, assine a solicitação no servidor. Mas desta vez você precisa especificar o tipo de solicitação do cliente:

No prompt, digite yes para confirmar que deseja assinar a solicitação de certificado e que a solicitação de certificado é de uma fonte confiável. Digite a palavra “yes” para continuar ou digite qualquer outra coisa para ser descartada:

sign certificate

Se você criptografou a chave CA, também será solicitado que insira a senha aqui. Isso criará um arquivo de certificado de cliente chamado client1.crt. Transfira este arquivo de volta para o servidor:

Faça SSH de volta para o seu servidor OpenVPN e copie o certificado do cliente para o diretório / client-configs / keys /:

Em seguida, copie os arquivos ca.crt e ta.key para o diretório / client-configs / keys /:

Ao mesmo tempo, todos os certificados e chaves do servidor e do cliente foram gerados e salvos nos diretórios correspondentes no servidor. Agora você pode continuar a configurar o OpenVPN no servidor.

 Passo 5 – Configurando o serviço OpenVPN

Após gerar os certificados do cliente e do servidor, você pode configurar o serviço OpenVPN para usar essas credenciais. Primeiro, copie o arquivo de configuração de exemplo do OpenVPN para o seu diretório de configuração e, em seguida, extraia-o para usá-lo como base de configuração:

Abra o arquivo de configuração do servidor no seu editor de texto preferido:

Em seguida, encontre a parte HMAC procurando pelo comando tls-auth:

Encontre a parte da senha procurando pela linha de senha comentada. A criptografia AES-256-CBC oferece um bom nível de criptografia e é bem suportada. A linha não deve estar comentada, mas se estiver, exclua o “;” antes:

Abaixo disso, adicione um comando Auth para selecionar o algoritmo de resumo de mensagem HMAC. O SHA256 é uma boa escolha para isso:

Em seguida, encontre a linha com a instrução dh que define os parâmetros Diffie-Hellman. Devido a algumas alterações recentes no EasyRSA, o nome do arquivo da chave Diffie-Hellman pode ser diferente do nome do arquivo listado no arquivo de configuração de exemplo do servidor. Se necessário, altere o nome do arquivo listado aqui excluindo 2048 para alinhá-lo com a chave do passo anterior:

Finalmente, encontre as configurações de usuário e grupo e exclua o “;” no início de cada linha:

Até agora, as alterações que você fez no arquivo server.conf de exemplo devem permitir que o OpenVPN funcione.

Passo 6 – Configuração de rede do servidor

Configure o encaminhamento de IP para rotear corretamente o tráfego através da VPN. Isso é essencial para a funcionalidade de VPN que seu servidor fornece:

Procure pela linha comentada que define net.ipv4.ip_forward. Remova o caractere “#” do início da linha para descomentar essa configuração:

Salve o arquivo e feche-o quando terminar. Para ler o arquivo e ajustar os valores para a sessão atual, digite:

sysctl -p

Em seguida, adicione a interface de rede pública da sua máquina:

Sua interface pública é a string na saída deste comando que segue a palavra “dev”. Por exemplo, este resultado mostra a interface chamada ens3.

default ip route

Abra o arquivo /etc/ufw/before.rules para adicionar a configuração relevante:

Perto do topo do arquivo, adicione as linhas destacadas abaixo para definir a política padrão para a cadeia POSTROUTING na tabela nat e mascarar qualquer tráfego vindo da VPN. Altere ens3 na linha -A POSTROUTING abaixo pela interface que você encontrou no comando acima:

Salve o arquivo e feche-o quando terminar. Em seguida, você precisa dizer ao UFW para permitir pacotes encaminhados por padrão também. Para fazer isso, abra o arquivo /etc/default/ufw:

Dentro dele, encontre a diretiva DEFAULT_FORWARD_POLICY e altere o valor de DROP para ACCEPT:

Salve e feche o arquivo quando terminar. Em seguida, ajuste o firewall para habilitar o tráfego para o OpenVPN. Se você não alterou a porta e o protocolo no arquivo /etc/openvpn/server.conf, precisará liberar o tráfego UDP para a porta 1194. Se você modificou a porta e/ou o protocolo, substitua pelos valores que selecionou aqui. Caso tenha esquecido de adicionar a porta SSH ao seguir o tutorial de pré-requisitos, adicione-a aqui também:

Depois de adicionar essas regras, desative e reative o UFW para reiniciá-lo e carregar as alterações de todos os arquivos que você modificou:

ufw commands

Parabéns, seu servidor agora está configurado para lidar corretamente com o tráfego do OpenVPN!

Conclusão

Se você seguiu este tutorial até o fim, agora poderá navegar pela Internet com segurança. Você poderá manter sua identidade, localização e tráfego longe de olhares curiosos.

Boa computação!

 

 

author

Akshay Nagpal

Autor · CloudSigma

Preslav Dobrev é um designer criativo na CloudSigma, focado na construção de uma identidade empresarial consistente por meio de canais de marketing tradicionais e inovadores. Ele é hábil em combinar a visão artística com o marketing estratégico para criar narrativas de marca impactantes.

Comentários

Nenhum comentário ainda. Seja o primeiro.