Como Configurar o Servidor VPN OpenConnect

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.

sudo apt update
Updating the package repository

2. Em seguida, execute o seguinte comando apt install para instalar o pacote ocserv.

sudo apt install ocserv -y

Assim que a instalação estiver completa, o novo serviço do systemd chamado ocserv estará ativo e

Installing the OpenConnect VPN Server

3. Agora, execute os seguintes comandos systemctl para garantir que o serviço ocserv esteja em execução.

# Verificando se o serviço ocserv está habilitado
sudo systemctl is-enabled ocserv
# Verificando se o serviço ocserv está em execução
sudo systemctl status ocserv

Como você pode ver na saída, o status do serviço ocserv está habilitado e em execução.

Verifying the ocserv service is enabled and running

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.

sudo apt install certbot -y
Installing Certbot

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.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. Por fim, execute o seguinte comando para verificar se os certificados SSL/TLS gerados existem no diretório do seu domínio.

ls /etc/letsencrypt/live/vpn.atadomain.io

Se for bem-sucedido, você verá as chaves pública (fullchain.pem) e privada (privkey.pem), conforme mostrado abaixo.

Verifying the SSL/TLS certificates exist

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.

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

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]"
Changing the default authentication to a password file

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
Disabling the UDP support

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
Changing the SSL/TLS certificate files path

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
Enabling MTU discovery

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
Setting up the default domain and internal network for VPN clients

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
Disabling the default route gateway

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.

# Reinicie o serviço ocserv e aplique as alterações
sudo systemctl restart ocserv
# Listar todas as portas abertas
ss -tulpn | grep ocserv

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.

Checking the ocserv port

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.

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

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

cat /etc/ocserv/ocpasswd
Checking the password file’s details

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)

sudo apt install ufw -y
Installing UFW

2. Uma vez que o UFW estiver instalado, execute os seguintes comandos ufw para abrir portas cruciais para o servidor OpenConnect VPN funcionar corretamente.

# Adicione o serviço OpenSSH que roda na porta 22.
sudo ufw allow OpenSSH
# Adicione a porta 80 para renovar os certificados LetsEncrypt, 
# e a porta 443 para ser usada pelo servidor VPN OpenConnect.
sudo ufw allow 80,443/tcp
# Inicie e habilite o UFW.
sudo ufw enable

Ao ser solicitado, insira Y e pressione Enter para prosseguir com a operação, conforme mostrado abaixo.

Adding firewall rules to open ports

3. Por fim, execute o seguinte comando para verificar o status do UFW e garantir que o UFW esteja em execução.

sudo ufw status

O resultado abaixo mostra o status ativo do UFW e todas as regras de firewall adicionadas.

Checking the UFW status and listing all firewall rules

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.

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

Agora, execute o comando sysctl abaixo para aplicar os novos parâmetros do kernel e habilitar o encaminhamento de porta.

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

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.

ip a

Neste exemplo, a interface eth1 será o gateway NAT para os clientes VPN.

Checking available interfaces

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
Configuring NAT via UFW

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
Enabling forwarding for VPN client network

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.

sudo ufw reload
sudo systemctl restart ufw

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.

sudo iptables -t nat -L POSTROUTING

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.

Downloading the OpenConnect VPN application for Windows

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

Creating a new VPN profile

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.

Configuring the new VPN profile

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.

Connecting to the OpenConnect VPN Server

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

Authenticating the connection to the OpenConnect VPN Server

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

Confirming successful connection to the OpenConnect VPN Server

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.

Checking the VPN connection details

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?

Source:
https://adamtheautomator.com/openconnect-vpn/