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

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

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

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

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/