Ter uma Rede Privada Virtual (VPN) é essencial nesta era da tecnologia. As VPNs têm se tornado cada vez mais cruciais para uso pessoal e, especialmente, para empresas e corporações. E se você ainda está decidindo em qual solução de VPN apostar, por que não considerar a VPN OpenConnect?
A VPN OpenConnect é uma solução gratuita com desempenho e recursos de nível empresarial. E neste tutorial, você aprenderá como configurar e conectar-se ao Servidor VPN OpenConnect (ocserv).
Continue lendo e afaste entidades maliciosas da sua rede!
Pré-requisitos
Este tutorial inclui demonstrações práticas. Para acompanhar, certifique-se de ter o seguinte em vigor:
- A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
- Um usuário administrativo ou um usuário não-root com privilégios de sudo/root.
- A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
- A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.
Instalando o Servidor VPN OpenConnect
O Servidor VPN OpenConnect é um servidor VPN de código aberto baseado em SSL para Linux, disponível na maioria das distribuições Linux, como Debian, Ubuntu, RHEL/CentOS e Fedora.
O Servidor VPN OpenConnect suporta a maioria dos clientes, desde Desktop/Computador até dispositivos móveis (Android e iOS). Da mesma forma, o Servidor VPN OpenConnect oferece suporte a vários backends de autenticação, como Radius, OpenID, Kerberos e Cartão Inteligente.
Mas antes de aproveitar esses recursos, você deve primeiro instalar o Servidor VPN OpenConnect, conforme descrito abaixo:
1. Faça SSH para o seu servidor e execute o seguinte comando apt update
para atualizar e atualizar o índice de pacotes. Este comando garante que você tenha as informações de pacote mais recentes.

2. Em seguida, execute o seguinte comando apt install
para instalar o pacote ocserv
.
Assim que a instalação estiver completa, o novo serviço do systemd chamado ocserv
estará ativo e

3. Agora, execute os seguintes comandos systemctl
para garantir que o serviço ocserv
esteja em execução.
Como você pode ver na saída, o status do serviço ocserv
está habilitado e em execução.

Gerando Certificados SSL/TLS
Com o servidor VPN OpenConnect instalado, o próximo passo é garantir que você possa se conectar de forma segura ao servidor VPN OpenConnect. Como? O primeiro passo é gerar certificados SSL/TLS via Certbot e LetsEncrypt.
Antes de gerar certificados, certifique-se de ter um endereço de e-mail registrado no LetsEncrypt e que o nome de domínio esteja apontado para o endereço IP do servidor Debian.
Para gerar certificados SSL/TLS:
1. Execute o comando abaixo para instalar o certbot
no seu servidor Linux.

2. Em seguida, execute o comando certbot
abaixo para gerar certificados SSL/TLS. Certifique-se de alterar o endereço de e-mail ([email protected]
) e o nome de domínio (vpn.atadomain.io
) conforme necessário.

3. Por fim, execute o seguinte comando para verificar se os certificados SSL/TLS gerados existem no diretório do seu domínio.
Se for bem-sucedido, você verá as chaves pública (fullchain.pem) e privada (privkey.pem), conforme mostrado abaixo.

Configurando o Servidor VPN OpenConnect
Mesmo com os certificados SSL/TSL à sua disposição, eles permanecerão lá a menos que você configure o Servidor VPN OpenConnect. Você modificará a configuração padrão do Servidor VPN OpenConnect (/etc/ocserv/ocserv.conf) da seguinte forma:
- Altere o método de autenticação padrão.
- Desative o UDP no Servidor VPN OpenConnect.
- Altere os certificados SSL/TLS padrão.
- Configurando o nome de domínio e uma rede interna ou endereço IP para clientes.
Para configurar o Servidor VPN OpenConnect, siga as etapas abaixo:
1. Primeiro, execute o comando cp
abaixo para fazer backup da configuração padrão do servidor OpenConnect VPN (ocserv.conf
) para ocserv.conf.orig
armazenado no diretório /etc/ocserv
.
2. Em seguida, abra a configuração do servidor OpenConnect VPN (/etc/ocserv/ocserv.conf) usando o seu editor preferido.
3. Altere o valor do parâmetro auth
para plain[passwd=/etc/ocserv/ocpasswd]
, conforme mostrado abaixo. Fazendo isso, você substitui a autenticação padrão Módulos de Autenticação Conectáveis (PAM) pelo arquivo de senha.
auth = "plain[passwd=/etc/ocserv/ocpasswd]"

