Como configurar o servidor VPN WireGuard no pfSense

Servidor VPN WireGuard em pfSense

WireGuard VPN é um novo protocolo robusto e muito rápido para a criação de redes privadas virtuais, neste artigo vimos como ele é capaz de dobrar e até triplicar a velocidade do OpenVPN ou IPsec. Este novo protocolo VPN é ideal para configurações de acesso remoto com clientes móveis, sejam eles smartphones, tablets ou laptops, pois consome poucos recursos e a conexão é muito rápida. O sistema operacional pfSense na versão 2.5.0 incorporou oficialmente esta nova VPN, junto com IPsec, L2TP e também OpenVPN. Hoje vamos mostrar como configurar a VPN WireGuard desde o início no pfSense 2.5.0 para se conectar remotamente.

Recursos da VPN WireGuard

VPN do WireGuard é um software muito leve que nos permitirá configurar rápida e facilmente um túnel VPN, por padrão, utiliza a criptografia mais moderna, sem a necessidade de escolher diferentes algoritmos de criptografia assimétrica, assimétrica ou hash, por padrão temos um seguro suite por padrão, ao contrário de outros protocolos VPN. O objetivo da WireGuard é tornar-se a melhor VPN para usuários domésticos e empresariais, e está sendo bem-sucedido porque já foi integrado ao Linux Kernel para nos fornecer o melhor desempenho possível.

Em relação à criptografia utilizada, temos ChaCha20 para criptografia simétrica, autenticada com Poly1305 , então temos AEAD. Também faz uso de Curve25519 para ECDH, BLAKE2 para hash, SipHash24 para chaves de hashtable e HKDF para derivação de chave. Como você viu, temos os algoritmos criptográficos mais modernos usados ​​por padrão, e não podemos trocá-los por outros no momento, devem ser estes sim ou sim.

Com esta nova VPN não precisaremos gerenciar as conexões ou fazer configurações difíceis, ela só funciona em modo tunelamento porque é uma VPN L3, e usa o protocolo UDP como camada de transporte e não permite selecionar TCP, o que podemos fazer é modificar a porta de escuta para quem quisermos. Claro, o servidor WireGuard pode estar atrás do NAT sem problemas, apenas um encaminhamento de porta teria que ser feito. Outra característica interessante é que permite roaming entre redes de forma rápida e fácil, para estar sempre conectado a partir de qualquer Wi-fi ou rede 4G / LTE sem interromper a conexão. Além disso, também podemos habilitar o Kill-Switch para evitar vazamentos de dados se a VPN cair.

Por último, esta nova VPN é compatível com vários sistemas operacionais como Windows, Linux, Mac OS, FreeBSD, Android, e também iOS . Agora, a equipe de desenvolvimento do pfSense 2.5.0 incorporou o WireGuard em seu sistema por padrão, embora anteriormente também pudéssemos instalá-lo, mas não tínhamos suporte oficial.

Configuração do servidor VPN WireGuard

Antes do lançamento do pfSense 2.5.0, se quiséssemos ter o WireGuard neste firewall, tivemos que instalá-lo manualmente no sistema baixando alguns pacotes compatíveis com o FreeBSD. Graças à equipe de desenvolvimento do pfSense, a partir da versão 2.5.0 já está integrado na interface gráfica do usuário por padrão.

A primeira coisa que devemos fazer é ir para o ” VPN/WireGuard ”Seção para entrar na configuração deste novo protocolo VPN. Assim que entramos no menu, clicamos em «Adicionar Túnel».

Na configuração do túnel, devemos habilitar o túnel, dar uma descrição e colocar o seguinte:

  • Endereço: endereço IPv4 ou IPv6 do servidor VPN para a interface do túnel.
  • Porta: por padrão é 51820 UDP, mas podemos mudar para qualquer porta UDP.

pfSense incorpora um gerador de chave pública / privada para o servidor VPN com WireGuard, nossa recomendação é que você gere algumas chaves para o cliente VPN, e que cliquemos novamente em “Gerar” para que as segundas que sejam geradas sejam as da VPN servidor. Por exemplo, as seguintes chaves são as que usaremos posteriormente no cliente VPN. Você pode se ajudar com um bloco de notas ou Notepad ++ para registrar a configuração.

Para facilitar a configuração do WireGuard com chaves públicas e privadas, você também pode usar o ferramenta wireguardconfig isso nos permitirá gerar automaticamente o servidor e os clientes, para depois adaptá-lo ao pfSense.

E os segundos gerados são os do próprio servidor VPN com WireGuard.

Assim que tivermos as chaves, devemos clicar em “Salvar” e teremos criado o servidor VPN com a configuração anterior:

Uma vez que o tenhamos, agora temos que registrar os “peers”, ou seja, os clientes VPN. Voltamos à configuração do servidor WireGuard e clicamos em “Add Peer” que está em verde. Aqui teremos que preencher algumas configurações, mas não é necessário preencher todas elas.

Agora vamos explicar para que serve cada uma das opções:

  • Descrição: colocamos uma descrição para este cliente, por exemplo, nosso nome.
  • Endpoint: colocamos o endereço IP público do cliente VPN.
  • Porta do endpoint: colocamos a porta do cliente VPN.

Se você for configurar um cliente VPN, onde o IP público do cliente e a porta mudam, então devemos deixar as opções “Endpoint” e “Endpoint Port” vazias . Estas opções devem ser preenchidas se vamos configurar uma VPN Site-to-Site, mas no acesso remoto (Roadwarrior) não é necessário preenchê-las.

  • Keep alive: um valor em segundos, de vez em quando verifica se o túnel ainda está ativo, por padrão está desabilitado.

