Uma Virtual Private Network (VPN) permite que você atravesse redes não confiáveis como se estivesse em uma rede privada. Ela dá a você a liberdade de acessar a internet com segurança no seu smartphone ou notebook ao se conectar a uma rede não confiável, como o wi-fi em um hotel ou café.
Quando combinado com conexões HTTPS, esta configuração permite que você proteja seus logins e transações sem fio. Você pode contornar restrições geográficas e de censura, e proteger seu local e qualquer tráfego HTTP não criptografado de redes não confiáveis.
O OpenVPN é uma solução VPN do tipo Transport Layer Security (TLS) repleta de recursos e de código aberto que acomoda uma ampla variedade de configurações. Neste tutorial, você instalará o OpenVPN em um servidor Ubuntu 20.04. Em seguida, irá configurá-lo para que fique acessível a partir de uma máquina cliente.
Nota: se você planeja configurar um servidor OpenVPN em um Droplet da DigitalOcean, saiba que, como muitos fornecedores de hospedagem, cobramos pelo excedente de largura de banda. Por este motivo, tenha cuidado acerca de quanto tráfego seu servidor processa.
Veja esta página para maiores informações.
Para seguir este tutorial, você vai precisar do seguinte:
Nota: embora seja tecnicamente possível usar seu Servidor OpenVPN ou sua máquina local como sua CA, isso não é recomendável, pois abre sua VPN para algumas vulnerabilidades de segurança. Baseando-se na documentação oficial do OpenVPN, você deve colocar sua CA em uma máquina autônoma que seja dedicada a importar e assinar pedidos de certificado. Por esta razão, este guia supõe que seu CA esteja em um servidor Ubuntu 20.04 separado que também tenha um usuário não-root com privilégios sudo e um firewall básico ativado.
Além disso, você precisará de uma máquina de cliente que usará para se conectar ao seu Servidor OpenVPN. Neste guia, chamaremos isso de Cliente OpenVPN. Para os fins deste tutorial, é recomendável que você use sua máquina local como o cliente OpenVPN.
Com esses pré-requisitos atendidos, você está pronto para começar a instalar e configurar um Servidor OpenVPN no Ubuntu 20.04.
Nota: note que, caso desative a autenticação por senha enquanto estiver configurando esses servidores, você pode ter dificuldades ao transferir arquivos entre eles mais tarde neste guia. Para resolver este problema, você pode reativar a autenticação por senha em cada servidor. Como alternativa, você poderia gerar um par de chaves SSH para cada servidor, então adicionar a chave SSH pública do servidor OpenVPN no arquivo CA authorized_keys
da máquina e vice-versa. Veja o tutorial How to Set Up SSH Keys on Ubuntu 20.04 para obter instruções sobre como realizar qualquer uma destas soluções.
O primeiro passo neste tutorial é instalar o OpenVPN e o Easy-RSA. O Easy-RSA é uma ferramenta de gerenciamento de infraestrutura de chaves públicas (PKI, do inglês Public Key Infrastructure) que você usará no Servidor OpenVPN para gerar uma solicitação de certificado que você irá verificar e assinar no Servidor CA.
Para começar, atualize o índice de pacotes do OpenVPN Server e instale o OpenVPN e o Easy-RSA. Ambos os pacotes estão disponíveis nos repositórios padrão do Ubuntu. Assim, você pode usar o apt
para a instalação:
- sudo apt update
- sudo apt install openvpn easy-rsa
Em seguida, você precisará criar um novo diretório no Servidor OpenVPN com o usuário não raiz chamado ~/easy-rsa
:
- mkdir ~/easy-rsa
Agora, você precisará criar um link simbólico do script easyrsa
, que o pacote instalou, para o diretório ~/easy-rsa
que você acabou de criar:
- ln -s /usr/share/easy-rsa/* ~/easy-rsa/
Nota: embora outros guias possam instruí-lo a copiar os arquivos de pacotes do easy-rsa
para o seu diretório PKI, este tutorial adota uma abordagem com links simbólicos. Como resultado, todas as atualizações realizadas no pacote easy-rsa
serão refletidas automaticamente nos scripts do seu PKI.
Por fim, garanta que o proprietário do diretório seja seu usuário sudo não raiz e restrinja o acesso a esse usuário usando o chmod
:
- sudo chown sammy ~/easy-rsa
- chmod 700 ~/easy-rsa
Assim que esses programas forem instalados e tiverem sido transferidos para os locais certos em seu sistema, o próximo passo será criar uma infraestrutura de chaves públicas (PKI) no servidor OpenVPN. Dessa forma, você poderá solicitar e gerenciar certificados TLS para os clientes e outros servidores que se conectarão à sua VPN.
Antes de criar a chave privada e certificado do seu servidor OpenVPN, você precisa criar um diretório local da infraestrutura de chaves públicas nele. Você usará este diretório para gerenciar as solicitações de certificado do servidor e dos clientes, ao invés de criá-las diretamente em seu servidor CA.
Para criar um diretório PKI em seu servidor OpenVPN, você precisará preencher um arquivo chamado vars
com alguns valores padrão. Primeiro, você usará o cd
para entrar no diretório easy-rsa
. Depois disso, você criará e editará o arquivo vars
com o nano ou o editor de texto de sua preferência.
- cd ~/easy-rsa
- nano vars
Assim que o arquivo for aberto, cole as duas linhas a seguir:
set_var EASYRSA_ALGO "ec"
set_var EASYRSA_DIGEST "sha512"
Essas são as únicas duas linhas que você precisa neste arquivo vars
em seu servidor OpenVPN, pois ele não será usado como uma autoridade de certificação. Elas garantirão que as suas chaves privadas e solicitações de certificado estejam configuradas para usar a moderna Criptografia de Curva Elíptica (ECC), para gerar chaves e assinaturas seguras para seus clientes e seu servidor OpenVPN.
Configurar seus servidores OpenVPN e CA para usar o ECC significa que, quando um cliente e o servidor tentam estabelecer uma chave simétrica compartilhada, eles podem usar os algoritmos de curva elíptica para fazer a troca. Usar o ECC para uma troca de chaves é significativamente mais rápido do que usar Diffie-Hellman simples com o algoritmo RSA clássico, pois os números são muito menores e os cálculos mais rápidos.
Contexto: quando os clientes se conectam ao OpenVPN, eles usam uma criptografia assimétrica (também conhecida como a chave pública/privada) para realizarem um aperto de mão TLS. No entanto, ao transmitir o tráfego VPN criptografado, o servidor e os clientes usam a criptografia simétrica, que também é conhecida como criptografia de chaves compartilhadas.
Há muito menos necessidade de poder computacional com uma criptografia simétrica, em comparação com a assimétrico: os números usados são muito menores e as CPUs modernas integram instruções para realizar operações de criptografia simétricas otimizadas. Para mudar de uma criptografia assimétrica para uma uma criptografia simétrica, o servidor OpenVPN e o cliente usarão o algoritmo Curva elíptica Diffie-Hellman (ECDH, do inglês Elliptic Curve Diffie-Hellman) para concordar com uma chave secreta compartilhada o mais rápido possível.
Assim que tiver preenchido o arquivo vars
, você pode continuar para a criação do diretório da PKI. Para fazer isso, execute o script easyrsa
com a opção init-pki
. Embora já tenha executado este comando no servidor CA como parte dos pré-requisitos, é necessário executá-lo aqui. Isso se dá, pois seu servidor OpenVPN e servidor CA possuem diretórios da PKI separados:
- ./easyrsa init-pki
Note que, em seu servidor OpenVPN, não há necessidade de criar uma autoridade de certificação. Seu servidor CA é o único responsável por validar e assinar certificados. A PKI em seu servidor VPN é usado apenas como um lugar conveniente e centralizado para armazenar solicitações de certificado e certificados públicos.
Após inicializar sua PKI no servidor OpenVPN, você está pronto para continuar para o próximo passo, que é a criação de uma solicitação de certificado e uma chave privada do servidor OpenVPN.
Agora que seu servidor OpenVPN possui todos os pré-requisitos instalados, o próximo passo é gerar uma chave privada e uma Solicitação de assinatura de certificado (CSR, do inglês Certificate Signing Request) em seu servidor OpenVPN. Após isso, você irá transferir a solicitação para a sua CA para que seja assinada, criando o certificado necessário. Assim que tiver um certificado assinado, você irá transferi-lo de volta para o servidor OpenVPN e instalá-lo para que o servidor o use.
Para começar, vá para o diretório ~/easy-rsa
em seu Servidor OpenVPN, com o seu usuário não raiz:
- cd ~/easy-rsa
Agora, você irá chamar o easyrsa
com a opção gen-req
, seguido de um Nome comum (CN, do inglês Common Name) para a máquina. O CN pode ser o que você quiser, mas escolher um nome mais descritivo pode ser útil. Ao longo deste tutorial, o CN do Servidor OpenVPN será server
. Certifique-se de incluir também a opção nopass
. Se não fizer isso, o arquivo solicitado será protegido por senha, o que pode levar a problemas de permissão mais tarde.
Nota: se escolher um nome que não seja server
, você terá que ajustar algumas das instruções abaixo. Por exemplo, quando copiar os arquivos gerados para o diretório /etc/openvpn
, terá que substituir os nomes corretos. Você também terá que modificar o arquivo /etc/openvpn/server.conf
mais tarde para que aponte aos arquivos .crt
e .key
corretos.
- ./easyrsa gen-req server nopass
OutputCommon Name (eg: your user, host, or server name) [server]:
Keypair and certificate request completed. Your files are:
req: /home/sammy/easy-rsa/pki/reqs/server.req
key: /home/sammy/easy-rsa/pki/private/server.key
Isso criará uma chave privada para o servidor e um arquivo de pedido de certificado chamado server.req
. Copie a chave do servidor para o diretório /etc/openvpn/server
:
- sudo cp /home/sammy/easy-rsa/pki/private/server.key /etc/openvpn/server/
Após completar esses passos, você criou uma chave privada para seu servidor OpenVPN com sucesso. Você também gerou uma solicitação de assinatura de certificado para o servidor OpenVPN. A CSR agora está pronta para assinar por sua CA. Na próxima seção deste tutorial, você aprenderá como assinar uma CSR com a chave privada do seu servidor CA.
No passo anterior, você criou uma solicitação de assinatura de certificado (CSR) e uma chave privada para o servidor OpenVPN. Agora, o servidor CA precisa saber sobre o certificado server
e validá-lo. Assim que a CA valida e devolve o certificado para o servidor OpenVPN, os clientes que confiam em sua CA também poderão confiar no servidor OpenVPN.
No servidor OpenVPN, com seu usuário não raiz, use o SCP ou outro método de transferência para copiar a solicitação de certificado server.req
para o servidor CA, de forma a assiná-la:
- scp /home/sammy/easy-rsa/pki/reqs/server.req sammy@your_ca_server_ip:/tmp
Se você seguiu o tutorial de pré-requisito How To Set Up and Configure a Certificate Authority (CA) on Ubuntu 20.04, o próximo passo é fazer login no servidor CA como o usuário não-root que você criou para gerenciar sua CA. Você usará o cd
para entrar no diretório ~/easy-rsa
onde você criou seu PK e, em seguida, importará a solicitação de certificado usando o script easyrsa
:
- cd ~/easy-rsa
- ./easyrsa import-req /tmp/server.req server
Output. . .
The request has been successfully imported with a short name of: server
You may now use this name to perform signing operations on this request.
Em seguida, assine o pedido executando o script easyrsa
com a opção sign-req
, seguida do tipo de pedido e do nome comum. O tipo de solicitação pode ser client
ou server
. Como estamos trabalhando com a solicitação de certificado do servidor OpenVPN, certifique-se de usar o tipo de solicitação server
:
- ./easyrsa sign-req server server
No resultado, você será solicitado a verificar se o pedido vem de uma fonte confiável. Digite yes
, e então pressione ENTER
para confirmar:
OutputYou are about to sign the following certificate.
Please check over the details shown below for accuracy. Note that this request
has not been cryptographically verified. Please be sure it came from a trusted
source or that you have verified the request checksum with the sender.
Request subject, to be signed as a server certificate for 3650 days:
subject=
commonName = server
Type the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
. . .
Certificate created at: /home/sammy/easy-rsa/pki/issued/server.crt
Note que, caso tenha criptografado sua chave privada CA, você será solicitado a colocar sua senha neste ponto.
Com esses passos completos, você assinou a solicitação de certificado do servidor OpenVPN usando a chave privada do servidor CA. O arquivo server.crt
resultante contém a chave pública de criptografia do servidor OpenVPN, além de uma nova assinatura do servidor CA. O motivo da assinatura é dizer a todos que confiam no servidor CA que eles também podem confiar no servidor OpenVPN quando se conectarem a ele.
Para terminar de configurar os certificados, copie os arquivos server.crt
e ca.crt
do servidor CA para o servidor OpenVPN:
- scp pki/issued/server.crt sammy@your_vpn_server_ip:/tmp
- scp pki/ca.crt sammy@your_vpn_server_ip:/tmp
Agora, já de volta no seu servidor OpenVPN, copie os arquivos de /tmp
para /etc/openvpn/server
:
- sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/server
Agora, seu servidor OpenVPN está quase pronto para aceitar as conexões. No próximo passo, você irá executar algumas etapas adicionais para aumentar a segurança do servidor.
Para criar uma camada de segurança adicional, adicionaremos uma chave secreta extra compartilhada que o servidor e todos os clientes usarão com a diretiva tls-crypt
do OpenVPN. Essa opção é usada para ofuscar o certificado TLS que é usado quando um servidor e um cliente se conectam entre si inicialmente. Ele também é usado pelo servidor OpenVPN para realizar verificações rápidas nos pacotes de entrada: se um pacote for assinado usando a chave pré-compartilhada, então o servidor o processa; se não for assinado, então o servidor sabe que vem de uma fonte não confiável e pode descartá-lo sem ter que realizar trabalho de descriptografia adicional.
Essa opção ajudará a garantir que seu servidor OpenVPN seja capaz de lidar com tráfego não autenticado, varreduras de porta e ataques de negação de serviço, que podem amarrar recursos do servidor. Ela também torna mais difícil identificar o tráfego de rede do OpenVPN.
Para gerar a chave tls-crypt
pré-compartilhada, execute o que vem a seguir no servidor OpenVPN, no diretório ~/easy-rsa
:
- cd ~/easy-rsa
- openvpn --genkey --secret ta.key
O resultado será um arquivo chamado ta.key
. Copie-o para o diretório /etc/openvpn/server/
:
- sudo cp ta.key /etc/openvpn/server
Com esses arquivos instalados no servidor OpenVPN, você está pronto para criar certificados de cliente e arquivos de chave para seus usuários, que você usará para se conectar à VPN.
Embora você possa gerar uma chave privada e um pedido de certificado na sua máquina de cliente e então enviá-la para a CA para ser assinada, este guia define um processo para gerar a solicitação de certificado no servidor OpenVPN. O benefício dessa abordagem é que podemos criar um script que irá gerar automaticamente arquivos de configuração do cliente que contêm todas as chaves e certificados necessários. Isso permite que você evite ter que transferir chaves, certificados e arquivos de configuração para clientes e simplifica o processo de conexão ao VPN.
Vamos gerar um único par, chave de cliente e certificado, para este guia. Se tiver mais de um cliente, você pode repetir este processo para cada um deles. Note, porém, que você precisará passar um valor de nome único ao script para cada cliente. Ao longo deste tutorial, o primeiro par de certificado/chave é chamado de client1
.
Inicie criando uma estrutura de diretório dentro do seu diretório home para armazenar os arquivos de certificado de cliente e de chave:
- mkdir -p ~/client-configs/keys
Como irá armazenar os pares de certificado/chave e arquivos de configuração dos seus clientes neste diretório, você deve bloquear suas permissões agora, como uma medida de segurança:
- chmod -R 700 ~/client-configs
Em seguida, navegue até o diretório do EasyRSA e execute o script easyrsa
com as opções gen-req
e nopass
, junto com o nome comum para o cliente:
- cd ~/easy-rsa
- ./easyrsa gen-req client1 nopass
Pressione ENTER
para confirmar o nome comum. Então, copie o arquivo client1.key
para o diretório ~/client-configs/keys/
que você criou mais cedo:
- cp pki/private/client1.key ~/client-configs/keys/
Em seguida, transfira o arquivo client1.req
para seu Servidor CA usando um método seguro:
- scp pki/reqs/client1.req sammy@your_ca_server_ip:/tmp
Agora, faça login no seu Servidor CA. Em seguida, vá para o diretório do EasyRSA e importe a solicitação de certificado:
- cd ~/easy-rsa
- ./easyrsa import-req /tmp/client1.req client1
Então, assine a solicitação da mesma forma como fez para o servidor no passo anterior. Desta vez, certifique-se de especificar o tipo de pedido do client
:
- ./easyrsa sign-req client client1
Quando solicitado, digite yes
para confirmar que você pretende assinar o pedido de certificado e que ele veio de uma fonte confiável:
OutputType the word 'yes' to continue, or any other input to abort.
Confirm request details: yes
Novamente, caso tenha criptografado sua chave CA, você será solicitado a colocar sua senha aqui.
Isso criará um arquivo de certificado de cliente chamado client1.crt
. Transfira este arquivo de volta para o servidor:
- scp pki/issued/client1.crt sammy@your_server_ip:/tmp
De volta no seu servidor OpenVPN, copie o certificado do cliente para o diretório ~/client-configs/keys/
:
- cp /tmp/client1.crt ~/client-configs/keys/
Em seguida, copie também os arquivos ca.crt
e ta.key
para o diretório ~/client-configs/keys/
, e defina as permissões apropriadas para o seu usuário sudo:
- cp ~/easy-rsa/ta.key ~/client-configs/keys/
- sudo cp /etc/openvpn/server/ca.crt ~/client-configs/keys/
- sudo chown sammy.sammy ~/client-configs/keys/*
Com isso, todos os certificados e chaves do seu servidor e do seu cliente foram gerados e estão armazenados nos diretórios apropriados do seu servidor OpenVPN. Ainda existem algumas ações que precisam ser feitas com esses arquivos, mas elas aparecerão em um passo mais adiante. Por enquanto, você pode prosseguir para a configuração do OpenVPN.
Assim como muitas outras ferramentas que são amplamente usadas, o OpenVPN possui várias opções de configuração disponíveis para personalizar seu servidor para as suas necessidades específicas. Nesta seção, forneceremos instruções sobre como instalar uma configuração do servidor OpenVPN com base em um dos arquivos de configuração da amostra que é incluído na documentação deste software.
Primeiro, copie o arquivo de amostra server.conf
como um ponto de partida para seu próprio arquivo de configuração:
- sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/server/
- sudo gunzip /etc/openvpn/server/server.conf.gz
Abra o novo arquivo para edição com o editor de texto da sua escolha. Usaremos o nano em nosso exemplo:
- sudo nano /etc/openvpn/server/server.conf
Vamos precisar alterar algumas linhas neste arquivo. Primeiro, encontre a seção HMAC
da configuração, procurando pela diretiva tls-auth
. Essa linha deve ser descomentada. Transforme-a em comentário adicionando um ;
no início da linha. Então, adicione uma linha nova após ela, contendo apenas o valor tls-crypt ta.key
:
;tls-auth ta.key 0 # This file is secret
tls-crypt ta.key
Em seguida, encontre a seção sobre cifras criptográficas, procurando pelas linhas cipher
. O valor padrão é definido como AES-256-CBC
. No entanto, a criptografia AES-256-GCM
oferece um melhor nível de criptografia, desempenho é compatível com os clientes do OpenVPN atualizados. Vamos transformar em comentário o valor padrão adicionando um sinal ;
no início dessa linha. Em seguida, adicionaremos outra linha após ela, contendo o valor atualizado de AES-256-GCM
:
;cipher AES-256-CBC
cipher AES-256-GCM
Logo após essa linha, adicione uma diretiva auth
para selecionar o algoritmo digest HMAC de mensagem. Para fazer isso, o SHA256
é uma boa escolha:
auth SHA256
Em seguida, encontre a linha que contém uma diretiva dh
, que define os parâmetros Diffie-Hellman. Como configuramos todos os certificados para usar a criptografia de curva elípticado, um arquivo de semente Diffie-Hellman não é necessário. Transforme em comentário a linha existente que se parece com dh dh2048.pem
ou dh dh.pem
. O nome do arquivo para a chave Diffie-Hellman pode ser diferente do que está listado no arquivo de configuração do servidor de exemplo. Então, adicione uma linha após ela com o conteúdo dh none
:
;dh dh2048.pem
dh none
Em seguida, queremos que o OpenVPN seja executado sem privilégios assim que for iniciado,assim, precisamos dizer a ele para executar com o usuário nobody e com o grupo nogroup. Para habilitar isso, encontre e descomente as linha user nobody
e group nobody
, removendo o sinal ;
do início de cada linha:
user nobody
group nogroup
As configurações acima criarão a conexão VPN entre seu cliente e servidor, mas não forçarão nenhuma conexão a usar o túnel. Se quiser usar o VPN para rotear todo o seu tráfego de cliente pela VPN, você provavelmente irá querer forçar algumas configurações DNS extras para os computadores do cliente.
Para começar, encontre e descomente a linha que contém push "redirect-gateway def1 bypass-dhcp"
. Ao fazer isso, você dirá ao seu cliente para redirecionar todo o tráfego dele através do seu Servidor OpenVPN. Esteja ciente de que habilitar esta funcionalidade pode causar problemas de conectividade com outros serviços de rede, como o SSH:
push "redirect-gateway def1 bypass-dhcp"
Logo abaixo desta linha, encontre a seção dhcp-option
. Novamente, remova o “;
” do início de ambas as linhas para descomentá-las:
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
Essas linhas dirão ao seu cliente para usar os resolvedores de OpenDNS gratuitos nos endereços IP listados. Se preferir outros resolvedores de DNS, você pode substituí-los no lugar dos IPs destacados.
Isso ajudará os clientes a reconfigurar suas configurações de DNS, para que usem o túnel VPN como gateway padrão.
Por padrão, o servidor OpenVPN usa a porta 1194
e o protocolo UDP para aceitar conexões de clientes. Se precisar usar uma porta diferente, devido a ambientes de rede restritivos em que seus clientes possam estar, você pode alterar a opção port
. Se não estiver hospedando conteúdo Web no seu servidor OpenVPN, a porta 443
é uma escolha popular, uma vez que ela é geralmente permitida em de regras de firewall.
Para alterar o OpenVPN para escutar na porta 443, abra o arquivo server.conf
e encontre a linha que se parece com esta:
port 1194
Edite-a, de forma que a porta seja 443:
# Optional!
port 443
Geralmente, o protocolo também é restrito a essa porta. Se assim for, encontre a linha proto
abaixo da linha port
e mude o protocolo de udp
para tcp
:
# Optional!
proto tcp
Se você de fato mudar o protocolo para o TCP, precisará alterar o valor explicit-exit-notify
da diretriz de 1
para 0
, já que essa diretriz é usada apenas pelo UDP. Não fazer isso ao usar o TCP irá causar erros quando você iniciar o serviço OpenVPN:
Encontre a linha explicit-exit-notify
no final do arquivo e mude o valor para 0
:
# Optional!
explicit-exit-notify 0
Se não tiver necessidade de usar uma porta e protocolos diferentes, é melhor deixar essas opções inalteradas.
Se você selecionou um nome diferente durante o comando ./easyrsa gen-req server
mais cedo, modifique as linhas cert
e key
no arquivo de configuração server.conf
para que elas apontem para os arquivos .crt
e .key
apropriados. Se você usou o nome padrão, server
, isso tudo já está configurado corretamente:
cert server.crt
key server.key
Quando você terminar, salve e feche o arquivo.
Agora, você terminou de configurar suas configurações gerais do OpenVPN. No próximo passo, vamos personalizar as opções de rede do servidor.
Existem alguns aspectos da configuração de rede do servidor que precisam ser ajustados para que o OpenVPN possa rotear corretamente o tráfego pela VPN. O primeiro desses é o encaminhamento de IP, um método para determinar onde o tráfego de IP deve ser roteado. Isso é essencial para a funcionalidade VPN que seu servidor irá fornecer.
Para ajustar a configuração padrão de encaminhamento de IP do seu servidor OpenVPN, abra o arquivo /etc/sysctl.conf
usando o nano
ou seu editor preferido:
- sudo nano /etc/sysctl.conf
A seguir, adicione a seguinte linha ao final do arquivo:
net.ipv4.ip_forward = 1
Salve e feche o arquivo quando você terminar.
Para ler o arquivo e carregar os novos valores para a sessão atual, digite:
- sudo sysctl -p
Outputnet.ipv4.ip_forward = 1
Agora, seu servidor OpenVPN será capaz de encaminhar o tráfico de entrada de um dispositivo Ethernet para outro. Essa configuração garante que o servidor possa direcionar o tráfego de clientes que se conectam na interface VPN virtual através de seus outros dispositivos Ethernet físicos. Essa configuração irá rotear todo o tráfego Web do seu cliente através do endereço IP do seu servidor, e o endereço IP público do seu cliente ficará efetivamente escondido.
No próximo passo, você precisará configurar algumas regras de firewall para garantir que o tráfego de entrada e saída do seu servidor OpenVPN flua corretamente.
Até agora, você instalou o OpenVPN em seu servidor, configurou-o e gerou as chaves e certificados necessários para que seu cliente acesse a VPN. No entanto, você ainda não providenciou ao OpenVPN nenhuma instrução sobre onde enviar o tráfego Web de entrada de usuários. Você pode estipular como o servidor deve lidar com o tráfego de clientes estabelecendo algumas regras de firewall e configurações de roteamento.
Supondo que você tenha seguido os pré-requisitos no início deste tutorial, você já deve ter o ufw
instalado e em funcionamento no seu servidor. Para permitir o OpenVPN através do firewall, você precisará habilitar o mascaramento, um conceito do iptables que fornece a tradução dinâmica de endereço de rede (NAT) para rotear corretamente as conexões com clientes.
Antes de abrir o arquivo de configuração do firewall para adicionar as regras de mascaramento, você deve primeiro encontrar a interface de rede pública da sua máquina. Para fazer isso, digite:
- ip route list default
Sua interface pública é a string encontrada dentro da saída desse comando que vem após a palavra “dev”. Por exemplo, este resultado mostra a interface chamada eth0
, que está destacada abaixo:
Outputdefault via 159.65.160.1 dev eth0 proto static
Quando tiver a interface associada à sua rota padrão, abra o arquivo /etc/ufw/before.rules
para adicionar as configurações relevantes:
- sudo nano /etc/ufw/before.rules
As regras do UFW são normalmente adicionadas usando o comando ufw
. As regras listadas no arquivo before.rules
, em contrapartida, são lidas e colocadas em funcionamento antes das regras convencionais do UFW serem carregadas. Em direção ao topo do arquivo, adicione as linhas destacadas abaixo. Isso irá definir a política padrão para a cadeia POSTROUTING
na tabela nat
e mascarar todo o tráfego vindo do VPN. Lembre-se de substituir o eth0
na linha -A POSTROUTING
abaixo pela interface que você encontrou no comando acima:
#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
# ufw-before-input
# ufw-before-output
# ufw-before-forward
#
# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Allow traffic from OpenVPN client to eth0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
# Don't delete these required lines, otherwise there will be errors
*filter
. . .
Salve e feche o arquivo quando você terminar.
Em seguida, você também precisa dizer ao UFW para permitir os pacotes redirecionados por padrão. Para fazer isso, abra o arquivo /etc/default/ufw
:
- sudo nano /etc/default/ufw
Dentro, encontre a diretriz DEFAULT_FORWARD_POLICY
e altere o valor de DROP
para ACCEPT
:
DEFAULT_FORWARD_POLICY="ACCEPT"
Salve e feche o arquivo quando você terminar.
Em seguida, ajuste o firewall em si para permitir o tráfego para o OpenVPN. Caso não tenha alterado a porta e o protocolo no arquivo /etc/openvpn/server.conf
, você precisará abrir o tráfego UDP para a porta 1194
. Se você modificou a porta e/ou o protocolo, substitua os valores que selecionou aqui.
Caso tenha esquecido de adicionar a porta SSH ao seguir o tutorial pré-requisito, adicione-a também aqui:
- sudo ufw allow 1194/udp
- sudo ufw allow OpenSSH
Após adicionar essas regras, desative e reative o UFW para reiniciá-lo e carregar as alterações de todos os arquivos que você modificou:
- sudo ufw disable
- sudo ufw enable
Seu servidor agora está configurado para lidar corretamente com o tráfego OpenVPN. Com as regras do firewall instaladas, podemos inicializar o serviço OpenVPN no servidor.
O OpenVPN executa como um serviço systemd
. Dessa forma, podemos usar o systemctl
para gerenciá-lo. Vamos configurar o OpenVPN para iniciar na inicialização do sistema, para que você possa se conectar à sua VPN a qualquer momento, contanto que seu servidor esteja em execução. Para fazer isso, habilite o serviço OpenVPN, adicionando-o ao systemctl
:
- sudo systemctl -f enable openvpn-server@server.service
Em seguida, inicie o serviço OpenVPN:
- sudo systemctl start openvpn-server@server.service
Verifique novamente se o serviço OpenVPN está ativo com o seguinte comando: Você deve ver active (running)
no resultado:
- sudo systemctl status openvpn-server@server.service
Output● openvpn-server@server.service - OpenVPN service for server
Loaded: loaded (/lib/systemd/system/openvpn-server@.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2020-04-29 15:39:59 UTC; 6s ago
Docs: man:openvpn(8)
https://community.openvpn.net/openvpn/wiki/Openvpn24ManPage
https://community.openvpn.net/openvpn/wiki/HOWTO
Main PID: 16872 (openvpn)
Status: "Initialization Sequence Completed"
Tasks: 1 (limit: 1137)
Memory: 1.0M
CGroup: /system.slice/system-openvpn\x2dserver.slice/openvpn-server@server.service
└─16872 /usr/sbin/openvpn --status /run/openvpn-server/status-server.log --status-version 2 --suppress-timestamps --c>
. . .
. . .
Apr 29 15:39:59 ubuntu-20 openvpn[16872]: Initialization Sequence Completed
Agora, completamos a configuração na parte do servidor para o OpenVPN. Em seguida, você irá configurar sua máquina de cliente e se conectar ao Servidor OpenVPN.
Criar arquivos de configuração para os clientes OpenVPN pode ser um desafio, já que cada cliente deve ter sua própria configuração e cada um deve se alinhar com as configurações descritas no arquivo de configuração do servidor. Ao invés de escrever um único arquivo de configuração que só pode ser usado para um cliente, este passo define um processo para a construção de uma infraestrutura de configuração de clientes que você pode usar para gerar arquivos de configuração imediatamente. Você criará primeiro um arquivo de configuração “base” e então construirá um script que permitirá que você gere arquivos únicos de configuração de clientes, certificados e chaves conforme necessário.
Comece criando um novo diretório onde você irá armazenar arquivos de configuração de clientes no diretório client-configs
que você criou mais cedo:
- mkdir -p ~/client-configs/files
Em seguida, copie um arquivo de configuração de cliente exemplo para o diretório client-configs
para usá-lo como sua configuração base:
- cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
Abra esse novo arquivo usando o nano
ou seu editor de texto preferido:
- nano ~/client-configs/base.conf
Dentro, localize a diretriz remote
. Isso aponta o cliente para seu endereço de servidor OpenVPN — o endereço IP público do seu servidor OpenVPN. Caso tenha decidido alterar a porta em que o servidor OpenVPN está escutando, também será preciso alterar a 1194
para a porta que você selecionou:
. . .
# The hostname/IP and port of the server.
# You can have multiple remote entries
# to load balance between the servers.
remote your_server_ip 1194
. . .
Certifique-se de que o protocolo corresponda ao valor que você está usando na configuração do servidor:
proto udp
Em seguida, descomente as diretivas user
e group
removendo o sinal “;
” no começo de cada linha:
# Downgrade privileges after initialization (non-Windows only)
user nobody
group nogroup
Encontre as diretrizes que definem ca
, cert
e key
. Comente essas diretrizes, já que você adicionará os certificados e chaves dentro do arquivo em si em breve:
# SSL/TLS parms.
# See the server config file for more
# description. It's best to use
# a separate .crt/.key file pair
# for each client. A single ca
# file can be used for all clients.
;ca ca.crt
;cert client.crt
;key client.key
De maneira similar, transforme em comentário a diretiva tls-auth
, pois você adicionará a ta.key
diretamente no arquivo de configuração do cliente (e o servidor é configurado para usar o tls-crypt
):
# If a tls-auth key is used on the server
# then every client must also have the key.
;tls-auth ta.key 1
Espelhe as configurações cipher
e auth
que você definiu no arquivo /etc/openvpn/server/server.conf
:
cipher AES-256-GCM
auth SHA256
Em seguida, adicione a diretriz key-direction
em algum lugar no arquivo. Você deve definir isso em “1” para que o VPN funcione corretamente na máquina do cliente:
key-direction 1
Finalmente, adicione algumas linhas comentadas para lidar com diferentes métodos que os clientes de VPN baseados em Linux usarão para a resolução DNS. Você adicionará dois conjuntos semelhantes, mas separados de linhas comentadas. O primeiro conjunto é para clientes que não usam o systemd-resolved
para gerenciar o DNS. Esses clientes dependem do utilitário resolvconf
para atualizar informações de DNS para clientes Linux.
; script-security 2
; up /etc/openvpn/update-resolv-conf
; down /etc/openvpn/update-resolv-conf
Agora, adicione outro conjunto de linhas para clientes que usam o systemd-resolved
para a resolução DNS:
; script-security 2
; up /etc/openvpn/update-systemd-resolved
; down /etc/openvpn/update-systemd-resolved
; down-pre
; dhcp-option DOMAIN-ROUTE .
Salve e feche o arquivo quando você terminar.
Mais tarde no Passo 13 - Instalando a Configuração de Cliente deste tutorial, você aprenderá como determinar como a resolução DNS funciona em clientes Linux e em qual seção descomentar.
Em seguida, vamos criar um script que irá compilar sua configuração base com os arquivos de certificado, chave e criptografia relevantes e então colocar a configuração gerada no diretório ~/client-configs/files
. Abra um novo arquivo chamado make_config.sh
dentro do diretório ~/client-configs
:
- nano ~/client-configs/make_config.sh
Dentro, adicione o seguinte conteúdo:
#!/bin/bash
# First argument: Client identifier
KEY_DIR=~/client-configs/keys
OUTPUT_DIR=~/client-configs/files
BASE_CONFIG=~/client-configs/base.conf
cat ${BASE_CONFIG} \
<(echo -e '<ca>') \
${KEY_DIR}/ca.crt \
<(echo -e '</ca>\n<cert>') \
${KEY_DIR}/${1}.crt \
<(echo -e '</cert>\n<key>') \
${KEY_DIR}/${1}.key \
<(echo -e '</key>\n<tls-crypt>') \
${KEY_DIR}/ta.key \
<(echo -e '</tls-crypt>') \
> ${OUTPUT_DIR}/${1}.ovpn
Salve e feche o arquivo quando você terminar.
Antes de seguir em frente, certifique-se de marcar este arquivo como executável digitando:
- chmod 700 ~/client-configs/make_config.sh
Este script fará uma cópia do arquivo base.conf
que você fez, coletará todos os arquivos de certificado e chave que você criou para seu cliente, extrairá os conteúdos deles, adicionará esse conteúdo à cópia do arquivo de configuração base e exportará tudo isso para um novo arquivo de configuração de clientes. Isso significa que, ao invés de ter que gerenciar os arquivos de configuração do cliente, certificado e chave separadamente, todas as informações necessárias são armazenadas em um só lugar. O benefício de usar este método é que, caso tenha necessidade de adicionar um cliente no futuro, você pode executar esse script para criar rapidamente um novo arquivo de configuração e garantir que todas as informações importantes sejam armazenadas em uma única localização de fácil acesso.
Note que, sempre que adicionar um novo cliente, você precisará gerar novas chaves e certificados para ele antes de executar este script e gerar seu arquivo de configuração. Você poderá praticar um pouco a utilização deste script no próximo passo.
Se acompanhou o guia, você criou um certificado e chave de cliente nomeados client1.crt
e client1.key
, respectivamente, no passo 6. É possível gerar um arquivo de configuração para essas credenciais entrando no seu diretório ~/client-configs
e executando o script que você fez no final do passo anterior:
- cd ~/client-configs
- ./make_config.sh client1
Isso criará um arquivo chamado client1.ovpn
no seu diretório ~/client-configs/files
:
- ls ~/client-configs/files
Outputclient1.ovpn
Você precisa transferir esse arquivo para o dispositivo que planeja usar como cliente. Por exemplo, este poderia ser seu computador local ou um dispositivo móvel.
Embora os aplicativos exatos usados para realizar essa transferência dependerão do sistema operacional do seu dispositivo e de suas preferências pessoais, um método confiável e seguro é usar o SFTP (protocolo SSH de transferência de arquivos) ou SCP (cópia segura) no backend. Isso transportará os arquivos de autenticação do VPN do seu cliente através de uma conexão criptografada.
Aqui está um exemplo de comando SFTP que você pode executar a partir do seu computador local (macOS ou Linux). Isso irá copiar o arquivo client1.ovpn
que criamos no último passo para o seu diretório base:
- sftp sammy@openvpn_server_ip:client-configs/files/client1.ovpn ~/
Aqui estão diversas ferramentas e tutoriais para transferir arquivos com segurança do servidor OpenVPN para um computador local:
Esta seção aborda como instalar um perfil VPN de um cliente no Windows, macOS, Linux, iOS e Android. Nenhuma dessas instruções de cliente dependem uma da outra, então sinta-se a vontade para pular para alguma que seja aplicável ao seu dispositivo.
A conexão OpenVPN terá o mesmo nome que você chamou o arquivo .ovpn
. No que diz respeito a este tutorial, isso significa que a conexão se chama client1.ovpn
, de acordo com o primeiro arquivo de cliente que você gerou.
Instalando
Faça download do aplicativo do cliente OpenVPN para o Windows da página de download do OpenVPN. Escolha a versão do instalador apropriada para a sua versão do Windows.
Nota: o OpenVPN precisa de privilégios administrativos para ser instalado.
Após instalar o OpenVPN, copie o arquivo .ovpn
para:
C:\Program Files\OpenVPN\config
Ao iniciar o OpenVPN, ele localizará o perfil e o disponibilizará automaticamente.
Você deve executar o OpenVPN como administrador sempre que ele é usado, mesmo por contas administrativas. Para fazer isso sem precisar clicar com o botão direito e selecionar Executar como administrador sempre que você usar o VPN, é necessário predefinir isso de uma conta administrativa. Isso significa que os usuários padrão também precisam digitar a senha do administrador para usar o OpenVPN. Por outro lado, os usuários padrão não conseguem se conectar devidamente ao servidor a não ser que o aplicativo OpenVPN no cliente tenha direitos de administrador, então são necessários privilégios elevados.
Para definir que o aplicativo OpenVPN sempre execute como administrador, clique com o botão direito no seu atalho e vá em Propriedades. No final da aba Compatibilidade, clique no botão para Mudar as configurações para todos os usuários. Na nova janela, marque Executar este programa como administrador.
Conectando
Cada vez que iniciar a OpenVPN GUI, o Windows irá perguntar se você quer permitir que o programa faça alterações no seu computador. Clique em Yes. Iniciar o aplicativo do cliente OpenVPN coloca apenas o applet na bandeja do sistema para que você possa conectar e desconectar o VPN conforme necessário; isso não cria de fato a conexão VPN.
Assim que o OpenVPN iniciar, inicie uma conexão entrando no applet da bandeja do sistema e clicando com o botão direito no ícone do applet do OpenVPN. Isso abre o menu de contexto. Selecione client1 no topo do menu (esse é seu perfil client1.ovpn
) e escolha Connect.
Uma janela de status abrirá mostrando o registro de saída enquanto a conexão estiver estabelecida, e uma mensagem aparecerá assim que o cliente estiver conectado.
Desconecte-se do VPN da mesma maneira: Vá até o applet da bandeja do sistema, clique com o botão direito no ícone do applet do OpenVPN, selecione o perfil do cliente e clique em Disconnect.
Instalando
O Tunnelblick é um cliente OpenVPN gratuito e de código aberto para o macOS. Você pode baixar a imagem de disco mais recente da página de downloads do Tunnelblick. Clique duas vezes no arquivo baixado .dmg
e siga os prompts para instalar.
Ao final do processo de instalação, o Tunnelblick irá perguntar se você tem algum arquivo de configuração. Responda I have configuration files e deixe o Tunnelblick terminar. Abra uma janela do Finder e clique duas vezes no client1.ovpn
. O Tunnelblick instalará o perfil do cliente. São necessário privilégios administrativos.
Conectando
Inicie o Tunnelblick clicando duas vezes no ícone do Tunnelblick na pasta Applications. Assim que o Tunnelblick iniciar, haverá um ícone do Tunnelblick na barra do menu no canto superior direito da tela para controle de conexões. Clique no ícone e então no item do menu Connect client1 para iniciar a conexão VPN.
Instalando
Se estiver usando o Linux, existe uma variedade de ferramentas que você pode usar dependendo da sua distribuição. Seu ambiente do desktop ou gerenciador de janelas também pode incluir serviços de conexão.
Entretanto, o modo mais universal de se conectar é apenas usar o software OpenVPN.
No Ubuntu ou Debian, você pode instalá-lo assim como fez no servidor digitando:
- sudo apt update
- sudo apt install openvpn
No CentOS, você pode habilitar os repositórios EPEL e então instalá-lo digitando:
- sudo dnf install epel-release
- sudo dnf install openvpn
systemd-resolved
Primeiro, verifique se seu sistema está usando o systemd-resolved
para lidar com a resolução DNS verificando o arquivo /etc/resolv.conf
:
- cat /etc/resolv.conf
Output# This file is managed by man:systemd-resolved(8). Do not edit.
. . .
nameserver 127.0.0.53
options edns0
Se seu sistema estiver configurado para usar o systemd-resolved
para a resolução DNS, o endereço IP após a opção nameserver
será 127.0.0.53
. Também deve haver comentários no arquivo, como a saída mostrada que explica como o systemd-resolved
está gerenciando o arquivo. Se você tiver um endereço IP diferente do 127.0.53
, então existem chances de seu sistema não estar usando o systemd-resolved
e você pode ir para a próxima seção sobre a configuração de clientes Linux que têm um script update-resolv-conf
.
Para apoiar esses clientes, instale primeiro o pacote openvpn-systemd-resolved
. Ele fornece scripts que forçarão o systemd-resolved
a usar o servidor VPN para a resolução DNS.
- sudo apt install openvpn-systemd-resolved
Assim que este pacote estiver instalado, configure o cliente para usá-lo e enviar todas as consultas de DNS pela interface VPN. Abra o arquivo VPN do cliente:
- nano client1.ovpn
Agora, descomente as seguintes linhas que você adicionou anteriormente:
script-security 2
up /etc/openvpn/update-systemd-resolved
down /etc/openvpn/update-systemd-resolved
down-pre
dhcp-option DOMAIN-ROUTE .
update-resolv-conf
Se seu sistema não estiver usando o systemd-resolved
para gerenciar o DNS, verifique se sua distribuição inclui um script /etc/openvpn/update-resolv-conf
em vez disso:
- ls /etc/openvpn
Outputupdate-resolv-conf
Se seu cliente inclui o arquivo update-resolv-conf
, então edite o arquivo de configuração do cliente OpenVPN que você transferiu anteriormente:
- nano client1.ovpn
Descomente as três linhas que você adicionou para ajustar as configurações de DNS:
script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf
Se estiver usando o CentOS, altere a diretriz group
de nogroup
para nobody
de forma a corresponder aos grupos disponíveis da distribuição:
group nobody
Salve e feche o arquivo.
Conectando
Agora, você pode se conectar ao VPN apenas apontando o comando openvpn
para o arquivo de configuração do cliente:
- sudo openvpn --config client1.ovpn
Isso deve conectar você ao seu VPN.
Nota: se seu cliente usa o systemd-resolved
para gerenciar o DNS, verifique se as configurações foram aplicadas corretamente executando o comando systemd-resolve --status
desta forma:
- systemd-resolve --status tun0
Deverá ver um resultado como o seguinte:
OutputLink 22 (tun0)
. . .
DNS Servers: 208.67.222.222
208.67.220.220
DNS Domain: ~.
Se você ver os endereços IP dos servidores de DNS que você configurou no servidor OpenVPN, junto com a configuração ~.
para o DNS Domain na saída, então você configurou corretamente seu cliente para usar o resolvedor DNS do servidor VPN. Você também pode verificar se está enviando consultas de DNS pela VPN usando um site como o DNS leak test.com.
Instalando
A partir da App Store do iTunes, procure e instale o OpenVPN Connect, o aplicativo oficial do cliente iOS OpenVPN. Para transferir sua configuração do cliente iOS para o dispositivo, conecte-o diretamente a um computador.
O processo de completar a transferência com o iTunes é descrito aqui. Abra o iTunes no computador e clique em iPhone > apps. Role até o final da seção File Sharing e clique no app OpenVPN. A janela em branco à direita, OpenVPN Documents, serve para compartilhar arquivos. Arraste o arquivo .ovpn
para a janela de Documentos OpenVPN.
Agora, inicie o app OpenVPN no iPhone. Você receberá uma notificação de que um novo perfil está pronto para ser importado. Clique no sinal mais em verde para importá-lo.
Conectando-se
O OpenVPN agora está pronto para ser usado com o novo perfil. Inicie a conexão deslizando o botão Connect para a posição On. Desconecte deslizando o mesmo botão para Off.
Nota: o switch da VPN em Settings não pode ser usado para se conectar à VPN. Se tentar fazer isso, você receberá uma notificação para se conectar apenas usando o app OpenVPN.
Instalando
Abra a Google Play Store. Procure e instale o Android OpenVPN Connect, o aplicativo oficial do cliente Android OpenVPN.
Você pode transferir o perfil .ovpn
conectando o dispositivo Android ao seu computador por USB e copiando o arquivo. Como alternativa, caso tenha um leitor de cartões SD, você pode remover o cartão SD do dispositivo, copiar o perfil nele e então inserir o cartão de volta no dispositivo Android.
Inicie o app OpenVPN e clique no menu FILE
para importar o perfil.
Então, navegue até a localização do perfil salvo (a captura de tela usa /storage/emulated/0/openvpn
) e selecione o seu arquivo .ovpn
. Clique no botão IMPORT
para terminar a importação deste perfil.
Conectando-se Assim que o perfil for adicionado, você verá uma tela como esta:
Para se conectar, clique no botão de alternância próximo do perfil que quiser usar. Você verá as estatísticas em tempo real da sua conexão e tráfego sendo roteado através do seu servidor OpenVPN:
Para desconectar-se, simplesmente clique novamente no botão de alternância no canto superior esquerdo. Você será solicitado a confirmar que deseja desconectar-se da sua VPN.
Nota: esse método para testar sua conexão VPN funcionará apenas se você optou por rotear todo o tráfego pela VPN no Passo 7, quando você editou o arquivo server.conf
para o OpenVPN.
Assim que tudo estiver instalado, um simples visto confirma que tudo está funcionando corretamente. Sem ter uma conexão VPN habilitada, abra um navegador e vá para DNSLeakTest.
O site irá retornar o endereço IP atribuído pelo seu provedor de serviço de Internet e como você se mostra para o resto do mundo. Para verificar suas configurações DNS através do mesmo site, clique em Extended Test e ele dirá a você quais servidores DNS você está usando.
Agora, conecte o cliente OpenVPN ao seu VPN do Droplet e atualize o navegador. Um endereço IP completamente diferente (daquele do seu servidor VPN) deve aparecer agora e é assim que você aparece para o mundo. Novamente, o Extended Test do DNSLeakTest irá verificar suas configurações DNS e confirmar que você agora está usando os resolvers DNS definidos pelo seu VPN.
De vez em quando, você pode precisar revogar um certificado de cliente para impedir o acesso adicional ao servidor OpenVPN.
Para fazer isso, siga o exemplo no tutorial de pré-requisito How to Set Up and Configure a Certificate Authority on Ubuntu 20.04, sob a seção Revoking a Certificate
Assim que tiver revogado um certificado para um cliente usando essas instruções, você precisará copiar o arquivo crl.pem
gerado para o seu servidor OpenVPN no diretório /etc/openvpn/server
:
- sudo cp /tmp/crl.pem /etc/openvpn/server/
Em seguida, abra o arquivo de configuração do servidor OpenVPN:
- sudo nano /etc/openvpn/server/server.conf
No final do arquivo, adicione a opção crl-verify
que irá instruir o servidor OpenVPN para verificar a lista de revogação de certificados que criamos sempre que uma tentativa de conexão for feita:
crl-verify crl.pem
Salve e feche o arquivo.
Por fim, reinicie o OpenVPN para implementar a revogação do certificado:
- sudo systemctl restart openvpn-server@server.service
O cliente já não deve conseguir se conectar com sucesso ao servidor usando a credencial antiga.
Para revogar outros clientes, siga este processo:
./easyrsa revoke client_name
crl.pem
para o seu servidor OpenVPN e copie-o para o diretório /etc/openvpn/server/
para sobrepor a lista antiga.Você pode usar este processo para revogar quaisquer certificados que você tenha emitido anteriormente para seu servidor.
Agora, você deve ter uma rede virtual privada totalmente operacional em funcionamento no seu Servidor OpenVPN. Você pode navegar na Web e baixar conteúdo sem se preocupar com atores mal-intencionados rastreando sua atividade.
Há vários passos que você pode seguir para personalizar ainda mais sua instalação do OpenVPN, tal como configurar seu cliente para se conectar à VPN automaticamente ou configurar regras específicas do cliente e políticas de acesso. Para esses exemplos e outras personalizações do OpenVPN, consulte a documentação oficial do OpenVPN.
Para configurar mais clientes, você precisa seguir apenas os passos 6 e 11 a 13 para cada dispositivo adicional. Para revogar o acesso a clientes, siga o passo 15.
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
This textbox defaults to using Markdown to format your answer.
You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!
Parabéns, excelente tutorial! Existe alguma forma de fazer conexão a essa vpn por um roteador?
Tutorial muito completo mas apesar de eu conseguir conectar na VPN, a internet cai. Eu até tentei acessar um dos computadores da rede onde o servidor VPN está mas não consigo pois a faixa de IP que o tunel fornece é 10.8.0.X e a faixa de IP da rede interna do escritório é 192.168.100.X. Não sei se tem algo a ver mas a faixa IP aqui da minha casa também é a mesma do escritório. Se for problema tem como resolver no servidor? Pergunto pois não tenho como controlar isso em todos os clientes que irão acessar. Grato!
Olá! Estudei e segui fielmente o conteúdo todo, contudo, na hora de subir o servidor, dá um probleminha. Ao ver se ele subiu: $ sudo service openvpn status recebo a saída: Active: active (exited) - em verde. e mais abaixo: (data) firewall systemd[1]: Starting OpenVPN service… (data) firewall systemd[1]: Finished OpenVPN service.
Tento testar a porta (testeportas.com.br) mas dá inativo.
Poderia indicar algo para resolver o problema? Obrigado. (já configurei vários outros servidores openvpn mais antigos, e funcionaram)
Ola.
Muito obrigado pelo guia. Eu segui o texto religiosamente, mas infelizmente acontece um erro qdo tento importat o ficheiro .ovpn no meu Android.
“Failed to import profile. Failed to parse profile static_key_parse_error”.
Inspeccionando o ficheiro reparei nisto:
"X509v3 extensions: X509v3 Basic Constraints: CA:FALSE
Penso que nao esta a aceitar o certificado.
O unico “erro” que tive em todo processo foi este ao correr o scipt de criacao de ficheiros para o cliente:
cat: /home/XXXXXX/client-configs/keys/ca.crt: Ficheiro ou pasta inexistente cat: /home/XXXXXX/client-configs/keys/ta.key: Ficheiro ou pasta inexistente
mas 1- as pastas existem, e 2- os ficheiros foram criados na mesma…
podia me dar uma ajudinha?
muito obrigado