Crie sua própria rede privada virtual Linux com OpenVPN

Creați-vă propria rețea privată virtuală Linux cu OpenVPN
⏱️ 11 min read

As redes privadas virtuais (VPNs) permitem que você oculte suas transmissões de dados online e aprimore sua segurança ao navegar na Internet em locais públicos. Muitos provedores de serviços online oferecem opções de VPN gratuitas e pagas para você usar. No entanto, mesmo os planos mais bem pagos podem não ser confiáveis ​​ou ser lentos às vezes.

Se ao menos você pudesse criar sua própria VPN entre o computador móvel e o computador doméstico.

Na verdade, esse processo é mais fácil do que você imagina. Hoje vamos discutir como você pode usar o OpenVPN para criar uma conexão segura entre um cliente e servidor em uma máquina Linux.

Lembre-se de que criaremos uma configuração de roteamento e não um unindo um, que deve ser adequado para a maioria dos casos de uso. Os usuários do Windows podem acompanhar lendo o Documentação OpenVPN, começando com a seção sobre como configurar uma autoridade de certificação. Os comandos usados ​​no Windows serão semelhantes aos mostrados abaixo.

O que você precisa

Você precisará de dois computadores – um é a máquina do servidor, enquanto o outro é o cliente. A máquina do servidor pode ser seu desktop doméstico ou uma instância do Linux da DigitalOcean ou Linode. A máquina cliente é o computador que você usa regularmente. Como este tutorial é feito no Linux, os dois computadores também precisam rodar o Linux.

Nota: Neste tutorial, usaremos o Ubuntu como nossa distro para a máquina servidor e cliente.

Instalando OpenVPN

Para começar, você precisa instalar o OpenVPN e o Easy-RSA em seu servidor. Em seguida, instale o OpenVPN em sua máquina cliente.

No Ubuntu, você deve instalar o Easy-RSA a partir de esta página do Github. O Ubuntu inclui o Easy-RSA versão 2 em seus repositórios. O link do Github oferece o Easy-RSA versão 3, que segue os comandos que usarei neste artigo.

No diretório em que você clonou o repositório Github, copie o diretório “easyrsa3” que ele contém em “/ etc / easy-rsa /.”

Infraestrutura de chave pública (PKI)

O OpenVPN usa uma infra-estrutura de chave pública (PKI) para estabelecer a identidade de servidores e clientes para que essas entidades separadas possam se comunicar. A PKI usa uma Autoridade de Certificação (CA) mestre junto com certificados individuais e chaves privadas para cada servidor e cliente.

O CA deve assinar os certificados do servidor e do cliente. O OpenVPN então verifica se o servidor autentica a identidade de cada cliente e, ao mesmo tempo, cada cliente verifica a identidade do servidor.

A configuração aqui é mais complicada do que você pode achar para conexões do estilo PPTP, mas fornece melhor segurança aos usuários e dá ao servidor mais liberdade para aceitar ou negar conexões de cliente de entrada solicitadas.

Criando o Certificado CA

Para maior segurança, é recomendado que sua máquina CA seja diferente de seu servidor. Para resumir, este artigo usará a mesma máquina para ambas as tarefas. Você deve alterar seus procedimentos de cópia de arquivo para acomodar sua situação – se estiver usando scp para transferências de rede ou usando uma chave USB para mover arquivos manualmente.

Nota: se você usar um computador separado como seu CA, você precisará instalar o Easy-RSA nessa máquina.

1. Altere os diretórios para “/ etc / easy-rsa /:”

2. Se necessário, copie “/etc/easy-rsa/vars.example” para “/ etc / easy-rsa / vars.” Em seguida, abra o vars para editar seu conteúdo:

3. Insira os detalhes como seu país, província, cidade, organização e e-mail. Remova o comentário das linhas mostradas aqui, removendo o “#” no início de cada uma.

Quando terminar de editar, salve (Ctrl + o) e sair (Ctrl + x)

4. Inicialize sua nova PKI e gere o par de chaves da Autoridade de Certificação que você usará para assinar certificados individuais de servidor e cliente:

Copie o arquivo ca.crt que você acabou de criar para o diretório do servidor OpenVPN. Você também deve alterar seu proprietário e grupo com Chown:

Criando o certificado do servidor e a chave privada

Volte para o diretório Easy-RSA e gere o certificado do servidor e sua chave privada:

