Como Configurar o Servidor VPN OpenConnect

Ter uma Rede Privada Virtual (VPN, na sigla em inglês) é essencial nesta era da tecnologia. As VPNs têm se tornado cada vez mais importantes para uso pessoal e especialmente para empresas e empreendimentos. E se você ainda está decidindo em qual solução de VPN apostar, por que não considerar a OpenConnect VPN?

A OpenConnect VPN é uma solução de VPN gratuita com desempenho e recursos de nível empresarial. E neste tutorial, você aprenderá como configurar e se conectar ao servidor OpenConnect VPN (ocserv).

Continue lendo e mantenha entidades maliciosas longe da sua rede!

Pré-requisitos

Este tutorial inclui demonstrações práticas. Para acompanhar, certifique-se de ter o seguinte:

  • 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 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 OpenConnect VPN

O servidor OpenConnect VPN é um servidor de VPN baseado em SSL de código aberto para Linux, disponível na maioria das distribuições Linux, como Debian, Ubuntu, RHEL/CentOS e Fedora.

O servidor OpenConnect VPN suporta a maioria dos clientes, desde desktops/computadores até dispositivos móveis (Android e iOS). Da mesma forma, o servidor OpenConnect VPN suporta vários mecanismos de autenticação, como Radius, OpenID, Kerberos e Smart Card.

Mas antes de aproveitar esses recursos, você deve primeiro instalar o servidor OpenConnect VPN, conforme segue:

1. 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 mais recentes sobre os pacotes.

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 concluída, o novo serviço 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 a partir da 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.

Mas antes de gerar certificados, assegure-se de ter um endereço de e-mail para se registrar no LetsEncrypt, e o nome de domínio está apontado para o endereço IP do servidor Debian.

Para gerar certificados SSL/TLS:

1. Execute o comando abaixo para instalar o certbot em 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 último, 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 maneira:

  • 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 editor de sua preferência.

3. Altere o valor do parâmetro auth para plain[passwd=/etc/ocserv/ocpasswd], como mostrado abaixo. Isso substitui a autenticação padrão com o arquivo de senha Pluggable Authentication Modules (PAM).

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 desativar as conexões UDP padrão.

Você estará usando o OpenConnect VPN apenas com o 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 pelo certificado público 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 de MTU. Fazê-lo aumenta a velocidade e o desempenho do servidor VPN OpenConnect.

try-mtu-discovery = true
Enabling MTU discovery

7. Em seguida, insira o nome de domínio para o 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 o caractere # no início de cada linha para desativar o gateway de rota padrão. Quando terminar, 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 reiniciar o serviço ocserv, aplicar as alterações e listar todas as portas abertas (ss) no seu sistema.

# Reinicie o serviço ocserv e aplique as alterações
sudo systemctl restart ocserv
# Liste 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, conforme 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ê irá criar um usuário VPN e gerar um arquivo de senha via utilitário ocpasswd da seguinte forma:

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 deste tutorial para o nome de usuário é 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 ser configurado. Por que não simplificar o processo? Neste tutorial, você irá 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. Depois que o UFW estiver instalado, execute os seguintes comandos ufw para abrir as 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 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

Quando 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, ativando 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 o NAT com UFW

Habilitar o encaminhamento de porta é apenas um dos primeiros passos a serem dados. 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 OpenConnect VPN Server:

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 farão NAT dos usuários VPN (especifique a interface de saída) ou rede interna para a interface eth1.

Certifique-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 a rede do cliente 10.11.0.0/24
# para 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 para FORWARD das opções ufw-before-forward, salve o arquivo e saia do editor.

Essas configurações habilitam o encaminhamento (origem e destino) da rede do cliente VPN.

# permitir o 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. Uma vez salvo, execute o seguinte comando para recarregar as regras do UFW e reiniciar o serviço UFW. Ao fazer isso, garante-se que a configuração NAT será aplicada ao sistema.

sudo ufw reload
sudo systemctl restart ufw

5. Por último, execute o seguinte comando iptables para verificar o status do NAT no UFW, uma vez que o backend do UFW é o IPTables.

sudo iptables -t nat -L POSTROUTING

Quando for bem-sucedido, você receberá uma saída como a abaixo.

Conectando ao servidor OpenConnect VPN via OpenConnect-GUI

Seguindo as instruções, agora você deve 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, faça o download e instale o aplicativo OpenConnect VPN para 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, defina seu perfil 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 VPN para obter o status detalhado da conexão. Você deverá ver o endereço IP interno que obteve do servidor VPN, o servidor DNS e a versão TLS que está usando.

Checking the VPN connection details

Conclusão

Ao longo deste tutorial, você aprendeu a configurar o servidor VPN OpenConnect. Ao mesmo tempo, aprendeu a usar certificados SSL/TLS 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 back-ends de autenticação, como Radius e OpenID? Ou adicionar uma camada de segurança para autenticação de cliente via autenticação de dois fatores?

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