Como Configurar uma VPN baseada em IPsec com Strongswan no Debian e Ubuntu

strongSwan é uma implementação de VPN (Rede Privada Virtual) baseada em IPsec, de código aberto, multiplataforma, completa e amplamente utilizada, que funciona em Linux, FreeBSD, OS X, Windows, Android e iOS. É principalmente um daemon de chaveamento que suporta os protocolos de Troca de Chaves pela Internet (IKEv1 e IKEv2) para estabelecer associações de segurança (SA) entre dois pares.

Este artigo descreve como configurar gateways de VPN IPSec de site para site usando strongSwan em servidores Ubuntu e Debian. Por site para site, entendemos que cada gateway de segurança tem uma sub-rede por trás dele. Além disso, os pares autenticarão um ao outro usando uma chave pré-compartilhada (PSK).

Ambiente de Teste

Lembre-se de substituir os seguintes IPs pelos seus IPs do mundo real para configurar seu ambiente.

Gateway do Site 1 (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

Gateway do Site 2 (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

Passo 1: Habilitando o Encaminhamento de Pacotes do Kernel

1. Primeiro, você precisa configurar o kernel para habilitar o encaminhamento de pacotes, adicionando as variáveis de sistema apropriadas no arquivo de configuração /etc/sysctl.conf em ambos os gateways de segurança.

$ sudo vim /etc/sysctl.conf

Procure pelas seguintes linhas, descomente-as e defina seus valores conforme mostrado (leia os comentários no arquivo para mais informações).

net.ipv4.ip_forward = 1 
net.ipv6.conf.all.forwarding = 1 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 

2. Em seguida, carregue as novas configurações executando o seguinte comando.

$ sudo sysctl -p
Load Sysctl Kernel Settings

3. Se você tiver o serviço de firewall UFW ativado, precisará adicionar as seguintes regras ao arquivo de configuração /etc/ufw/before.rules logo antes das regras de filtro em qualquer um dos gateways de segurança.

Gateway do Site 1 (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

Gateway do Site 2 (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

4. Depois de adicionar as regras do firewall, aplique as novas alterações reiniciando o UFW conforme mostrado.

$ sudo ufw disable 
$ sudo ufw enable

Passo 2: Instalando strongSwan no Debian e Ubuntu

5. Atualize o cache de pacotes em ambos os gateways de segurança e instale o pacote strongswan usando o gerenciador de pacotes APT.

$ sudo apt update
$ sudo apt install strongswan 

6. Assim que a instalação estiver completa, o script do instalador iniciará o serviço strongswan e o habilitará para iniciar automaticamente na inicialização do sistema. Você pode verificar seu status e se está habilitado usando o seguinte comando.

$ sudo systemctl status strongswan.service
$ sudo systemctl is-enabled strongswan.service

Passo 3: Configurando os Gateways de Segurança

7. Em seguida, você precisa configurar os gateways de segurança usando o arquivo de configuração /etc/ipsec.conf.

Gateway do Site 1 (tecmint-devgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Copie e cole a seguinte configuração no arquivo.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Gateway do Site 2 (tecmint-prodgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

Copie e cole a seguinte configuração no arquivo.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

Aqui está o significado de cada parâmetro de configuração:

  • configuração de instalação – especifica informações de configuração geral para IPSec que se aplicam a todas as conexões.
  • charondebug – define quanto a saída de depuração do Charon deve ser registrada.
  • uniqueids – especifica se um ID de participante específico deve ser mantido único.
  • conn prodgateway-to-devgateway – define o nome da conexão.
  • tipo – define o tipo de conexão.
  • auto – como lidar com a conexão quando o IPSec é iniciado ou reiniciado.
  • keyexchange – define a versão do protocolo IKE a ser usada.
  • authby – define como os pares devem autenticar um ao outro.
  • esquerda – define o endereço IP da interface de rede pública do participante esquerdo.
  • leftsubnet – indica a sub-rede privada atrás do participante esquerdo.
  • direita – especifica o endereço IP da interface de rede pública do participante direito.
  • rightsubnet – indica a sub-rede privada atrás do participante esquerdo.
  • ike – define uma lista de algoritmos de criptografia/autenticação SA IKE/ISAKMP a serem usados. Você pode adicionar uma lista separada por vírgulas.
  • esp – define uma lista de algoritmos de criptografia/autenticação ESP a serem usados para a conexão. Você pode adicionar uma lista separada por vírgulas.
  • agressivo – indica se deve usar o Modo Agressivo ou o Modo Principal.
  • keyingtries – indica o número de tentativas que devem ser feitas para negociar uma conexão.
  • ikelifetime – indica por quanto tempo o canal de chaveamento de uma conexão deve durar antes de ser renegociado.
  • lifetime – define por quanto tempo uma instância particular de uma conexão deve durar, desde a negociação bem-sucedida até a expiração.
  • dpddelay – especifica o intervalo de tempo com o qual as mensagens R_U_THERE/trocas INFORMATIVAS são enviadas ao par.
  • dpdtimeout – especifica o intervalo de tempo limite, após o qual todas as conexões com um par são excluídas em caso de inatividade.
  • dpdaction – define como usar o protocolo de Detecção de Pares Inativos (DPD) para gerenciar a conexão.

Para obter mais informações sobre os parâmetros de configuração acima, leia a página do manual ipsec.conf executando o comando.

$ man ipsec.conf

Passo 4: Configurando PSK para Autenticação de Ponta a Ponta

8. Após configurar ambos os gateways de segurança, gere um PSK seguro a ser usado pelos pares usando o seguinte comando.

$ head -c 24 /dev/urandom | base64
Generate PSK Key

9. Em seguida, adicione o PSK no arquivo /etc/ipsec.secrets em ambas as gateways.

$ sudo vim /etc/ipsec.secrets

Copie e cole a seguinte linha.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. Reinicie o programa IPSec e verifique seu status para visualizar as conexões.

$ sudo ipsec restart
$ sudo ipsec status
View IPSec Connection Status

11. Por fim, verifique se você pode acessar as sub-redes privadas de qualquer uma das gateways de segurança executando um comando ping.

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

12. Além disso, você pode parar e iniciar o IPSec conforme mostrado.

$ sudo ipsec stop
$ sudo ipsec start

13. Para saber mais sobre os comandos IPSec para estabelecer manualmente conexões e mais, consulte a página de ajuda do IPSec.

$ ipsec --help

É isso! Neste artigo, descrevemos como configurar uma VPN IPSec de site a site usando o strongSwan em servidores Ubuntu e Debian, onde ambas as gateways de segurança foram configuradas para autenticar uma à outra usando um PSK. Se você tiver alguma dúvida ou pensamento para compartilhar, entre em contato conosco através do formulário de feedback abaixo.

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/