Agora vêm as configurações mais importantes:

  • Chave Pública: devemos colocar a chave pública do cliente VPN, anteriormente você viu como ela é gerada para o cliente, pois aqui colocaremos a chave pública.
  • IPs permitidos: se quisermos que haja redirecionamento de internet e acesso a todas as redes, colocamos 0.0.0.0/0. O mais normal é que os clientes VPN de acesso remoto vão para a Internet através da própria VPN, mas aqui podemos configurar acessos específicos a diferentes redes.
  • Endereço Peer WireGuard: o endereço IP do peer registrado.
  • Chave pré-compartilhada: opcional, você pode adicionar uma chave pré-compartilhada para aumentar ainda mais a segurança.

No nosso caso, não colocamos uma chave pré-compartilhada, mas se você colocar, tanto no pfSense quanto no cliente VPN ela deve ser exatamente a mesma, e devemos gerar esta chave com o botão azul que vem no pfSense. Não podemos colocar a chave pré-compartilhada “12345678” por exemplo, devemos usar o gerador pfSense.

Uma vez que tenhamos configurado corretamente o servidor VPN WireGuard no pfSense 2.5.0, vamos configurar a parte do firewall, pois por padrão está sempre em modo bloquear tudo.

Configuração de firewall em WAN e WireGuard

Antes de conectar o primeiro cliente VPN, devemos ir para “Firewall / Regras” e adicionar uma nova regra na interface WAN da Internet. Adicionamos uma nova regra com as seguintes informações:

  • Ação: Passe
  • Interface: WAN
  • Família de endereços: IPv4, IPv6 ou ambos
  • Protocolo: UDP
  • Fonte: qualquer (se você for configurar um Site a Site com o WireGuard, pode colocar o IP público da fonte aqui para melhorar a segurança).
  • Destino: Endereço WAN na porta 51820

Uma vez configurado, clicamos em «Salvar» para salvar esta regra, e aplicar as alterações, como sempre quando adicionamos uma nova regra ao firewall.

Feito isso, devemos agora ir para o Interface «WireGuard» que foi criado automaticamente no « Firewall / regras «Seção, aqui teremos que permitir todas as comunicações uma vez que tenha sido conectado, ou apenas o que quisermos, como OpenVPN ou IPsec.

Na configuração a seguir, você pode ver que temos uma regra com a seguinte configuração:

  • Ação: Passe
  • Interface: WireGuard
  • Família de endereços: IPv4, IPv6 ou ambos
  • Protocolo: Qualquer
  • Fonte: qualquer
  • Destino: qualquer

Clicamos em “Salvar” e aplicamos as alterações, como de costume. Neste ponto, estamos prontos para configurar os clientes VPN com WireGuard.

Configurar clientes VPN WireGuard e conectar-se ao pfSense

A configuração dos clientes VPN com WireGuard é a mesma em todas as plataformas, precisaremos exatamente das mesmas informações. No nosso caso, usamos um smartphone Android, você pode baixar o aplicativo oficial WireGuard para Android e iOS abaixo:

Mas também temos para outros sistemas operacionais, como o Windows, diretamente do site oficial deste protocolo VPN. Depois de instalado, poderemos configurar o cliente facilmente.

Como já dissemos, nossa recomendação é que, ao gerar as chaves no pfSense, você copie essas chaves para um bloco de notas, tanto a chave pública quanto a privada. Além disso, você também deve copiar a chave pública do servidor. Uma vez feito isso, abrimos o WireGuard e continuamos a adicionar um novo túnel VPN, temos três opções:

  • Importe toda a configuração do arquivo, se for configurar vários clientes como Windows, Linux etc, é normal ter um template com as diferentes configurações.
  • Digitalize a partir do código QR: se usarmos a ferramenta WireGuardConfig, podemos fazer isso facilmente.
  • Criar do zero: esta é a opção que escolhemos.

Ao adicionar uma nova VPN, devemos preencher todas ou quase todas as informações que ela nos pede, é o cliente VPN:

  • Nome: colocaremos uma descrição no túnel VPN, um nome descritivo caso tenhamos vários.
  • Chave privada: colocamos a chave privada que copiamos anteriormente do bloco de notas.
  • Chave pública: ao inserir a chave privada, ele a gera automaticamente
  • Endereços: o IPv4 ou o IPv6 do cliente, neste caso, já configuramos 10.9.0.2/32 anteriormente, colocamos isso.
  • Porto: deixamos em branco
  • Servidores DNS: podemos colocar um servidor DNS específico, ou diretamente que resolve o túnel.
  • MTU: deixamos em branco.

Agora clicamos em adicionar par, e mais configurações serão exibidas, essas configurações são as do servidor VPN.

  • Pares - a chave pública do servidor VPN.
  • Chave pré-compartilhada: se não configuramos, deixamos em branco, se configuramos copiamos exatamente da mesma forma.
  • Manutenção persistente: mantenha vivo, recomenda-se deixar em branco.
  • Ponto final: devemos colocar a sintaxe “IP: porta”, portanto, podemos colocar: “vpn.redeszone.net:51820”.
  • IPs permitidos: se quisermos colocar todos eles, colocamos 0.0.0.0/0. Também temos um botão para excluir IPs privados.

Feito isso, clicamos em salvar, e poderemos ver todas as configurações feitas.

Depois de adicionado e verificado que tudo está correto, procedemos à conexão e veremos que há troca de tráfego e que a VPN está funcionando perfeitamente.

Se não recebemos pacotes, isso significa que há algo errado e o túnel VPN WireGuard não foi estabelecido corretamente. Se isso acontecer com você, você terá que revisar todas as configurações feitas e revisar os logs do PfSense para ver o que está acontecendo.

Esperamos que com este tutorial você tenha sido capaz de configurar o servidor VPN WireGuard em seu magnífico pfSense 2.5.0