Pesquisa de site

VPN Ipsec baseada em Libreswan usando chaves pré-compartilhadas e RSA no Ubuntu


Nesta página

  1. Recursos do Libreswan
  2. Iniciando o serviço IPsec
  3. Configuração do LibreSwan
    1. Status da VPN de chave pré-compartilhada

    Neste tutorial, o LibreSwan será instalado na plataforma Ubuntu. LibreSwan é uma implementação de código aberto do protocolo IPsec, é baseado no projeto FreeSwan e está disponível como pacote pronto para uso em distribuições Linux baseadas em RedHat. No entanto, instruções detalhadas são fornecidas no código-fonte do projeto para compilá-lo em outras plataformas Linux. Após o processo de instalação, um gateway para VPN IPsec baseado em gateway será configurado para proteger os dados do remetente para os pares do destinatário.

    Detalhes sobre o protocolo IPsec são fornecidos em nosso artigo anterior. No entanto, uma breve informação sobre as duas partes do protocolo IPsec em relação ao LibreSwan é explicada abaixo.

    Uma VPN baseada em IPsec consiste no protocolo Internet Keying Exchange e no protocolo Encapsulating Security Payload (ESP).

    -->   IKE

    Como o nome indica, o objetivo do protocolo IKE é autenticar (usando uma chave pré-compartilhada, criptografia de chave pública, freeradius) pares de uma VPN, gerar chaves dinamicamente e compartilhar as chaves com os pares VPN. As chaves de criptografia para a segunda fase do IPsec também dependem do IKE. Libreswan implementa o protocolo IKE usando o programa pluto do projeto.

    -->   ESP

    O protocolo ESP é a especificação real da política acordada pelos pares que é implementada na pilha IPsec do kernel do Linux (NETEY/XFRM).

    Recursos do Libreswan

    • Suporte para autenticação baseada em chave pré-compartilhada.
    • Suporte para autenticação baseada em chave pública.
    • Suporta a versão IKE v1/v2 da troca de chaves.
    • Biblioteca de criptografia NSS suportada.
    • Xauth e DNSSec também são suportados.

    Pacotes necessários para o Ubuntu 16.04

    É necessário instalar os seguintes pacotes no Ubuntu para uma compilação bem-sucedida do LibreSwan. Uma breve informação também é fornecida no código-fonte sobre como habilitar ou desabilitar plugins/recursos e comandos ao instalar o LibreSwan.

    apt-get -y update
    apt-get install  libunbound-dev libevent-dev  libsystemd-dev libnss3-dev libnspr4-dev pkg-config \ libpam0g-dev libcap-ng-dev libcap-ng-utils libselinux1-dev libcurl4-nss-dev flex bison gcc make libnss3-tools

    A instalação dos pacotes necessários é mostrada abaixo.

    O código-fonte mais recente da ferramenta IPsec é baixado usando o comando wget e extraído usando o seguinte comando tar.

    wget https://download.libreswan.org/libreswan-3.20.tar.gz
    tar -xzf libreswan-3.20.tar.gz
    cd libreswan-3.20

    Não há necessidade de executar o comando configure, basta executar o comando make que mostrará duas maneiras de criar o LibreSwan conforme mostrado abaixo.

    Por fim, execute o comando make all para criar o LibreSwan na plataforma.

    make all

    Agora execute o comando make install para instalar o programa IPsec.

    Iniciando o serviço IPsec

    Conforme mostrado na captura de tela acima, é necessário habilitar o serviço IPSec na plataforma Ubuntu usando o seguinte comando.

    systemctl enable ipsec.service

    É necessário inicializar a biblioteca criptográfica NSS antes de iniciar o serviço IPsec. Ele é usado pelo LibreSwan para uso de algoritmo criptográfico em VPN IPsec.

    IPsec initnss

    Finalmente, inicie o serviço IPSec usando o seguinte comando.

    ipsec setup start

    Execute o comando ipsec status para visualizar as configurações do LibreSwan na plataforma Ubuntu.

    ipsec status

    Configuração do LibreSwanName

    Neste tutorial, uma VPN IPsec será configurada entre pares usando uma chave pré-compartilhada e chaves RSA (par de chaves público/privado). A configuração de ambos os pares (esquerda/direita) é fornecida abaixo.

    VPN baseada em chave pré-compartilhada

    ipsec.conf (configuration file of left VM)              ipsec.secrets  (configuration file of left VM)

    versão 2                                                                            192.168.15.145 192.168.15.245: PSK \vpn_psk>1

    config setup                                                        
                     protostack=netkey
    conn vpn_psk

                      ike=aes256-sha256;modp4096
                      fase2alg=aes256-sha256;modp4096
                             esquerda=192.168.15><.15<.15
                      leftsubnet=172.16.10.0/24
                     right=192.168.15.245
                      rightsubnet=192.169.50.0/24
                      authby=secret
                      type=tunnel
                      auto=start

    ipsec.conf (configuration file of right VM)              ipsec.secrets  (configuration file of right VM)

    versão 2                                                                             192.168.15.245 192.168.15.145: PSK \vpn_psk123\

    config setup                                                        
                     protostack=netkey
    conn vpn_psk

             ike=aes256-sha256;modp4096
             fase2alg=aes256-sha256;modp4096
             esquerda=192.168.15.245
    <         subrede esquerda=192.169.50.0/24
             subrede direita=192.168.15.145
             subrede direita=172.16.10.0/24
             authby=secret
             type=tunnel
             auto=start

    Depois de definir a configuração acima nos arquivos ipsec.conf e ipsec.secrets, execute o seguinte comando em ambos os lados para iniciar o processo de negociação IPSec.

    ipsec restart

    Status da VPN de chave pré-compartilhada

    A saída dos comandos ipsec status e setkey -D é mostrada abaixo.

    ipsec status
    setkey -D

    VPN baseada em chave RSA (pública/privada)

    É necessário gerar chaves RSA para ambas as máquinas e incluí-las no arquivo de configuração. A versão reduzida de uma chave RSA é mostrada neste tutorial. Certifique-se também de que a chave pública incluída esteja em uma única linha.

    Geração de chaves RSA

    Conforme mostrado abaixo, os comandos a seguir são usados para gerar chaves para ambos os pares.

     ipsec newhostkey --output /etc/ipsec.secrets

    A chave pública gerada é adicionada ao arquivo ipsec.secrets conforme mostrado abaixo.

    Da mesma forma, as chaves RSA são geradas usando o mesmo comando para a máquina do lado direito, conforme mostrado no instantâneo a seguir.

    Conforme mostrado acima, os comandos de geração de chaves incluem automaticamente a chave pública RSA em /etc/ipsec.secrets em ambas as máquinas de mesmo nível. A chave privada do RSA é armazenada no banco de dados do NSS nos arquivos /etc/ipsec.d/*.db.

    Depois de gerar as chaves RSA, a próxima etapa altera a configuração de ambas as máquinas no arquivo ipsec.conf.

    ipsec.conf (configuration file of left VM)             

    versão 2                                                                            

    config setup                                                        
                     protostack=netkey
    conn vpn_rsa

                      ike=aes256-sha256;modp4096
                      fase2alg=aes256-sha256;modp4096
                             esquerda=192.168.15><.15<.15                  leftsubnet=172.16.10.0/24
                     right=192.168.15.245
                      rightsubnet=192.169.50.0/24
    Authby=rsasig
    leftrsasigKey=0saqpgmujab8qoqaj1ftkiqf3f [........] ALQNXUF $
    rightrSasigKey=0SAQOS7APH6LPPGUGGC444+w [.......

                      tipo=túnel
                      auto=início

    ipsec.conf (configuration file of right VM)              

    versão 2

    config setup                                                        
                     protostack=netkey
    conn vpn_rsa

             ike=aes256-sha256;modp4096
             fase2alg=aes256-sha256;modp4096
             esquerda=192.168.15.245
    <         subrede esquerda=192.169.50.0/24
             subrede direita=192.168.15.145
             subrede direita=172.16.10.0/24
             authby=rsasig
             rightrsasigkey=0sAQPgMUjAb8QOQaJ1FTkIQf3f[........]ALQNXUf$
             leftrsasigkey=0sAQOs7aPh6LppUGgC454+W[..... ...]fSd2zQE

             type=tunnel
             auto=start

    Depois de alterar os arquivos de configuração do LibreSwan, a próxima etapa é reiniciar o serviço IPsec em ambas as máquinas usando o seguinte comando.

    ipsec restart

    O status da VPN IPsec no dispositivo esquerdo é mostrado na captura de tela a seguir. Isso mostra que RSASIG é usado na política para autenticar os pares do túnel IPsec.

    O objetivo deste tutorial é explorar o \LibreSwan\, que fornece a implementação do protocolo IPsec. Está disponível em distribuições RedHat, porém pode ser compilado para outra plataforma como Ubuntu/Debian facilmente. Neste artigo, a primeira ferramenta LibreSwan é construída a partir da fonte e, em seguida, duas VPN configuradas usando chaves pré-compartilhadas e RSA entre os dispositivos de gateways.