WireGuard VPN es un nuevo protocolo robusto y muy rápido para crear redes privadas virtuales, en RedesZone hemos comprobado cómo es capaz de duplicar e incluso triplicar en velocidad a OpenVPN o a IPsec. Este nuevo protocolo de VPN es ideal para configuraciones de acceso remoto con clientes móviles, ya sean smartphones, tablets u ordenadores portátiles, ya que consume muy pocos recursos y la conexión es realmente rápida. El sistema operativo pfSense en su versión 2.5.0 ha incorporado de manera oficial esta nueva VPN, junto a IPsec, L2TP y también OpenVPN. Hoy os vamos a enseñar cómo configurar desde cero la VPN de WireGuard en pfSense 2.5.0 para conectaros remotamente.
Actualmente pfSense cuenta con alguna versión más reciente, sin embargo, el tutorial será muy similar, y el que os enseñaremos hoy sigue funcionando a las mil maravillas, por lo que no necesitarás otro, al menos si buscas lo que hoy queremos mostrar. Hay personas que reportan errores en versiones más recientes, por lo que posiblemente no sean tan estables todavía.
Características de WireGuard VPN
WireGuard VPN es un software muy liviano que nos permitirá configurar de forma rápida y fácil un túnel VPN, por defecto, hace uso de la criptografía más moderna, sin necesidad de elegir diferentes algoritmos de cifrado asimétrico, asimétrico o de hash, de manera predeterminada tenemos una suite segura por defecto, a diferencia de otros protocolos VPN. El objetivo de WireGuard es convertirse en la mejor VPN, tanto para usuarios domésticos como para empresas, y lo está consiguiendo porque ya se ha integrado en el Kernel de Linux para proporcionarnos el mejor rendimiento posible.
En cuanto a la criptografía utilizada, tenemos ChaCha20 para el cifrado simétrico, autenticado con Poly1305, por lo que tenemos AEAD. También hace uso de Curve25519 para ECDH, BLAKE2 para el hashing, SipHash24 para las claves hashtable, y HKDF para la derivación de claves. Tal y como habéis visto, tenemos los algoritmos criptográficos más modernos usados por defecto, y no lo podremos cambiar por otros de momento, deben ser estos sí o sí.
Con esta nueva VPN no necesitaremos administrar las conexiones ni hacer difíciles configuraciones, solamente funciona en modo tunneling porque es una VPN L3, y utiliza el protocolo UDP como capa de transporte y no permite seleccionar TCP, lo que sí podremos hacer es modificar el puerto de escucha por el que nosotros queramos. Por supuesto, el servidor WireGuard puede estar detrás de la NAT sin problemas, solo habría que hacer una redirección de puertos. Otras características interesantes son que permite roaming entre redes de forma rápida y fácil, para estar conectados siempre desde cualquier red WiFi o 4G/LTE sin corte en la conexión. Además, también podremos habilitar el Kill-Switch para impedir filtraciones de datos si la VPN se cae.
Por último, esta nueva VPN es compatible con múltiples sistemas operativos como Windows, Linux, MacOS, FreeBSD, Android y también iOS. Ahora el equipo de desarrollo de pfSense 2.5.0 han incorporado WireGuard en su sistema de forma predeterminada, aunque anteriormente también podíamos instalarla, pero no teníamos soporte oficial.
Por qué elegir Wireward
El objetivo principal de Wireward, es hacer que los usuarios puedan navegar con mayor privacidad cuando se encuentran utilizando una conexión VPN. Como hemos visto, esta nos ofrece mucha más privacidad debido a los protocolos que utiliza. Se encarga de encriptar la conexión de punto a punto, por lo cual bloquea todo el posible tráfico que circula alrededor de nuestros datos. Por lo cual, sube el nivel de seguridad, y anonimato en internet.
Por otro lado, tenemos la ventaja de la velocidad. Wireward destaca en este aspecto, pues cuenta con un buen rendimiento en cuanto a la misma. Resulta un sistema rápido, y con un consumo de energía y recursos bastante reducido, lo cual se consigue gracias a la rapidez con la que cuenta en las negociaciones de conexión y transferencia. Esto se consigue gracias a que utiliza menos código, por lo cual se encuentra bastante optimizado. Esto mismo es lo que hace que tenga menos superficie de ataque, pero a la vez hace que sea más concreto el fijar un objetivo. Lo cual también es beneficioso para los administradores, pues debido al reducido código, es más sencillo detectar vulnerabilidades y problemas que puedan surgir en el sistema.
Todo esto hace que Wireward sea utilizado por algunos de los servicios de VPN más conocidos y seguros, entre ellos NordVPN, CyberGhost o Surfshark. Estas son de las que más usuarios tienen en todo el mundo, y se benefician directamente de las velocidades de conexión, su estabilidad y todas sus posibilidades en cuanto a todos los servidores que tienen disponibles alrededor del globo. En todo caso, Wireward no está presente en absolutamente todos los servicios, pero es algo que está creciendo de forma constante, debido a la popularidad que se está ganando gracias a todas estas ventajas que hemos indicado.
Ventajas
Una vez se conocen los principales puntos por los que hay que elegir esta herramienta. Está claro que una de sus ventajas es que está integrado en los servicios de VPN de QNAP. Por lo que la configuración del servicio para los usuarios resulta más sencilla. Además de esto, hay que tener en cuenta que funciona muy rápido en cualquier equipo que sea compatible, y lo bueno es que en este caso sí que es compatible con cualquier sistema operativo.
Por otra parte, tiene un bajo consumo de recuros, así como una buena velocidad de conexión y de transferencia. Y a pesar de otras VPN pueden llegar a limitar más el ancho de banda, esta opción lo cierto es que suele ofrecer más del 80 % del ancho de banda de la conexión a Internet a la que nos conectamos.
Desventajas
Entre los puntos en contra se pueden ver varios aspectos que te hacen tener una idea más clara de esta herramienta. Por ejemplo, uno de los primeros inconvenientes es el hecho de que WireGuard no llega a admitir TCP, usa UDP. Por otra parte, no cuenta con funciones más avanzadas. Y, por último, pero no menos importante, aunque esté diseñado para que sea el sustituto a IPsec y sea más rápido, lo cierto es que no hay una gran diferencia en este aspecto.
¿Por qué usar pfSense?
Lo primero que podemos destacar de pfSense, es su gran adaptabilidad. Este se puede utilizar en hardware de todo tipo, desde relativamente modesto al más puntero. Por otro lado, tiene una gran capacidad de escalado, para poder manejar todo el tráfico de redes que son más grandes o con hardware más potente. En todo caso, su rendimiento puede tener alguna variación de un hardware a otro. Pero por lo general no vamos a tener problema con tráficos equivalentes.
Y es que, para ello, cuenta con una gran variedad de características añadidas. Son muy conocidas, como las VPN, el balanceo de carga, captiva portal, entre otras. Estas características, se utilizan de una forma muy intensa pueden afectar al rendimiento del sistema, pero en general pfSense no va a tener problemas gracias a la gestión que realiza gracias a sus funciones de eficiencia. Esto hace que resulte muy estable, y gracias a ello se puede ejecutar durante largos periodos de tiempo. Sin necesidad de realizar un reinicio o intervenciones. Obviamente, debe estar configurado de la forma correcta.
El rendimiento es uno de sus puntos fuertes, como puedes ver. Puede manejar de una forma muy sencilla la red Gigabit Ethernet, mejorando considerablemente según el hardware disponible es más potente. En cambio, hay algunas funciones como puede ser el filtrado de paquetes profundo, la inspección de los mismos, o las VPN, que si afectan un poco al rendimiento. Pero de nuevo, todo depende del hardware que esté utilizando.
Obviamente también tenemos que mencionar la seguridad. Y es que pfSense se mantiene totalmente actualizado de forma regular. Lo cual es muy importante para todos los sistemas que lo utilizan. A pesar de que las actualizaciones pueden variar en su rendimiento, generalmente no suelen degradar la eficiencia del sistema ya que está muy bien optimizado.
Ventajas
Dentro de los puntos que juegan a favor de la herramienta PfSense está el hecho de que puede controlar sin problemas el enrutamientos, las conexiones VPN, así como otros puntos como es el caso de las funciones de seguridad. No cabe duda de que su versatilidad es una de las principales características por las que destaca esta alternativa en particular. Y no hay que dejar de lado que cuenta con una interfaz gráfica que es tanto cómoda como amistosa para los usuarios, por lo que es otro aspecto a favor.
Configuración del servidor VPN WireGuard
Antes de la salida de pfSense 2.5.0, si queríamos tener WireGuard en este completo firewall, teníamos que instalarlo manualmente en el sistema bajándonos unos paquetes compatibles con FreeBSD. Gracias al equipo de desarrollo de pfSense, a partir de la versión 2.5.0 ya está integrada en la interfaz gráfica de usuario de manera predeterminada.
Lo primero que debemos hacer es irnos a la sección de «VPN / WireGuard» para entrar en la configuración de este nuevo protocolo de VPN. En cuanto entremos en el menú, pinchamos en «Add Tunnel».
En la configuración del túnel, deberemos habilitar el túnel, darle una descripción y ponerlo lo siguiente:
- Address: dirección IPv4 o IPv6 del servidor VPN para la interfaz del túnel.
- Puerto: por defecto es el 51820 UDP, pero podremos cambiar a cualquier puerto UDP.
pfSense incorpora un generador de claves pública/privada para el servidor VPN con WireGuard, nuestra recomendación es que generéis unas claves para el cliente VPN, y que pinchemos nuevamente en «Generate» para que las segundas que se generen sean las del servidor VPN. Por ejemplo, las siguientes claves son las que usaremos posteriormente en el cliente VPN. Os podéis ayudar de un bloc de notas o Notepad++ para apuntar la configuración.
Para facilitarte la configuración de WireGuard con las claves públicas y privadas, también puedes hacer uso de la herramienta wireguardconfig que nos permitirá generar automáticamente tanto el servidor como los clientes, para posteriormente adaptarlo a pfSense.
Y las segundas generadas son las del propio servidor VPN con WireGuard.
Una vez que ya tenemos las claves, debemos pinchar en «Save» y ya habremos creado el servidor VPN con la configuración anterior:
Una vez que ya lo tengamos, ahora tenemos que dar de alta los «peers», es decir, los clientes VPN. Volvemos a acceder a la configuración del servidor WireGuard, y pinchamos en «Add Peer» que está en color verde. Aquí deberemos rellenar algunas configuraciones, pero no es necesario rellenar todas ellas.
Ahora os vamos a explicar para qué sirven cada una de las opciones:
- Descripción: ponemos una descripción a este cliente, por ejemplo, nuestro nombre.
- Endpoint: ponemos la dirección IP pública del cliente VPN.
- Endpoint port: ponemos el puerto del cliente VPN.
Si vas a configurar un cliente VPN, donde la IP pública del cliente y el puerto cambie, entonces deberemos dejar las opciones de «Endpoint» y «Endpoint Port» vacías. Estas opciones se deben rellenar si vamos a configurar una VPN Site-to-Site, pero en acceso remoto (Roadwarrior) no es necesario rellenarlo.
- Keep alive: un valor en segundos, cada cierto tiempo verifica que el túnel sigue levantado, por defecto está deshabilitado.
Ahora llegan las configuraciones más importantes:
- Public Key: deberemos poner la clave pública del cliente VPN, anteriormente habéis visto cómo se genera para el cliente, pues aquí pondremos la public key.
- Alloweds IPs: si queremos que haya redirección de Internet y acceso a todas las redes, ponemos 0.0.0.0/0. Lo más normal es que los clientes VPN de acceso remoto salgan a Internet por la propia VPN, pero aquí podremos configurar el acceso específico a diferentes redes.
- Peer WireGuard Address: la dirección IP que tenga el peer dado de alta.
- Pre-shared key: es opcional, se puede añadir una clave precompartida para mejorar aún más la seguridad.
En nuestro caso, no hemos puesto pre-shared key, pero si la pones, tanto en el pfSense como en el cliente VPN debe ser exactamente la misma, y deberemos generar dicha clave con el botón azul que viene en el pfSense. No podemos poner de clave precompartida «12345678» por ejemplo, debemos usar el generador de pfSense.
Una vez que ya hemos configurado correctamente el servidor VPN de WireGuard en pfSense 2.5.0, vamos a configurar la parte de firewall, porque por defecto se encuentra siempre en modo bloquear todo.
Configuración del firewall en WAN y WireGuard
Antes de conectar el primer cliente VPN, debemos irnos a «Firewall / Rules» y agregar una nueva regla en la interfaz WAN de Internet. Añadimos una nueva regla con la siguiente información:
- Action: Pass
- Interfaz: WAN
- Address Family: IPv4, IPv6 o ambas
- Protocol: UDP
- Source: any (si vas a montar un Site-to-Site con WireGuard, aquí podrías poner la IP pública de origen para mejorar la seguridad).
- Destination: WAN Address en el puerto 51820
Una vez configurado, pinchamos en «Save» para guardar esta regla, y aplicamos cambios, como siempre que añadimos una nueva regla al firewall.
Una vez hecho esto, debemos irnos ahora a la interfaz «WireGuard» que se ha creado automáticamente en la sección de «Firewall / Rules«, aquí tendremos que permitir todas las comunicaciones una vez que se haya conectado, o solamente lo que nosotros queramos, tal y como ocurre con OpenVPN o con IPsec.
En la configuración siguiente, podéis ver que tenemos una regla con la siguiente configuración:
- Action: Pass
- Interfaz: WireGuard
- Address Family: IPv4, IPv6 o ambas
- Protocol: Any
- Source: any
- Destination: any
Pinchamos en «Save» y en aplicar cambios, como suele ser habitual. En estos instantes ya estamos preparados para configurar los clientes VPN con WireGuard.
Configuración de los clientes VPN WireGuard y conexión a pfSense
La configuración de los clientes VPN con WireGuard es igual en todas las plataformas, necesitaremos exactamente la misma información. En nuestro caso, hemos utilizado un smartphone con Android, podéis descargar la app oficial de WireGuard para Android y iOS a continuación:
Pero también lo tenemos para otros sistemas operativos como Windows, directamente desde la web oficial de este protocolo de VPN. Una vez que lo hayamos instalado, vamos a poder configurar el cliente fácilmente.
Tal y como os hemos dicho anteriormente, nuestra recomendación es que, al generar las claves en el pfSense, copiéis estas claves en un bloc de notas, tanto la clave pública como la clave privada. Además, también tenéis que copiar la clave pública del servidor. Una vez hecho esto, abrimos WireGuard y procedemos a añadir un nuevo túnel VPN, tenemos tres opciones:
- Importar desde archivo toda la configuración, si vais a configurar varios clientes como Windows, Linux etc, lo normal es tener una plantilla con las diferentes configuraciones.
- Escanear desde código QR: si usamos la herramienta WireGuardConfig podremos hacerlo fácilmente.
- Crear desde cero: esta es la opción que hemos elegido.
Al añadir una nueva VPN, deberemos rellenar todos o casi todos los datos que nos pregunta, es el cliente VPN:
- Nombre: pondremos una descripción al túnel VPN, un nombre descriptivo por si tenemos varios, sin embargo, no influirá en nada, podemos poner el que consideremos.
- Clave privada: ponemos la clave privada que hemos copiado anteriormente del bloc de notas. Importante que esté bien.
- Clave pública: al introducir la clave privada, la genera automáticamente, por lo que no tendremos que preocuparnos de la que ponga.
- Direcciones: la IPv4 o IPv6 del cliente, en este caso, hemos configurado anteriormente 10.9.0.2/32, así que ponemos esta.
- Puerto: lo dejamos en blanco.
- Servidores DNS: podemos poner un servidor DNS en concreto, o directamente que resuelva el túnel.
- MTU: lo dejamos en blanco.
Ahora pinchamos en añadir par, y se nos desplegará más configuraciones, estas configuraciones son las del servidor VPN.
- Pares: la clave pública del servidor VPN.
- Clave precompartida: si no hemos configurado, lo dejamos en blanco, si hemos configurado la copiamos exactamente igual.
- Mantenimiento persistente: el keep alive, recomendable dejarlo en blanco.
- Punto final: debemos poner sintaxis «IP:puerto», por tanto, podemos poner: «vpn.redeszone.net:51820».
- IPs permitidas: si queremos poner todas, ponemos 0.0.0.0/0. También tenemos un botón para excluir las IPs privadas.
Una vez que lo hayamos hecho, pinchamos en guardar, y podremos ver todas las configuraciones realizadas, y comprobar si alguna es incorrecta.
Una vez añadido y verificado que todo está correcto, procedemos a conectarnos y veremos que hay intercambio de tráfico y que la VPN está funcionando perfectamente. Si lo hemos puesto bien, todo debería ir.
Si no tenemos paquetes recibidos, eso significa que hay algo mal y que el túnel de la VPN WireGuard no se ha establecido correctamente. Si te ocurre esto, deberás repasar toda la configuración realizada, y revisar los logs del pfSense para ver qué está ocurriendo. Posiblemente hayas copiado un espacio extra en la contraseña, o un error similar sin importancia. Solo tendremos que fijarnos bien de nuevo.
Configuración de los clientes VPN en Windows
Para añadir más clientes VPN, basta con irnos al servidor VPN de WireGuard y pinchar en «Add peer». Cada cliente VPN que queramos conectar, es necesario configurar un nuevo «Peer» con una configuración nueva de claves público/privada y su correspondiente dirección IP.
Tal y como hemos hecho antes, desde el cliente VPN WireGuard para Windows podemos generar unas claves nuevas, o usando la utilidad que os hemos puesto anteriormente. En el PfSense lo único que tenemos que hacer es poner la descripción, la clave pública que hemos generado en el cliente, el «AllowedIPs» con la dirección IP del cliente, la dirección IP del peer y la Preshared-Key de forma opcional.
En las últimas versiones de Windows 10, parece que hay algún tipo de problema con el cliente WireGuard oficial. Hemos probado a realizar la misma configuración que en el cliente para Android, y no nos establece el túnel si ponemos «AllowedIPs = 0.0.0.0/0» para redigirir todo el tráfico a través del túnel, únicamente si ponemos «AllowedIPs = 10.9.0.0/24» nos establece la conexión pero únicamente dentro del túnel, no tenemos conectividad a Internet vía WireGuard.
La solución está en descargar el programa TunSafe que está basado en WireGuard, lo instalamos e importamos el fichero de configuración de WireGuard que tenemos en el cliente oficial, o lo editamos en un fichero de texto con la misma sintaxis de siempre:
Una vez que tengamos el archivo .conf, lo importamos en el programa y ya podremos conectarnos a nuestro servidor VPN con WireGuard sin ningún tipo de problema, con redirección de tráfico total para navegar seguros, ahora sí podremos configurar correctamente «AllowedIPs = 0.0.0.0/0» y nos establecerá el túnel correctamente.
TunSafe incorpora más opciones de configuración que el cliente oficial, como la política de kill-switch basada en rutas y en firewall o en ambos, e incluso si queremos tenerlo como servicio en el sistema operativo de Windows también tendremos diferentes tipos de configuración, para elegir la que más se adapte a nuestras necesidades.
¿Configurar WireGuard para MacOS?
En caso de que tu sistema operativo no sea Windows, sino MacOS, ya sea porque tienes un MacBook, o simplemente porque lo estés emulando en un ordenador distinto a Apple, que sepas que tendrás opciones de poder realizar el mismo tutorial que hemos visto hoy, ya que el programa se encuentra disponible. Además, podrás bajarlo directamente de la tienda oficial, la App Store.
Este programa cuenta con 4,5 sobre 5 estrellas en MacOS, y su diseño e interfaz, pese a ser algo diferente al de Windows, cuenta con unas opciones y menús muy similares. Algunos hablan incluso de la mejor VPN para este sistema operativo. Su tamaño no llega a 4 MB, por lo que no podrás tener excusa alegando poco espacio.
Es probable que con versiones más recientes pueda haber algún error, sin embargo, si nos vamos a las mostradas hoy, independientemente de tu Mac, podrás hacerlo funcionar correctamente.