Pesquisa de site

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.