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.