¿Es WireGuard la gran VPN del futuro?

¿Es WireGuard la gran VPN del futuro?

Ha llegado el momento en que la VPN ya no es una herramienta exótica de administradores de sistemas barbudos. Los usuarios tienen diferentes tareas, pero el hecho es que todos necesitan una VPN.

El problema con las soluciones VPN actuales es que son difíciles de configurar correctamente, costosas de mantener y están llenas de código heredado de calidad cuestionable.

Hace varios años, el especialista canadiense en seguridad de la información Jason A. Donenfeld decidió que ya estaba harto y comenzó a trabajar en WireGuard. WireGuard ahora se está preparando para su inclusión en el kernel de Linux e incluso ha recibido elogios de Linus Torvalds y Senado de Estados Unidos.

Ventajas supuestas de WireGuard sobre otras soluciones VPN:

  • Fácil de usar.
  • Utiliza criptografía moderna: marco de protocolo de ruido, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, etc.
  • Código compacto y legible, más fácil de investigar en busca de vulnerabilidades.
  • Alto rendimiento
  • Claro y elaborado especificación.

¿Se ha encontrado una bala de plata? ¿Es hora de enterrar OpenVPN e IPSec? Decidí lidiar con esto y al mismo tiempo lo hice. script para instalar automáticamente un servidor VPN personal.

Principios de trabajo

Los principios operativos se pueden describir así:

  • Se crea una interfaz WireGuard y se le asigna una clave privada y una dirección IP. Se cargan las configuraciones de otros pares: sus claves públicas, direcciones IP, etc.
  • Todos los paquetes IP que llegan a la interfaz WireGuard se encapsulan en UDP y entregado de forma segura otros compañeros.
  • Los clientes especifican la dirección IP pública del servidor en la configuración. El servidor reconoce automáticamente las direcciones externas de los clientes cuando reciben de ellos datos correctamente autenticados.
  • El servidor puede cambiar la dirección IP pública sin interrumpir su trabajo. Al mismo tiempo enviará una alerta a los clientes conectados y actualizarán su configuración sobre la marcha.
  • Se utiliza el concepto de enrutamiento. Enrutamiento de clave criptográfica. WireGuard acepta y envía paquetes según la clave pública del par. Cuando el servidor descifra un paquete autenticado correctamente, se verifica su campo src. Si coincide con la configuración allowed-ips par autenticado, el paquete es recibido por la interfaz WireGuard. Al enviar un paquete saliente se produce el procedimiento correspondiente: se toma el campo dst del paquete y, en base a él, se selecciona el par correspondiente, el paquete se firma con su clave, se cifra con la clave del par y se envía al punto final remoto .

Toda la lógica central de WireGuard ocupa menos de 4 mil líneas de código, mientras que OpenVPN e IPSec tienen cientos de miles de líneas. Para admitir algoritmos criptográficos modernos, se propone incluir una nueva API criptográfica en el kernel de Linux. Zinc. Actualmente hay una discusión sobre si esto es una buena idea.

Rendimiento

La máxima ventaja de rendimiento (en comparación con OpenVPN e IPSec) se notará en los sistemas Linux, ya que allí se implementa WireGuard como módulo del kernel. Además, se admiten macOS, Android, iOS, FreeBSD y OpenBSD, pero en ellos WireGuard se ejecuta en el espacio de usuario con todas las consecuencias de rendimiento resultantes. Se espera que se agregue soporte para Windows en un futuro próximo.

Resultados de referencia con El sitio oficial:

¿Es WireGuard la gran VPN del futuro?

Mi experiencia de uso

No soy un experto en VPN. Una vez configuré OpenVPN manualmente y fue muy tedioso, y ni siquiera probé IPSec. Hay demasiadas decisiones que tomar, es muy fácil pegarse un tiro en el pie. Por lo tanto, siempre utilicé scripts ya preparados para configurar el servidor.

Entonces, WireGuard, desde mi punto de vista, es generalmente ideal para el usuario. Todas las decisiones de bajo nivel se toman en la especificación, por lo que el proceso de preparación de una infraestructura VPN típica toma sólo unos minutos. Es casi imposible hacer trampa en la configuración.

Proceso de instalación descrito en detalle en el sitio web oficial, me gustaría destacar por separado el excelente Soporte abiertoWRT.

Las claves de cifrado son generadas por la utilidad. wg:

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

A continuación, debe crear una configuración de servidor. /etc/wireguard/wg0.conf con el siguiente contenido:

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

y levantar el túnel con un guión wg-quick:

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

En sistemas con systemd puedes usar esto en su lugar sudo systemctl start [email protected].

En la máquina cliente, cree una configuración /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 

Y levanta el túnel de la misma forma:

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

Ya sólo queda configurar NAT en el servidor para que los clientes puedan acceder a Internet, ¡y listo!

Esta facilidad de uso y compacidad del código base se logró eliminando la funcionalidad de distribución de claves. No existe un sistema de certificados complejo ni todo este horror corporativo; las claves de cifrado cortas se distribuyen de forma muy parecida a las claves SSH. Pero esto plantea un problema: WireGuard no será tan fácil de implementar en algunas redes existentes.

Entre las desventajas, cabe destacar que WireGuard no funcionará a través de un proxy HTTP, ya que como transporte sólo está disponible el protocolo UDP. Surge la pregunta: ¿será posible ofuscar el protocolo? Por supuesto, esta no es la tarea directa de una VPN, pero para OpenVPN, por ejemplo, hay formas de disfrazarse de HTTPS, lo que ayuda a los residentes de países totalitarios a utilizar plenamente Internet.

Hallazgos

En resumen, este es un proyecto muy interesante y prometedor, ya puedes usarlo en servidores personales. ¿Cuál es la ganancia? Alto rendimiento en sistemas Linux, facilidad de configuración y soporte, base de código compacta y legible. Sin embargo, es demasiado pronto para apresurarse a transferir una infraestructura compleja a WireGuard, vale la pena esperar a que se incluya en el kernel de Linux.

Para ahorrar mi (y el suyo) tiempo, desarrollé Instalador automático WireGuard. Con su ayuda, puedes configurar una VPN personal para ti y tus amigos sin siquiera entender nada al respecto.

Fuente: habr.com

Añadir un comentario