VPN Ipsec baseada em Libreswan usando chaves pré-compartilhadas e RSA no Ubuntu
Nesta página
- Recursos do Libreswan
- Iniciando o serviço IPsec
- Configuração do LibreSwan
- 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-toolsA 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_pskike=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=startipsec.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_pskike=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=startDepois 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_rsaike=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ícioipsec.conf (configuration file of right VM)
versão 2
config setup
protostack=netkey
conn vpn_rsaike=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=startDepois 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.