strongSwan é uma implementação de VPN (Rede Virtual Privada) baseada em IPsec, de código aberto, multiplataforma, completa e amplamente utilizada que roda em Linux, FreeBSD, OS X, Windows, Android e iOS. É principalmente um daemon de chaveamento que suporta os protocolos de Internet Key Exchange (IKEv1 e IKEv2) para estabelecer associações de segurança (SA) entre dois pares.
Este artigo descreve como configurar gateways de 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 tem uma sub-rede atrá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 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. Primeiramente, 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 habilitado, você precisa adicionar as seguintes regras ao arquivo de configuração /etc/ufw/before.rules logo antes das regras de filtro em quaisquer 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 do firewall forem adicionadas, 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 gerais de configuração 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/authenticação SA IKE/ISAKMP a serem utilizados. Você pode adicionar uma lista separada por vírgulas.
- esp – define uma lista de algoritmos de criptografia/authenticação ESP a serem utilizados para a conexão. Você pode adicionar uma lista separada por vírgulas.
- aggressive – indica se deve ser usado o Modo Aggressive ou o Modo Principal.
- keyingtries – indica o número de tentativas que devem ser feitas para negociar uma conexão.
- ikelifetime – indica quanto tempo o canal de criação de chave de uma conexão deve durar antes de ser renegociado.
- lifetime – define 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 Parceiro Inativo (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 correspondente.
$ 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 utilizado 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 ambos os 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 ambos os gateways de segurança foram configurados para autenticar um ao outro usando um PSK. Se você tiver alguma pergunta 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/