Instalar Open VPN em Linux

English version: Click

Vamos instalar o servidor Open VPN em uma máquina Linux com o Ubuntu. Além disso, vamos utilizar  o TLS Crypt v2 possibilita o fornecimento de uma chave tls-crypt específica para cada cliente. 

Ao final do artigo, apresentaremos também a instalação do Open VPN no cliente e a configuração do cliente VPN. 

Instalação do Open VPN 

Inicialmente vamos instalar o openvpn. Dependendo da data da instalação o repositório já pode conter a versão openvpn ou maior.

Em nosso caso, ainda não está no repositório conforme podemos verificar. 

sudo apt-get update && sudo apt-get install openvpn 

sudo apt install easy-rsa 

Verificando a Versão do Open VPN 

Podemos observar que até o momento a versão que está no repositório do ubuntu é a 2.4.7. No entanto, precisamos da versão 2.5 ou maior. 

Para verificar a versão pode usar o comando : 

openvpn --version 

Se a sua versão de OpenVPN é menor que 2.5, click aqui para instalar a versão mais nova.

Install openvpn
versão antiga de OpenVPN

Criando um diretório para o easy-rsa

Agora vamos criar um diretório para o ease-rsa e vamso criar links simbólicos. Usaremos links simbólicos para que futuras atualizações possam ser replicadas para nossas configurações.

Inicialmente vamos sair do modo root do terminal. Para isso, podemos dar o comando exit.

exit

Agora vamos criar o diretório easy-rsa

mkdir ~/easy-rsa