4. Agora, coloque #
na frente do parâmetro udp-port
para desabilitar as conexões UDP padrão.
Você estará utilizando o OpenConnect VPN apenas com modo TCP, o que pode aumentar a velocidade via parâmetros do kernel.
tcp-port = 443
#udp-port = 443

5. Substitua o caminho do arquivo de certificado no parâmetro server-cert
pela chave pública e o parâmetro server-key
pela chave privada.
server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem

6. Altere o valor do parâmetro try-mtu-discovery
para true
para habilitar a descoberta do MTU. Isso aumenta a velocidade e o desempenho do Servidor VPN OpenConnect.
try-mtu-discovery = true

7. Em seguida, insira o nome do domínio do Servidor VPN OpenConnect no parâmetro default-domain
, e altere o endereço IP interno padrão no parâmetro ipv4-network
.
Neste exemplo, os clientes VPN usarão a rede interna 10.11.0.0/24
.
default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0

8. Comente os parâmetros de rota padrão adicionando um caractere #
no início de cada linha para desativar a rota padrão. Uma vez terminado, salve o arquivo e saia do editor.
#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default

9. Agora, execute os seguintes comandos para restart
o serviço ocserv
, aplicar as alterações e listar todas as portas abertas (ss
) em seu sistema.
Se o Servidor VPN OpenConnect estiver em execução, você verá a porta 443 no estado LISTEN e utilizada pelo serviço ocserv, como mostrado abaixo.

Adicionando Usuários ao Servidor VPN OpenConnect
Com o servidor VPN OpenConnect configurado, você precisa de uma maneira de se conectar a ele. Como? Criando e adicionando um usuário VPN ao servidor VPN OpenConnect.
Para adicionar um usuário ao servidor OpenConnect VPN, você criará um usuário VPN e gerará um arquivo de senha via utilitário ocpasswd
da seguinte maneira:
Execute o comando ocpasswd
abaixo para criar um novo usuário. Quando solicitado, insira uma nova senha para o usuário e repita. A escolha do nome de usuário deste tutorial é atauser
, mas você pode fornecer o seu próprio.
Depois que o usuário for criado, o arquivo de senha (/etc/ocserv/ocpasswd
) também será criado.

Agora, execute o seguinte comando cat
para verificar os detalhes do arquivo de senha (/etc/ocserv/ocpasswd
).

Adicionando Regras de Firewall UFW para Abrir Portas Cruciais
Em um sistema Debian, o firewall padrão é o IPTables, que requer um entendimento aprofundado de redes para configurar. Por que não simplificar o processo? Neste tutorial, você instalará e configurará o UFW como o firewall padrão.
1. Execute o comando abaixo para instalar
o UFW enquanto aceita automaticamente todas as solicitações (-y
)

2. Uma vez que o UFW estiver instalado, execute os seguintes comandos ufw
para abrir portas cruciais para o servidor OpenConnect VPN funcionar corretamente.
Ao ser solicitado, insira Y e pressione Enter para prosseguir com a operação, conforme mostrado abaixo.

3. Por fim, execute o seguinte comando para verificar o status do UFW e garantir que o UFW esteja em execução.
O resultado abaixo mostra o status ativo do UFW e todas as regras de firewall adicionadas.

Habilitando o Encaminhamento de Porta
Com um servidor VPN em execução, você deve direcionar o tráfego do mundo exterior para o seu servidor, habilitando o encaminhamento de porta. Você permitirá o encaminhamento de porta no seu servidor Debian por meio de parâmetros do kernel.
Para habilitar o encaminhamento de porta, siga estas etapas:
Execute o seguinte comando, que não gera saída no terminal, mas cria um novo arquivo chamado /etc/sysctl.d/60-ocserv.conf
. Este arquivo contém parâmetros do kernel para habilitar o encaminhamento de porta no seu sistema.
Agora, execute o comando sysctl
abaixo para aplicar os novos parâmetros do kernel e habilitar o encaminhamento de porta.

