Como configurar VPN baseada em IPsec com Strongswan no CentOS/RHEL 8
O StrongSwan é uma solução VPN baseada em IPsec de código aberto, multiplataforma, moderna e completa para Linux que fornece suporte completo para Internet Key Exchange (ambos IKEv1 e IKEv2) para estabelecer associações de segurança (SA) entre dois pares. É completo, modular por design e oferece dezenas de plug-ins que aprimoram a funcionalidade principal.
Artigo relacionado: Como configurar VPN baseada em IPsec com Strongswan no Debian e Ubuntu
Neste artigo, você aprenderá como configurar gateways VPN IPsec site a site usando strongSwan em servidores CentOS/RHEL 8. Isso permite que os pares se autentiquem usando uma chave pré-compartilhada forte (PSK). Uma configuração site a site significa que cada gateway de segurança possui uma sub-rede por trás dele.
Ambiente de teste
Não se esqueça de usar seus endereços IP reais durante as configurações enquanto segue o guia.
Portal do Site 1
Public IP: 192.168.56.7
Private IP: 10.10.1.1/24
Private Subnet: 10.10.1.0/24
Portal do Site 2
Public IP: 192.168.56.6
Private IP: 10.20.1.1/24
Private Subnet: 10.20.1.0/24
Etapa 1: Habilitando o encaminhamento de IP do kernel no CentOS 8
1. Comece ativando a funcionalidade de encaminhamento de IP do kernel no arquivo de configuração /etc/sysctl.conf em ambos os gateways VPN.
vi /etc/sysctl.conf
Adicione essas linhas no arquivo.
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. Após salvar as alterações no arquivo, execute o seguinte comando para carregar os novos parâmetros do kernel em tempo de execução.
sysctl -p
3. Em seguida, crie uma rota estática permanente no arquivo /etc/sysconfig/network-scripts/route-eth0 em ambos os gateways de segurança.
vi /etc/sysconfig/network-scripts/route-eth0
Adicione a seguinte linha no arquivo.
#Site 1 Gateway
10.20.1.0/24 via 192.168.56.7
#Site 2 Gateway
10.10.1.0/24 via 192.168.56.6
4. Em seguida, reinicie o gerenciador de rede para aplicar as novas alterações.
systemctl restart NetworkManager
Etapa 2: Instalando o StrongSwan no CentOS 8
5. O pacote strongswan é fornecido no repositório EPEL. Para instalá-lo, você precisa habilitar o repositório EPEL e, em seguida, instalar o strongwan em ambos os gateways de segurança.
dnf install epel-release
dnf install strongswan
6. Para verificar a versão do strongswan instalada em ambos os gateways, execute o seguinte comando.
strongswan version
7. Em seguida, inicie o serviço strongswan e ative-o para iniciar automaticamente na inicialização do sistema. Em seguida, verifique o status em ambos os gateways de segurança.
systemctl start strongswan
systemctl enable strongswan
systemctl status strongswan
Nota: A versão mais recente do strongswan no CentOS/REHL 8 vem com suporte para ambos swanctl (um novo utilitário de linha de comando portátil introduzido com o strongSwan 5.2.0, usado para configurar, controlar e monitorar o daemon IKE Charon usando o plugin vici) e starter utilitário (ou ipsec) usando o plugin Stroke obsoleto.
8. O diretório de configuração principal é /etc/strongswan/ que contém arquivos de configuração para ambos os plugins:
ls /etc/strongswan/
Para este guia, usaremos o utilitário IPsec que é invocado usando o comando strongswan e a interface Stroke. Portanto usaremos os seguintes arquivos de configuração:
- /etc/strongswan/ipsec.conf – arquivo de configuração para o subsistema IPsec do strongSwan.
- /etc/strongswan/ipsec.secrets – arquivo de segredos.
Etapa 3: configurando gateways de segurança
9. Nesta etapa, você precisa configurar os perfis de conexão em cada gateway de segurança de cada site usando o arquivo de configuração /etc/strongswan/ipsec.conf do strongswan.
Configurando o perfil de conexão do site 1
cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf
Copie e cole a seguinte configuração no arquivo.
config setup
charondebug="all"
uniqueids=yes
conn ateway1-to-gateway2
type=tunnel
auto=start
keyexchange=ikev2
authby=secret
left=192.168.56.7
leftsubnet=10.10.1.1/24
right=192.168.56.6
rightsubnet=10.20.1.1/24
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
aggressive=no
keyingtries=%forever
ikelifetime=28800s
lifetime=3600s
dpddelay=30s
dpdtimeout=120s
dpdaction=restart
Configurando o perfil de conexão do site 2
cp /etc/strongswan/ipsec.conf /etc/strongswan/ipsec.conf.orig
vi /etc/strongswan/ipsec.conf
Copie e cole a seguinte configuração no arquivo:
config setup
charondebug="all"
uniqueids=yes
conn 2gateway-to-gateway1
type=tunnel
auto=start
keyexchange=ikev2
authby=secret
left=192.168.56.6
leftsubnet=10.20.1.1/24
right=192.168.56.7
rightsubnet=10.10.1.1/24
ike=aes256-sha1-modp1024!
esp=aes256-sha1!
aggressive=no
keyingtries=%forever
ikelifetime=28800s
lifetime=3600s
dpddelay=30s
dpdtimeout=120s
dpdaction=restart
Vamos descrever brevemente cada um dos parâmetros de configuração acima:
- config setup – define as informações gerais de configuração para IPSec que se aplicam a todas as conexões.
- charondebug – especifica quanta saída de depuração do Charon deve ser registrada.
- Uniqueids – define se um determinado ID de participante deve ser mantido exclusivo.
- conn gateway1-to-gateway2 – usado para definir o nome da conexão.
- tipo – define o tipo de conexão.
- Auto – usado para declarar como lidar com a conexão quando o IPSec é iniciado ou reiniciado.
- keyexchange – declara a versão do protocolo IKE a ser usada.
- authby – especifica como os pares devem autenticar uns aos outros.
- esquerda – declara o endereço IP da interface de rede pública do participante esquerdo.
- leftsubnet – declara a sub-rede privada atrás do participante esquerdo.
- right – declara o endereço IP da interface de rede pública do participante certo.
- rightsubnet – declara a sub-rede privada atrás do participante esquerdo.
- ike – usado para declarar uma lista de algoritmos de criptografia/autenticação IKE/ISAKMP SA a serem usados. Observe que esta pode ser uma lista separada por vírgulas.
- esp – especifica uma lista de algoritmos de criptografia/autenticação ESP a serem usados para a conexão.
- agressivo – declara se deve usar o modo Agressivo ou Principal.
- keyingtries – declara o número de tentativas que devem ser feitas para negociar uma conexão.
- ikelifetime – especifica quanto tempo o canal de chaveamento de uma conexão deve durar antes de ser renegociado.
- vida útil – especifica quanto tempo uma instância específica de uma conexão deve durar, desde a negociação bem-sucedida até a expiração.
- dpddelay – declara o intervalo de tempo com que mensagens R_U_THERE/trocas INFORMATIVAS são enviadas ao peer.
- dpdtimeout – usado para declarar o intervalo de tempo limite, após o qual todas as conexões com um peer são excluídas em caso de inatividade.
- dpdaction – especifica como usar o protocolo Dead Peer Detection (DPD) para gerenciar a conexão.
Você pode encontrar uma descrição de todos os parâmetros de configuração do subsistema IPsec do strongSwan lendo a página man ipsec.conf.
man ipsec.conf
Etapa 4: configurando PSK para autenticação ponto a ponto
10. Em seguida, você precisa gerar um PSK forte para ser usado pelos pares para autenticação, como segue.
head -c 24 /dev/urandom | base64
11. Adicione o PSK no arquivo /etc/strongswan/ipsec.conf em ambos os gateways de segurança.
vi /etc/strongswan/ipsec.secrets
Insira a seguinte linha no arquivo.
#Site 1 Gateway
192.168.56.7 192.168.56.6 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"
#Site 1 Gateway
192.168.56.6 192.168.56.7 : PSK "0GE0dIEA0IOSYS2o22wYdicj/lN4WoCL"
12. Em seguida, inicie o serviço strongsan e verifique o status das conexões.
systemctl restart strongswan
strongswan status
13. Teste se você pode acessar as sub-redes privadas de qualquer gateway de segurança executando um comando ping.
ping 10.20.1.1
ping 10.10.1.1
14. Por último, mas não menos importante, para aprender mais comandos do strongswan para ativar/desativar conexões manualmente e muito mais, consulte a página de ajuda do Strongswan.
strongswan --help
É tudo por agora! Para compartilhar suas idéias conosco ou fazer perguntas, entre em contato conosco através do formulário de feedback abaixo. E para saber mais sobre o novo utilitário swanctl e a nova estrutura de configuração mais flexível, consulte a documentação do usuário do strongSwan.