Criando o link simbólico para /usr/share/easy-rsa/* .

ln -s /usr/share/easy-rsa/* ~/easy-rsa/

Agora, vamos acessar o diretório que criamos e vamos verificar se os links simbólicos já estão lá.

cd ~/easy-rsa/

ls

Inicializando o PKI

Agora vamos inicializar o PKI dentro do diretório que acabamos de criar.

cd ~/easy-rsa/

./easyrsa init-pki

Veremos uma mensagem como a mostrada abaixo. Essa mensagem mostra que estamos prontos para criar a CA Certificate Authority. A CA será a Autoridade Certificadora responsável por validar os certificados.

wasyrsa init-pki
wasyrsa init-pki

Observação: Neste tutorial, estamos criando a CA dentro do servidor VPN por uma questão de simplicidade e praticidade.

No entanto, a CA pode estar em um outro servidor separado.

Além disso, existem argumentos relacionados à segurança que pode motivar a separar um servidor CA somente para ter a função de validar certificados.

Criando a CA Certificate Authority

Ao criar a CA teremos a opção de preencher alguns campos. O campo principal é o common name .

Dessa forma esse campo common name será o único que vamos preencher nessa configuração.

O nosso campo common name terá o valor “VPN_CA”. No entanto, você pode usar outro nome.

Além disso vamos usar a opção “nopass” para evitar que tenhamos que usar password quando formos assinar um certificado.

Se desejar, você pode optar por requisitar um password toda vez que assinar, apenas retire a opção “nopass”.

Para criar a CA, vamos usar o comando abaixo:

./easyrsa build-ca nopass

Após o comando, teremos uma mensagem semelhante a abaixo:

“...

CA creation complete and you may now import and sign cert requests. 

Your new CA certificate file for publishing is at: 

/home/redes/easy-rsa/pki/ca.crt  

...“ 

Podemos entrar no nosso diretório para verificar os novos arquivos: 

cd ~/easy-rsa/pki  

ls 

Podemos verificar que existe agora um arquivo chamado ca.crt . Futuramente, vamos utilizar esse arquivo. 

Podemos também verificar a chave privada da nossa CA. Usando o comando abaixo: 

ls ~/easy-rsa/pki/private 
ca.key
ca.key

Criando a chave do servidor OpenVPN

Para criar a chave do servidor OpenVPN, vamos entrar no diretório ~/easy-rsa/ e usar o comando para cirar a chave:

cd ~/easy-rsa/

./easyrsa build-server-full vpn_server nopass

Após digitar esse comando, você verá um resultado semelhante ao apresentado na figura abaixo:

rsa vpn server
rsa vpn server

Agora ao listar o conteúdo do diretório ~/easy-rsa/pki/private/ podemos ver que temos uma nova chave = “vpn_server.key”.

vpn server key
vpn server key

Podemos também verificar o certificado criado para o servidor VPN. Para isso, podemo usar o comando abaixo:

ls ~/easy-rsa/pki/issued
vpn_server.crt
vpn_server.crt

Assinando o certificado do servidor OpenVPN

Agora precisamos assinar o certificado do servidor Open VPN.

Então, para assinar o certificado do servidor Open VPN , vamos entrar no diretório ~/easy-rsa e em seguida digitar o comando abaixo:

cd ~/easy-rsa/

./easyrsa sign-req server vpn_server

Após o comando veremos um resultado semelhante ao da figura abaixo:

Você terá que digitar yes e pressionar ENTER.

sign vpn server
sign vpn server

Gerando o parâmetro Diffie hellman

Para gerar os parâmetros Diffie hellman vamos para o diretório ~/easy-rsa/ e em seguida vamos executar o comando para gerar o DH.

cd ~/easy-rsa/

./easyrsa gen-dh

A figura abaixo mostra o resultado após executar o comando para gerar o Diffie hellman.

generate diffie hellman
generate diffie hellman

Criando um TLS Crypt v2 para o OpenVPN

Usaremos o TLS Crypt v2 possibilita o fornecimento de uma chave tls-crypt específica para cada cliente.

Dessa forma, podemos reduzir os danos caso a chave tls-crypt de um cliente venha a ser comprometida.

Isso porque, se um cliente tivesse sua tls-crypt exposta, apenas a tls-crypt desse cliente representaria um risco de segurança.

Vale lembrar que --tls-auth e tls-crypt usam uma chave de grupo pré-compartilhada, que é compartilhada entre todos os clientes e servidores em uma implantação OpenVPN.

Dessa forma, se algum cliente for comprometido, o invasor terá acesso a essa chave compartilhada e consequentemente prejudicará a segurança.

Criando a chave TLS Crypt v2 para o servidor Open VPN

Agora vamos criar a chave TLS Crypt v2 que será usada pelo servidor Open VPN. Assim, inicialmente vamos entrar no diretório “~/easy-rsa/pki/”.

cd ~/easy-rsa/pki/

Depois disso, vamos digitar o comando abaixo:

openvpn --genkey tls-crypt-v2-server private/vpn_server.pem

Caso queira, você pode verificar que foi criada uma chave vpn_server.pem no diretório “~/easy-rsa/pki/private/”.

Você pode verificar usando o comando :

ls ~/easy-rsa/pki/private/

Configurando o servidor Open VPN

Inicialmente vamos para o diretório /etc/openvpn/server, usaremos o comando:

cd /etc/openvpn/server

Em seguida, vamos criar um arquivo com o nome de server.conf.

sudo nano server.conf

Nesse arquivo, vamos adicionar as linhas de configuração abaixo:

#-------------------- 
#VPN port
port 1194   

#VPN over UDP  
proto udp   

# "dev tun" will create a routed IP tunnel 
dev tun 

ca ca.crt 
cert vpn_server.crt 
key vpn_server.key   
tls-crypt-v2 vpn_server.pem 
dh dh.pem 

#network for the VPN   
server 10.8.0.0 255.255.255.0 

push "redirect-gateway autolocal" 

# Maintain a record of client <-> virtual IP address 

# associations in this file.  
ifconfig-pool-persist /var/log/openvpn/ipp.txt

# Ping every 10 seconds and assume client is down if 
# it receives no response in 120 seconds. 
keepalive 10 120 

#cryptographic cipher 
cipher AES-256-GCM 

#avoid accessing certain resources on restart 
persist-key 
persist-tun 

#log of current connections  
status /var/log/openvpn/openvpn-status.log 

#log verbose level (0-9) 
verb 4 

# Notify the client when the server restarts 
explicit-exit-notify 1 
#----------------------------------------- 

Explicando as linhas de configuração do server.conf

Agora, vamos descrever as linhas de configuração usadas. Inicialmente temos a linha “port 1194” que indica a porta que o servidor usará para o OpenVPN.

Depois disso, temos a linha “proto udp” que indica que nossa VPN vai usar o protocolo da camada de transporte UDP.

Em seguida, temos a linha “dev tun” que indica que usaremos um túnel de rotas IP para a VPN.

Depois disso, vamos começar a indicar o certificado da autoridade certificadora usando a linha “ca ca.crt“, nesse caso o arquivo é o “ca.crt”.

Neste exemplo, a autoridade certificadora também está na mesma máquina do servidor VPN.

Agora vamos informar qual é o nosso arquivo que tem o certificado do servidor VPN = “cert vpn_server.crt”.

Lembre-se que criamos nosso certificado com o nome vpn_server.crt. Se você usou outro nome, lembre-se de alterar para o nome que você usou.

A próxima linha “key vpn_server.key” indica a chave que será usada pelo servidor VPN.

Além disso, vale a pena lembrar que essa chave é secreta e deve ser mantida em segredo. Em nosso exemplo, criamos a chave com o nome “vpn_server.key”.

Agora vamos usar a linha “tls-crypt-v2 server vpn_server.pem” para apontar para a chave TLS Crypt V2 do servidor OpenVPN.

Em nosso caso o nome do arquivo da chave foi o “vpn_server.pem”.

Agora vamos informar o nome do arquivo Diffie hellman = “dh dh.pem”. Em nosso caso esse arquivo está com o nome dh.pem.

A próxima linha, “server 10.8.0.0 255.255.255.0”, informa o range de IPs que serão usados na VPN. Esse range de IPs pode ser alterado para evitar que coincida com alguma rede interna de sua empresa.

A linha “push “redirect-gateway autolocal”” força a utilização da VPN como gateway.

Depois temos a linha “ifconfig-pool-persist /var/log/openvpn/ipp.txt” que armazena os endereços virtuais dos clientes da VPN.

Em seguida, temos a linha “keepalive 10 120” que indica que vamos enviar um ping a cada 10 segundos para os clientes e que se o cliente ficar 120 segundos sem responder será considerado desconectado.

A próxima linha “cipher AES-256-GCM” indica qual será a cifra criptográfica usada.

As linhas “persist-key” e “persist-tun” são usadas para evitar o acesso aos recursos em caso de restart em caso de redução de privilégios.

A linha “status /var/log/openvpn/openvpn-status.log” informa onde serão armazenados os logs das conexões em andamento.

Em seguida, temos a linha “verb 4” que indica o nivel de detalhamento dos logs. Sendo que o nivel de detalhamento pode variar de 0 até 9.

A última linha , “explicit-exit-notify 1”, indica que o servidor VPN vai avisar os clientes caso tenha que ser reinicializado.

Copiando arquivos para a pasta /etc/openvpn/server

Agora que já criamos o arquivo de configuração, precisos copiar os arquivos de certificados e chaves do servidor VPN para dentro do diretório “/etc/openvpn/server/”.

Copiando o ca.crt e o dh.pem

Inicialmente vamos para o diretório “~/easy-rsa/pki/”.

cd ~/easy-rsa/pki/

Depois vamos copiar o certificado da autoridade certificadora. Em nosso caso é o “ca.crt”.

sudo cp ca.crt /etc/openvpn/server/

Em seguida vamos copiar o arquivo de Diffie hellman. Para isso, vamos copiar o arquivo dh.pem para o diretório “/etc/openvpn/server/”.

sudo cp dh.pem /etc/openvpn/server/

Copiando o vpn_server.key e vpn_server.pem

Depois, vamos para o diretório “~/easy-rsa/pki/private/”.

cd ~/easy-rsa/pki/private/

Dentro desse diretório, vamos copiar os arquivos, “vpn_server.key” e “vpn_server.pem”, necessários para o servidor VPN. Para a copia, usaremos o comando cp.

sudo cp vpn_server.key /etc/openvpn/server/

sudo cp vpn_server.pem /etc/openvpn/server/

Copiando o vpn_server.crt

Agora vamos para o diretório onde temos o certificado do servidor open vpn. Nesse caso é o diretório “~/easy-rsa/pki/issued/”.

cd ~/easy-rsa/pki/issued/

Agora vamos copiar o arquivo vpn_server.crt para o diretório “/etc/openvpn/server/”.

sudo cp vpn_server.crt /etc/openvpn/server/

Permitindo o encaminhamento no servidor Open VPN

Até agora, fomos muito bem na configuração do servidor Open VPN.

Portanto, precisamos habilitar o encaminhamento na máquina que será servidora do Open VPN. Para isso, vamos inserir uma linha no arquivo /etc/sysctl.conf.

Dessa forma, vamos usar o comando abaixo para inserir a linha pelo comando:

sudo nano /etc/sysctl.conf

Em seguida vamos adicionar a linha no final do arquivo:

net.ipv4.ip_forward = 1

Você pode me falar: Juliana essa linha já está no arquivo. A resposta é sim. No entanto, na maioria dos sistemas essa linha vai estar comentada, principalmente se você nunca configurou o servidor para encaminhar pacotes.

Dessa forma, se desejar pode descomnentar a linha ao invés de inserir a linha “net.ipv4.ip_forward = 1” .

Agora vamos recarregar o arquivo usando o comando :

sudo sysctl -p

Após digitar o comando acima, podemos ver um resultado semelhante ao da figura abaixo:

ipv4 forwarding
ipv4 forwarding

Configurando o servidor VPN para fazer NAT

Depois de toda a configuração inicial, precisamos assegurar que nosso servidor VPN faça NAT corretamente.

Isso porque, as conexões dos clientes serão roteadas por ele e usarão um IP diferente do IP da rede do servidor VPN.

Dessa forma, precisamos criar algumas regras de NAT no IPTABLES.

Inicialmente precisamos verificar qual é a interface do servidor VPN que encaminha dados para o default gateway.

Para isso, vamos usar o comando abaixo:

ip route list default
find default gateway interface
find default gateway interface

A figura acima mostra que a interface de nosso servidor VPN que está fazendo o roteamento padrão é a enp0s3 .

Portanto vamos usar a interface “enp0s3” . No seu caso, use o nome da interface que aparecer no comando “ip route list default”.

Inserindo as regras de NAT e redirecionamento para o Open VPN

Agora vamos editar o arquivo que faz a leitura preliminar das regras do firewall. Para isso vamos editar o arquivo “/etc/ufw/before.rules”.

Então, vamos usar o comando abaixo:

sudo nano /etc/ufw/before.rules

Dentro desse arquivo “before.rules”, vamos adicionar as linhas abaixo:

*nat
:POSTROUTING ACCEPT [0:0] 
-A POSTROUTING -s 10.8.0.0/16 -o enp0s3 -j MASQUERADE 
COMMIT
Nat ifw rules
Nat ifw rules

A figura acima demonstra que devemos inserir essas linhas de configuração no início do arquivo “before.rules”.

Dessa forma, essas linhas que inserimos vão permitir o NAT em nosso servidor VPN.

Importante dizer que aqui devemos colocar a rede que estamos usando para VPN. Dessa forma, em nossas configurações usamos a rede “10.8.0.0/16”.

Além disso, vamos especificar aquela interface que liga o servidor VPN ao default gateway “enp0s3”.

Editando o “/etc/default/ufw”

Agora vamos editar o arquivo “/etc/default/ufw” e alterar uma linha para permitir o redirecionamento.

Para isso vamos encontrar a linha “DEFAULT_FORWARD_POLICY=”DROP” “ e vamos alterar para DEFAULT_FORWARD_POLICY=”ACCEPT”.

Abaixo, temos a configuração alterada:

sudo nano /etc/default/ufw

DEFAULT_FORWARD_POLICY=”ACCEPT”
ifw forward rules
ifw forward rules

Permitindo acesso ao servidor Open VPN

Agora, vamos criar uma regra para permitir acesso na porta do servidor Open VPN. Em nosso caso, nosso servidor está operando na porta 1194. Portanto vamos usar a regra abaixo para permitir acesso UDP na porta 1194:

sudo ufw allow 1194/udp
firewall allow vpn port
firewall allow vpn port

Reiniciando o Firewall

Depois de alterar as linhas vamos reiniciar o Firewall. Para isso vamos usar os comandos abaixo:

sudo ufw disable

sudo ufw enable
restart ufw firewall
restart ufw firewall

Inicializando o servidor Open VPN

Vamos inicializar o servidor Open VPN. Para isso, vamos executar o comando abaixo:

sudo systemctl start [email protected]

Em seguida vamos verificar se o servidor inicializou corretamente com o seguinte comando:

sudo systemctl status [email protected]

A figura abaixo mostra o resultado do status do servidor OpenVPN.

start open vpn server
start open vpn server

Para garantir que o servidor OpenVPN inicie toda vez que a máquina inicializar, precisamos digitar o comando abaixo.

sudo systemctl enable [email protected]

Configurando o cliente Open VPN

Depois de configurarmos o servidor Open VPN, vamos iniciar a configuração do cliente Open VPN.

Para isso vamos configurar um cliente hipotético chamado Alice. E configuraremos uma outra máquina onde o cliente Alice vai estar usado.

Vale lembrar que estamos usando máquinas virtuais e rede virtualizada para demonstrar a configuração do OpenVPN.

No entanto, o mesmo procedimento se aplica para máquinas que estejam usando IPs públicos.

Além disso, optamos por usar um cenário virtualizado para que nossos leitores possam replicar o cenário como prova de conceito.

Criando e assinando o certificado do cliente OpenVPN

Para criar o certificado do cliente Open VPN , vamos entrar no diretório “~/easy-rsa”, dentro do servidor Open VPN. Em seguida, vamos digitar o comando abaixo:

cd ~/easy-rsa/

./easyrsa gen-req Alice nopass

Lembre-se de pressionar ENTER quando perguntar se deseja usar o Common Name.

*Vale lembrar que estamos usando como exemplo um cliente com o nome Alice. Certamente, você fará alterações para os nomes dos seus clientes.

Depois vamos assinar o certificado do cliente Open VPN , utilizando o o comando abaixo:

./easyrsa sign-req client Alice

Confirme a operação com “yes”.

Criando a chave TLS Crypt v2 para o cliente

Agora vamos criar a TLS Crypt v2 que será usada pelo cliente.

Nesse tutorial, vamos criar uma chave que será usada pelo cliente Alice.

Para isso, dentro do servidor Open VPN, vamos entrar no diretório ~/easy-rsa/pki/ .

cd ~/easy-rsa/pki/

Em seguida, vamos digitar o comando abaixo:

openvpn --tls-crypt-v2 private/vpn_server.pem --genkey tls-crypt-v2-client private/Alice.pem

Podemos verificar que a chave para Alice foi criada dentro do diretório ~/easy-rsa/pki/private/.

ls ~/easy-rsa/pki/private/
open vpn client key
open vpn client key

Preparando os arquivos de clientes Open VPN

Para configurar o cliente open vpn, vamos precisar criar um diretório onde vamos armazenar os arquivos dos clientes da VPN.

Para isso vamos usar o comando abaixo:

mkdir ~/vpn_clients

Dentro desse diretório vamos criar subdiretórios para cada cliente.

Em nosso caso, temos o cliente Alice. Então vamos criar um subdiretório alice.

cd ~/vpn_clients

mkdir alice

Agora vamos copiar os arquivos ca.crt e os outros arquivos da Alice para o diretório “~/vpn_clients/alice”.

O primeiro arquivo é o ca.crt que está no “~/easy-rsa/pki/” . Então vamos usar o comando abaixo

cd ~/easy-rsa/pki/

cp ca.crt ~/vpn_clients/alice

Agora vamos copiar os arquivos “.crt” e “.key” do cliente. Para isso, vamos para o diretório “~/easy-rsa/pki/issued/”.

cd ~/easy-rsa/pki/issued/

Em seguida vamos copiar o arquivo de certificado de Alice “.crt” para o diretório que criamos para o cliente Alice.

cp Alice.crt ~/vpn_clients/alice

Agora vamos copiar a chave de Alice “.key” e “.pem”. Para isso, vamos para o diretório “~/easy-rsa/pki/private/”.

cd ~/easy-rsa/pki/private/

Depois vamos copiar a chave de Alice “Alice.key” e “Alice.pem” para o diretório da Alice.

cp Alice.key ~/vpn_clients/alice

cp Alice.pem ~/vpn_clients/alice

Agora vamos para o diretório da Alice:

cd ~/vpn_clients/alice

Em seguida vamos dar um comando ls para verificar se os arquivos estão lá.

ls
open vpn client files
open vpn client files

Criando o arquivo OVPN do Open VPN

Agora vamos criar o arquivo “make_client_ovpn.sh” dentro do diretório da Alice.

Esse arquivo é um script que vai facilitar nossa vida no momento de configurar os clientes.

Obviamente, você poderia digitar manualmente as configurações no arquivo “.ovpn” dos clientes. No entanto, aqui sugerimos o script para automatizar a tarefa.

cd ~/vpn_clients/alice

nano make_client_ovpn.sh

Em seguida, vamos copiar e colar as linhas abaixo:

#!/bin/bash 

# 1 argument = Client_identifier
cat <(echo -e 'client') \
<(echo -e 'proto udp') \
<(echo -e 'dev tun') \
<(echo -e 'remote 127.0.0.1 1194') \
<(echo -e 'resolv-retry infinite') \
<(echo -e 'nobind') \
<(echo -e 'persist-key') \
<(echo -e 'persist-tun') \
<(echo -e 'remote-cert-tls server') \
<(echo -e 'cipher AES-256-GCM') \
<(echo -e '#user nobody') \
<(echo -e '#group nobody') \
<(echo -e 'verb 3') \
    <(echo -e '<ca>') \
    ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${1}.key \
    <(echo -e '</key>\n<tls-crypt-v2>') \
    ${1}.pem \
    <(echo -e '</tls-crypt-v2>') \
    > ${1}.ovpn 

 

Explicando as linhas da configuração

Agora, vamos explicar o significado dessas linhas de configuração do cliente Open VPN:

“client” indica que é um cliente Open VPN.

“proto udp” indica que vai usar o protocolo UDP

“dev tun” indica que vai usar túnel IP

“remote” 127.0.0.1 1194″ indica o IP do servidor Open VPN e a porta que será usada. No seu caso, assumindo que você vai usar a VPN na Internet, você deve verificar qual o IP público do seu servidor VPN.

“resolv-retry infinite” Indica que vai ficar tentando resolver o nome do servidor VPN

“nobind” indica não vai usar uma porta específica.

“persist-key” e “persist-tun” permite preservar estado das conexões em caso de reinicialização.

“remote-cert-tls server” indica o tls do servidor

“cipher AES-256-GCM” indica a cifra de criptografia usada

“#user nobody” e “#group nobody” Redução de privilégios em clientes não Linux. Remova o “#” se estiver usando um cliente em uma máquina que não use o sistema operacional Linux.

“verb 3” indica o nível de detalhamento dos logs.

O resto do script indica que vamos ler os arquivos “${1}.crt” + “${1}.key” + “${1}.pem” , sendo o “${1}” o nome de identificação que você designou para o cliente. Esse identificador do cliente é primeiro argumento que vamos passar para nosso script.

Executando o script

Depois de criado o arquivo make_client_ovpn.sh, vamos torná-lo executável. Para isso vamos usar o comando abaixo:

chmod +x make_client_ovpn.sh

Depois disso vamos executar o arquivo utilizando o “./” e seguido do nome de identificação do cliente. No nosso caso, o cliente é a Alice.

./make_client_ovpn.sh Alice

Você vai perceber que foi criado um arquivo “.ovpn” dentro da pasta da Alice. Pode verificar usando o comando “ls”.

ls
open vpn client script
open vpn client script

Enviando o arquivo OVPN para o cliente

Agora vamos copiar o arquivo Alice.ovpn para o computador do cliente.

Para isso, podemos usar diversas formas para copiar como por exemplo SFTP, email, pendrive.

(Opcional)Vamos usar o netcat para trasnferir o arquivo Alice.ovpn.

Para isso vamos iniciar um servidor netcat na máquina que vai receber o arquivo Alice.ovpn. Para isso vamos usar o comando abaixo:

nc -vnl -w 2 8888 > Alice.ovpn

Esse comando informa que o computador vai ouvir na porta 8888 e vai jogar o conteúdo recebido dentro do arquivo Alice.ovpn.

Agora vamos para a máquina servidor VPN e vamos para a pasta da Alice. Em seguida vamos digitar o seguinte comando:

nc -vn 10.0.2.15 8888 < Alice.ovpn

Nesse caso estamos enviando o conteúdo do arquivo Alice.ovpn para a máquina 10.0.2.15 utilizando a porta TCP 8888.

Caso tenha dúvidas sobre netcat e queira se aprofundar mais, temos uma videoaula:

Editando o arquivo ovpn do cliente

Ok, uma vez copiado o arquivo. Vamos editá-lo e altear o IP da linha “remote 10.0.2.7 1194 “.

Em nosso caso, o IP do servidor VPN é o 10.0.2.7. Verifique o IP que será usado em seu ambiente.

Se estivermos usando uma máquina Linux, podemos comentar as linhas user nobody e group nobody. Para comentar a linha, use o “#”.

Instalando o openvpn no cliente

Temos uma página com a instalação do OpenVPN no cliente Linux: https://simplificandoredes.com/atualizar-cliente-openvpn-no-linux/

sudo apt-get update && sudo apt-get install openvpn

Caso a versão seja menor do que a 2.5 faça o mesmo procedimento descrito na sessão Instalando a versão mais nova do Openvpn.

Conectando o cliente na VPN

Agora vamos conectar o cliente na VPN. Em nosso caso, o cliente é a Alice. Portanto, vamos usar o comando abaixo:

sudo openvpn --config Alice.ovpn

Testando a VPN no cliente

Existem diversas formas para testar se o cliente está encaminhando seu tráfego para a VPN. No entanto, vamso usar o comando traceroute para fazer o teste.

Dessa forma, utilizando o comando traceroute para um site da internet, devemos ter um roteamento do tráfego do cliente para o servidor Open VPN.

Consequentemente, o tráfego do cliente vai ser roteado pelo servidor Open VPN para o site da internet.

Vamos usar o comando abaixo:

traceroute www.google.com
VPN test using traceroute
VPN test using traceroute

Podemos ver na figura acima que o primeiro salto está indo para o IP da VPN “10.8.0.1”.

Depois disso, o próximo salto é o default gateway do servidor Open VPN.

Dessa forma, podemos demonstrar que o tráfego já está sendo roteado do cliente para o servidor Open VPN.

Instalando a versão mais nova do OpenVPN

Se a sua versão de OpenVPN ainda está menor do que 2.5 você pode realizar os passos abaixo para atualizar a versão do OpenVPN de forma manual.

Em nossa instalação, estamos usando Ubuntu. Portanto vamos usar os comandos abaixo:

sudo -s

Em seguida, vamos digitar o comando abaixo para criar o diretório keyrings.

mkdir -p /etc/apt/keyrings

Agora, vamos instalar o curl. Para isso, vamos usar o comando abaixo.

apt install curl

Agora vamos adicionar o novo repositório do OpenVPN.

curl -fsSL https://swupdate.openvpn.net/repos/repo-public.gpg | gpg --dearmor > /etc/apt/keyrings/openvpn-repo-public.gpg

Agora podemos instalar a versão do OpenVPN para a versão do seu sistema operacional com o comando abaixo fazendo as devidas substituições em *** e &&&.

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/openvpn-repo-public.gpg] http://build.openvpn.net/debian/openvpn/*** &&& main" > /etc/apt/sources.list.d/openvpn-aptrepo.list

Nesse caso, vamos substituir o *** pela versão do OpenVPN que você deseja instalar.

Abaixo temos várias opções de versão de OpenVPN.

stable: usa a versão estável e exclui a possibilidade de uso de alphas, betas e RCs
testing: ultima versão incluindo os tipos alphas, betas e RCs
release/2.3: Usa a versão de OpenVPN 2.3
release/2.4: Usa a versão de OpenVPN 2.4 incluindo os tipos alphas, betas e RCs
release/2.5: Usa a versão de OpenVPN 2.5 incluindo os tipos alphas, betas e RCs
release/2.6: Usa a versão de OpenVPN 2.6 incluindo os tipos alphas, betas e RCs

E vamos substituir o &&& pela versão do Linux que você tem.

Abaixo temos várias opções de versão de Linux.

stretch = Debian 9.x
buster = Debian 10.x
bullseye = Debian 11.x
bookworm = Debian 12.x
bionic = Ubuntu 18.04 LTS
focal = Ubuntu 20.04 LTS
jammy = Ubuntu 22.04 LTS
kinetic = Ubuntu 22.10
lunar = Ubuntu 23.04

Como exemplo podemos escolher o comando abaixo para instalar o repositório para a versão OpenVPN 2.6 em uma máquina com o ubuntu 22.04 jammy.

echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/openvpn-repo-public.gpg] http://build.openvpn.net/debian/openvpn/release/2.6 jammy main" > /etc/apt/sources.list.d/openvpn-aptrepo.list

Para mais informações sobre outras versões, podemos acessar o site de repositório do openvn: https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos

Agora vamos instalar a nova versão de OpenVPN

apt-get update && apt-get install openvpn

Agora, vamos utilizar o comando para ver a versão do openvpn.

openvpn --version

Podemos ver na figura abaixo que já estamos com uma versão do openvpn maior ou igual a 2.5.

openvpn --version
openvpn –version

Livros Indicados:

E-Books de Redes e Segurança

Juliana Mascarenhas

Data Scientist and Master in Computer Modeling by LNCC.
Computer Engineer

Tem algum comentário ou dúvida? Comenta lá no canal:  Simplificandoredes.

Referências

https://community.openvpn.net/openvpn/wiki/OpenvpnSoftwareRepos

https://community.openvpn.net/openvpn/wiki/HOWTO

https://github.com/OpenVPN/easy-rsa/blob/master/README.quickstart.md

https://openwrt.org/docs/guide-user/services/vpn/openvpn/server

https://www.digitalocean.com/community/tutorials/how-to-set-up-and-configure-a-certificate-authority-ca-on-ubuntu-20-04

https://github.com/OpenVPN/openvpn/blob/master/doc/tls-crypt-v2.txt

https://community.openvpn.net/openvpn/ticket/1260

https://askubuntu.com/questions/1436407/ubuntu-22-10-openvpn-cannot-connect-as-a-client