Introdução ao Strongswan

Ambientes híbridos ou multicloud são uma realidade em diversas empresas. O time de operações é responsável por manter não apenas a infraestrutura em pé, mas também garantir a comunicação entre os componentes. Para manter a comunicação segura entre os recursos computacionais, é necessário utilizar diversos artifícios, sendo o mais comum a VPN.

O Strongswan é uma ferramenta de código aberto para criação de VPN. Ele utiliza a técnica de IPSec para garantir que os dados trafegados estejam criptografados, usa o protocolo IKE para assegurar o estabelecimento seguro do túnel entre hosts e pode utilizar diversos métodos de autenticação. Existem várias formas de funcionamento da ferramenta, como: acesso remoto, entre redes e entre hosts.

A configuração é feita por meio de arquivos no diretório de configuração e pela interface de linha de comando. Também é possível utilizar GUI. É possível utilizar configurações a partir de um banco de dados ou até mesmo da ferramenta NetworkManager. Os principais arquivos de configuração a serem considerados são o swanctl.conf (configurações de conexão) e o strongswan.conf (configurações gerais de funcionamento da ferramenta).

Quanto ao funcionamento, utilizamos duas máquinas servidoras como roteadores que fornecem um caminho criptografado entre duas redes. Esse roteamento é feito utilizando um componente pré-existente do sistema operacional: a tabela de rotas. Ao enviarmos um pacote IPSec pela máquina gateway, ele reescreve a fonte como a máquina original e verifica as regras de roteamento configuradas no swanctl.conf. Se um pacote chega ao roteador e não atende às regras de comunicação, ele é descartado.

Vale destacar outros aspectos, como a documentação com passo a passo de instalação para diversas distros Linux famosas, como Arch, Debian, Fedora, entre outras; a disponibilidade de clientes de VPN em diversas plataformas (Windows, Linux, Mac OS, Android); manutenção facilmente realizada com o comando swanctl ou via outras interfaces; e as possíveis formas de inicialização.

Este post é baseado na seguinte documentação: https://docs.strongswan.org/docs/5.9/howtos/introduction.html

Comentários

Postagens mais visitadas deste blog

O que é programação orientada a objetos?

CI/CD/CD: Dev e Ops convivendo em harmonia