O WireGuard é a grande VPN do futuro?

O WireGuard é a grande VPN do futuro?

Chegou a hora em que a VPN não é mais uma ferramenta exótica de administradores de sistema barbudos. Os usuários têm tarefas diferentes, mas o fato é que todos precisam de uma VPN.

O problema com as soluções VPN atuais é que elas são difíceis de configurar corretamente, caras para manter e estão cheias de código legado de qualidade questionável.

Vários anos atrás, o especialista canadense em segurança da informação Jason A. Donenfeld decidiu que já estava farto e começou a trabalhar em WireGuard. O WireGuard agora está sendo preparado para inclusão no kernel Linux e até recebeu elogios de Linus Torvalds e Senado dos EUA.

Vantagens reivindicadas do WireGuard sobre outras soluções VPN:

  • Fácil de usar.
  • Usa criptografia moderna: estrutura de protocolo de ruído, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Código compacto e legível, mais fácil de investigar vulnerabilidades.
  • Alto desempenho.
  • Claro e elaborado especificação.

Uma bala de prata foi encontrada? É hora de enterrar o OpenVPN e o IPSec? Eu decidi lidar com isso e, ao mesmo tempo, fiz script para instalar automaticamente um servidor VPN pessoal.

Princípios de trabalho

Os princípios operacionais podem ser descritos mais ou menos assim:

  • Uma interface WireGuard é criada e uma chave privada e um endereço IP são atribuídos a ela. As configurações de outros peers são carregadas: suas chaves públicas, endereços IP, etc.
  • Todos os pacotes IP que chegam à interface WireGuard são encapsulados em UDP e entregue com segurança outros pares.
  • Os clientes especificam o endereço IP público do servidor nas configurações. O servidor reconhece automaticamente os endereços externos dos clientes quando dados autenticados corretamente são recebidos deles.
  • O servidor pode alterar o endereço IP público sem interromper seu trabalho. Ao mesmo tempo, enviará um alerta aos clientes conectados e eles atualizarão suas configurações instantaneamente.
  • O conceito de roteamento é usado Roteamento de criptomoeda. WireGuard aceita e envia pacotes com base na chave pública do peer. Quando o servidor descriptografa um pacote autenticado corretamente, seu campo src é verificado. Se corresponder à configuração allowed-ips peer autenticado, o pacote é recebido pela interface WireGuard. Ao enviar um pacote de saída, ocorre o procedimento correspondente: o campo dst do pacote é tomado e, com base nele, o peer correspondente é selecionado, o pacote é assinado com sua chave, criptografado com a chave do peer e enviado ao endpoint remoto .

Toda a lógica central do WireGuard ocupa menos de 4 mil linhas de código, enquanto OpenVPN e IPSec possuem centenas de milhares de linhas. Para suportar algoritmos criptográficos modernos, propõe-se incluir uma nova API criptográfica no kernel Linux zinco. Atualmente há uma discussão em andamento sobre se isso é uma boa ideia.

Desempenho

A vantagem máxima de desempenho (em comparação com OpenVPN e IPSec) será perceptível em sistemas Linux, uma vez que o WireGuard é implementado como um módulo de kernel. Além disso, macOS, Android, iOS, FreeBSD e OpenBSD são suportados, mas neles o WireGuard é executado no espaço do usuário com todas as consequências de desempenho resultantes. Espera-se que o suporte do Windows seja adicionado em um futuro próximo.

Resultados de referência com Site Oficial:

O WireGuard é a grande VPN do futuro?

Minha experiência de uso

Não sou um especialista em VPN. Certa vez, configurei o OpenVPN manualmente e foi muito tedioso, e nem tentei o IPSec. Há muitas decisões a tomar, é muito fácil dar um tiro no próprio pé. Por isso, sempre usei scripts prontos para configurar o servidor.

Então, o WireGuard, do meu ponto de vista, geralmente é ideal para o usuário. Todas as decisões de baixo nível são tomadas na especificação, portanto o processo de preparação de uma infraestrutura VPN típica leva apenas alguns minutos. É quase impossível trapacear na configuração.

Processo de instalação descrito em detalhes no site oficial, gostaria de destacar separadamente o excelente Suporte OpenWRT.

As chaves de criptografia são geradas pelo utilitário wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Em seguida, você precisa criar uma configuração de servidor /etc/wireguard/wg0.conf com o seguinte conteúdo:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

e levante o túnel com um script wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

Em sistemas com systemd você pode usar isso sudo systemctl start [email protected].

Na máquina cliente, crie uma configuração /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Внешний IP сервера
PersistentKeepalive = 25 

E levante o túnel da mesma maneira:

sudo wg-quick up /etc/wireguard/wg0.conf

Resta configurar o NAT no servidor para que os clientes possam acessar a Internet e pronto!

Essa facilidade de uso e compactação da base de código foram alcançadas eliminando a funcionalidade de distribuição de chaves. Não existe um sistema de certificados complexo e todo esse horror corporativo; chaves de criptografia curtas são distribuídas de forma semelhante às chaves SSH. Mas isto representa um problema: o WireGuard não será tão fácil de implementar em algumas redes existentes.

Entre as desvantagens, vale destacar que o WireGuard não funcionará via proxy HTTP, pois apenas o protocolo UDP está disponível como transporte. Surge a pergunta: será possível ofuscar o protocolo? É claro que esta não é tarefa direta de uma VPN, mas para o OpenVPN, por exemplo, existem maneiras de se disfarçar como HTTPS, o que ajuda os residentes de países totalitários a usar plenamente a Internet.

Descobertas

Resumindo, este é um projeto muito interessante e promissor, você já pode utilizá-lo em servidores pessoais. Qual é o lucro? Alto desempenho em sistemas Linux, facilidade de configuração e suporte, base de código compacta e legível. Porém, ainda é cedo para se apressar na transferência de uma infraestrutura complexa para o WireGuard, vale a pena aguardar sua inclusão no kernel Linux.

Para economizar meu (e seu) tempo, desenvolvi Instalador automático WireGuard. Com sua ajuda, você pode configurar uma VPN pessoal para você e seus amigos, mesmo sem entender nada sobre isso.

Fonte: habr.com

Adicionar um comentário