Pesquisa de site

Como configurar VPN baseada em IPsec com Strongswan no Debian e Ubuntu


StrongSwan é uma implementação de VPN (Virtual Private Network) baseada em IPsec de código aberto, multiplataforma, completa e amplamente usada que roda em Linux, FreeBSD, OS X, Windows, Android e iOS. É principalmente um daemon de chaves que suporta os protocolos Internet Key Exchange (IKEv1 e IKEv2) para estabelecer associações de segurança (SA) entre dois pares.

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

Ambiente de teste

Lembre-se de substituir os IPs a seguir pelos 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

Etapa 1: habilitando o encaminhamento de pacotes do kernel

1. Primeiro, você precisa configurar o kernel para ativar 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 as linhas a seguir, remova o comentário e defina seus valores conforme mostrado (leia os comentários no arquivo para obter 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

3. Se você tiver um serviço de firewall UFW ativado, será necessário adicionar as seguintes regras ao arquivo de configuração /etc/ufw/before.rules logo antes das regras de filtro em ou 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 que as regras de firewall forem adicionadas, aplique as novas alterações reiniciando o UFW conforme mostrado.

sudo ufw disable 
sudo ufw enable

Passo 2: Instalando o StrongSwan no Debian e Ubuntu

5. Atualize seu 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 for concluída, o script do instalador iniciará o serviço strongswan e permitirá que ele seja iniciado 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

Etapa 3: configurando 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:

  • config setup – especifica informações gerais de configuração para IPSec que se aplicam a todas as conexões.
  • charondebug – define quanta saída de depuração do Charon deve ser registrada.
  • Uniqueids – especifica se um determinado ID de participante deve ser mantido exclusivo.
  • 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 uns aos outros.
  • 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.
  • right – especifica o endereço IP da interface de rede pública do participante certo.
  • rightsubnet – indica a sub-rede privada atrás do participante esquerdo.
  • ike – define uma lista de algoritmos de criptografia/autenticação IKE/ISAKMP SA 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 Principal.
  • keyingtries – indica o número de tentativas que devem ser feitas para negociar uma conexão.
  • ikelifetime – indica quanto tempo o canal de chaveamento de uma conexão deve durar antes de ser renegociado.
  • vida útil – define quanto tempo uma instância específica de uma conexão deve durar, desde a negociação bem-sucedida até a expiração.
  • dpddelay – especifica o intervalo de tempo com que mensagens R_U_THERE/trocas INFORMATIVAS são enviadas ao peer.
  • 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 Dead Peer Detection (DPD) para gerenciar a conexão.

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

man ipsec.conf

Etapa 4: configurando PSK para autenticação ponto a ponto

8. Depois de configurar ambos os gateways de segurança, gere um PSK seguro para ser usado pelos peers usando o comando a seguir.

head -c 24 /dev/urandom | base64

9. Em seguida, adicione o PSK no arquivo /etc/ipsec.secrets em ambos os 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

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

ping 192.168.0.101
ping 10.0.2.15

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

sudo ipsec stop
sudo ipsec start

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

ipsec --help

Isso é tudo! Neste artigo, descrevemos como configurar uma VPN IPSec site-to-site usando strongSwan em servidores Ubuntu e Debian, onde ambos gateways de segurança foram configurados para autenticar uns aos outros usando um PSK. Se você tiver alguma dúvida ou opinião para compartilhar, entre em contato conosco por meio do formulário de feedback abaixo.