Configurando NAT com UFW
Habilitar o encaminhamento de porta é apenas um dos primeiros passos. Desta vez, você deve garantir que os clientes VPN possam se conectar à internet ou a redes específicas por meio do servidor VPN OpenConnect. Como? Configurando o NAT via UFW.
Para configurar o NAT com UFW para o servidor OpenConnect VPN:
1. Execute o seguinte comando para verificar a lista de interfaces em seu sistema.
Neste exemplo, a interface eth1 será o gateway NAT para os clientes VPN.

2. Em seguida, abra a configuração do UFW (/etc/ufw/before.rules) usando seu editor preferido e adicione as seguintes linhas antes da opção *filter
. Essas configurações vão realizar o NAT para os usuários da VPN (especifique a interface de saída) ou para a rede interna até a interface eth1
.
Lembre-se de alterar a sub-rede (10.11.0.0/24
) com as redes dos clientes VPN e a interface (eth1
) com a sua interface de rede.
# NAT para o servidor OpenConnect VPN
# com rede do cliente 10.11.0.0/24
# até a interface eth1
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT

3. Adicione as seguintes linhas abaixo da seção ok icmp code for FORWARD
das opções ufw-before-forward
, salve o arquivo e saia do editor.
Essas configurações permitem o encaminhamento (origem e destino) da rede do cliente VPN.
# permitir encaminhamento da rede do cliente VPN
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT

4. Após salvar, execute o seguinte comando para recarregar as regras do UFW e reiniciar o serviço do UFW. Isso garante que a configuração de NAT seja aplicada ao sistema.
5. Por fim, execute o seguinte comando iptables
para verificar o status de NAT no UFW, já que a infraestrutura do UFW é baseada no IPTables.
Se for bem-sucedido, você receberá uma saída semelhante à mostrada abaixo.

Conectando ao servidor OpenConnect VPN via OpenConnect-GUI
Seguindo as instruções, você deve agora ter um servidor OpenConnect VPN totalmente funcional em execução. Mas depois de todo o trabalho árduo, chegou o momento da verdade.
O servidor OpenConnect VPN pode estar em execução, mas há apenas uma melhor maneira de verificar — conectando-se ao servidor OpenConnect VPN.
Para se conectar ao servidor OpenConnect VPN, você deve instalar o aplicativo OpenConnect-GUI:
1. Abra seu navegador da web favorito e visite a página do GitHub do OpenConnect-GUI.
2. Em seguida, baixe e instale o aplicativo OpenConnect VPN para o Windows.

3. Abra o cliente VPN OpenConnect-GUI e clique no menu Arquivo → Perfis → Novo perfil (avançado) (ou pressione Ctrl+Shift+N). Uma pequena janela aparece onde você pode preencher os detalhes do novo perfil (passo quatro).

4. Agora, preencha as informações do perfil VPN com o seguinte:
- Nome – Forneça um nome de conexão (por exemplo, testvpn).
- Gateway – Especifique o nome de domínio do servidor OpenConnect VPN (por exemplo, https://vpn.atadomain.io).
- Nome de usuário – O usuário adicionado (atauser) ao servidor OpenConnect VPN.
Depois de preenchido, clique em Salvar para confirmar as informações e criar o perfil VPN.

5. Em seguida, configure seu perfil de VPN recém-criado (testvpn) como o Servidor, e clique em Conectar para estabelecer uma conexão com o servidor VPN OpenConnect.

6. Quando solicitado, insira a Senha do seu usuário VPN e clique em OK.

7. Uma vez conectado, a cor do cadeado muda para verde, conforme mostrado abaixo.

8. Por fim, clique na guia Informações da VPN para obter o status detalhado da conexão. Você deve ver o endereço IP interno obtido do servidor VPN, o servidor DNS e a versão do TLS que você está usando.

Conclusão
Ao longo deste tutorial, você aprendeu a configurar o servidor VPN OpenConnect. Ao mesmo tempo, você aprendeu a usar certificados SSL/TSL e adicionar regras de firewall para estabelecer uma conexão segura com o servidor VPN OpenConnect.
Com esse conhecimento recém-adquirido, que tal integrar o servidor VPN OpenConnect com vários backends de autenticação, como Radius e OpenID? Ou adicionar uma camada de segurança para autenticação do cliente via autenticação de dois fatores?