Você pode alterar “ServerName” no comando acima para qualquer nome que desejar. Certifique-se de refletir essa mudança ao copiar sua nova chave para o diretório do servidor OpenVPN:

Arquivo de parâmetros Diffie-Hellman

O OpenVPN usa o método de troca de chaves Diffie-Hellman (DH) para trocar chaves criptográficas com segurança em uma rede. Você criará um arquivo de parâmetros DH com o seguinte comando:

O número final, 2048, naquele comando mostra o número de bits usados ​​na criação do arquivo. Por exemplo, você poderia usar 4096, mas demoraria muito mais para gerar o arquivo e não melhoraria muito a segurança. O padrão é 2048 e esse valor é suficiente para a maioria dos casos de uso.

Autenticação de mensagem baseada em hash

O OpenVPN também usa uma assinatura Hash-based Message Authentication (HMAC) para proteger contra vulnerabilidades em handshakes SSL / TLS. Crie o arquivo com este comando:

Arquivos de cliente

Neste ponto, você terá criado vários arquivos para o seu servidor. Agora é hora de criar arquivos para seus clientes. Você pode repetir esse processo várias vezes para quantos clientes forem necessários. Você pode criar arquivos de cliente com segurança em qualquer computador com Easy-RSA instalado.

Entre no diretório Easy-RSA e inicialize a PKI novamente se você ainda não o fez:

Crie uma chave e um certificado do cliente. Altere os diretórios se você ignorou a etapa anterior.

Se você repetir o processo, não precisará inicializar a PKI para cada novo cliente. Apenas certifique-se de alterar “ClientName” para ser único todas as vezes.

Assinatura de certificados de servidor e cliente

A CA deve agora assinar seus certificados de servidor e cliente.

Se você olhar em seu arquivo “/ etc / easy-rsa / pki / reqs /”, deverá ver todos os arquivos de solicitação (.req) Easy-RSA criados no anterior easyrsa gen-req comandos.

Diretório de reqs OpenVPN

Nesta captura de tela, há apenas dois arquivos .req. Seu número irá variar se você tiver feito mais de um cliente na etapa anterior.

Se você usou uma máquina CA separada, agora você deve transferir esses arquivos .req para a CA para assinatura. Depois de concluído, mude para o diretório Easy-RSA e assine seus arquivos com os seguintes comandos, certificando-se de refletir a localização correta de cada .req e o nome de cada servidor e cliente.

Observe que você precisará fornecer ao Easy-RSA um nome diferente para seus certificados de servidor e cliente. ServerName.req será usado aqui, por exemplo, para criar Server1.crt.

Agora você deve encontrar dois novos arquivos – “/etc/easy-rsa/pki/issued/Server1.crt” e “/etc/easy-rsa/pki/issued/Client1.crt” – que você transferirá para seus respectivos máquinas (visto na próxima seção deste artigo). Você pode excluir qualquer arquivo .req que restar.

Repassando os arquivos .CRT

Agora, os certificados assinados (cada .crt) estão prontos para trabalhar para seus proprietários. Mova o arquivo do servidor para seu local OpenVPN e crie um novo diretório para os certificados do cliente:

Criar a pasta “… pki / assinado /” aqui fornece um local rotulado para colocar vários certificados de cliente.

Servidor compartilhado e arquivos de cliente

Agora você deve ter cinco arquivos no diretório “/ etc / openvpn / server /”: ca.crt, dh.pem, Server1.crt, ServerName.key e ta.key.

Você precisará de dois desses mesmos arquivos na pasta do cliente OpenVPN na máquina do cliente. Copie-os usando scp ou um disco flash, conforme apropriado. Copie “/etc/openvpn/server/ca.crt” e “/etc/openvpn/server/ta.key” para o “/ etc / openvpn / client /” do seu cliente.

Certifique-se de copiar seu certificado de cliente e chave para o mesmo local. Copie “/etc/easy-rsa/pki/signed/Client1.crt” e “/etc/easy-rsa/pki/private/ClientName.key” para o “/ etc / openvpn / client /.” Repita esse processo para quaisquer clientes adicionais que você possa ter criado.

Para qualquer cliente, agora você deve ter quatro arquivos em “/ etc / openvpn / client:” Client1.crt, ClientName.key, ca.crt e ta.key.

Arquivos de configuração de servidor e cliente

A última etapa antes de iniciar a VPN é editar os arquivos de configuração do servidor e do cliente. Primeiro, localize os arquivos “default server.conf” e “client.conf”. Eles provavelmente estarão em um destes locais:

  • “/ Usr / share / openvpn / examples”
  • “/ Usr / share / doc / openvpn / examples / sample-config-files /” (as configurações do Ubuntu estão localizadas aqui)

Nota: No Ubuntu, você precisará descompactar o arquivo “server.conf.gz”. Usar gunzip -d ./server.conf.gz para obter o arquivo server.conf do pacote compactado.

Copie cada arquivo de configuração para seu respectivo diretório “/ etc / openvpn / server /” e “/ etc / openvpn / client /”.

Em server.conf, faça as seguintes alterações. Certifique-se de que os nomes e locais de ca.crt, Server1.crt, ServerName.key e dh.pem estejam listados em seu arquivo de configuração. Você pode precisar usar caminhos completos – como uma linha que diz “cert /etc/openvpn/server/Server1.crt.”

Arquivo de configuração do servidor OpenVPN

Mudar o tls-auth... linha para ler tls-crypt ta.key. Novamente, um caminho completo pode ser necessário.

Arquivo de configuração do servidor OpenVPN

Remova o comentário (remova o “;”) das linhas “usuário ninguém” e “grupo ninguém”.

Arquivo de configuração do servidor OpenVPN

Para o seu cliente, você fará alterações semelhantes. Depois de fazer o arquivo de configuração, reflita os nomes e localizações de ca.crt, Client1.crt, ClientName.key e ta.key (com o mesmo movimento de tls-auth... para tls-crypt...), insira o nome ou endereço IP e a porta do seu servidor.

Arquivo de configuração do cliente OpenVPN

Hora de conectar

Agora você pode iniciar seu servidor e cliente. Esta é uma questão simples se tudo acima correr conforme o planejado.

Inicie o servidor com:

e o cliente com:

A criação bem-sucedida de uma VPN mostrará a leitura de saída do cliente “Sequência de inicialização concluída” no final de sua saída. Você também encontrará um novo tipo de conexão nas interfaces de rede disponíveis.

ip addr show command

Esta imagem mostra a interface “tun0”. Isso é o que o servidor OpenVPN fez. Você pode ver seu endereço como 10.8.0.1 e executar ping nesse endereço do cliente para verificar uma conexão bem-sucedida.

Comando ping

Roteamento do tráfego da Internet através do servidor

Neste ponto, você provavelmente desejará acessar a Internet por meio do servidor a partir do cliente remoto. Para fazer isso, primeiro você precisará alterar o arquivo de configuração do servidor. Adicione a linha push ‘redirect-gateway def1 ao arquivo de configuração do servidor.

Você também precisará informar ao servidor para rotear corretamente as solicitações de tráfego da Internet do cliente. Este comando irá alterar suas regras de filtragem de pacotes Iptables:

Se você não alterou a linha “server 10.8.0.0 255.255.255.0” em seu arquivo server.conf, o endereço IP nesse comando deve funcionar. Você precisará alterar “eth0” para corresponder à interface Ethernet do seu servidor. Você pode ver nas capturas de tela anteriores que minha máquina usa “enp19s0”.

Em seguida, você pode enviar as configurações de DNS para o cliente. Qualquer endereço que um cliente pode acessar pode ser empurrado. Você pode usar este comando como ponto de partida:

Finalmente, você pode ativar o encaminhamento de pacotes no servidor da seguinte maneira:

Agora você deve conseguir usar seu cliente para acessar a Internet por meio da VPN.

Conclusão

Eu sei que esta foi uma longa estrada. Esperamos que você tenha obtido sucesso ao criar uma VPN e conectar-se à Internet de maneira segura.

Se nada mais, esta terá sido uma boa experiência de aprendizado sobre o que é necessário para criar um túnel digital seguro. Obrigado por se juntar a mim até o fim.

Join our Newsletter and receive offers and updates! ✅

4 1 vote
Article Rating
Avatar of Routech

Routech

Routech is a website that provides technology news, reviews and tips. It covers a wide range of topics including smartphones, laptops, tablets, gaming, gadgets, software, internet and more. The website is updated daily with new articles and videos, and also has a forum where users can discuss technology-related topics.

Você pode gostar...

Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x