Tienda Wifi

Tienda Wifi
CiudadWireless es la tienda Wifi recomendada por elhacker.NET

Entradas Mensuales

Síguenos en:

Canal Oficial Telegram de elhacker.NET Grupo Facebook elhacker.NET Twitter elhacker.NET Canal Youtube elhacker.NET Comunidad Steam: Grupo elhacker.NET Mastodon

Entradas populares

PostHeaderIcon Configurar una VPN con Wireguard


El teletrabajo y las necesidades de conexión remota aumentan. Veremos como configurar una VPN con Wireguard. Explicaremos brevemente qué es una VPN. Configuraremos Wireguard sin necesidad de usar scripts como pivpn. Vamos a configurar Wireguard en Windows, Linux, macOS, Android e IOS. Ya seas particular, profesional de la ciberseguridad o una empresa, este tutorial puede ser de tu interés. Intentaremos explicar como implementar el servicio con el menor número de detalles técnicos posible. Os adelantamos que va a ser más rápido y sencillo que por ejemplo con OpenVPN. Por último añadimos conclusiones además de la solución a problemas habituales. Actualmente es una guía para configurar el Servidor y los clientes con cualquier sistema operativo.





¿Qué es una VPN?


Una red privada virtual (RPV) (en inglés, Virtual Private Network, VPN) es una tecnología de red de ordenadores que permite una extensión segura de la red de área local (LAN) sobre una red pública o no controlada como Internet. Permite que el ordenador en la red envíe y reciba datos sobre redes compartidas o públicas como si fuera una red privada, con toda la funcionalidad, seguridad y políticas de gestión de una red privada. Esto se realiza estableciendo una conexión virtual punto a punto mediante el uso de conexiones dedicadas, cifrado o la combinación de ambos métodos.

¿Para que sirve una VPN?



Ejemplos comunes son la posibilidad de conectar dos o más sucursales de una empresa utilizando como vínculo Internet, permitir a los miembros del equipo de soporte técnico la conexión desde su casa al centro de cómputo o bien que un usuario pueda acceder a su equipo doméstico desde un sitio remoto, como por ejemplo un hotel. Todo ello utilizando la infraestructura de Internet.

La conexión VPN a través de Internet es técnicamente una unión wide area network (WAN) entre los sitios, pero al usuario le parece como si fuera un enlace privado: de allí la designación virtual private network.




¿Qué es Wireguard?

Sse trata de una excelente alternativa a otros productos de VPN como OpenVPN o IPSec.

 



WireGuard es una VPN extremadamente simple pero rápida y moderna que utiliza criptografía de última generación. Su objetivo es ser más rápida, más simple, más ágil y más útil que IPsec. Tiene la intención de tener un rendimiento considerablemente mayor que OpenVPN. WireGuard está diseñado como una VPN de propósito general para ejecutarse en interfaces integradas y supercomputadoras por igual, aptas para muchas circunstancias diferentes. Lanzado inicialmente para el kernel de Linux, ahora es multiplataforma (Windows, macOS, BSD, iOS, Android) y se puede implementar ampliamente. Actualmente se encuentra en un gran desarrollo, pero ya podría considerarse la solución VPN más segura, fácil de usar y más simple de la industria.

Su configuración, si la comparamos con otros productos similares, es realmente simple, similar a lo que sería configurar SSH. La conexión se establece mediante un intercambio de llaves públicas entre el servidor y el cliente. Solo un cliente que tenga su clave pública en el archivo de configuración del servidor puede conectarse.

WireGuard se encarga de configurar las interfaces de red, como por ejemplo wg0 o wg1, que se comportan de manera similar a la interfaz más típica eth0. Esto hace posible configurar y administrar interfaces WireGuard utilizando herramientas comunes como ifconfig e ip.

Configurar WireGuard con GUI

Características

  • Todo en uno: WireGuard + Web UI
  • Fácil instalación, uso sencillo
  • Enumere, cree, elimine, habilite y deshabilite clientes
  • Muestra el código QR de un cliente
  • Descarga el archivo de configuración de un cliente
  • Estadísticas para qué clientes están conectados
  • Soporte Gravatar

Descargar WireGuard GUI

 



Configurar una VPN con Wireguard

Partimos de la base que tenéis un servidor (ya sea VPS, Raspberry Pi, etc) en el que vamos a realizar la instalación de Wireguard. Este servidor contará con una distribución basada en Debian y es el que vamos a utilizar para configurar una VPN con Wireguard.

Desde el kernel 5.4 Wireguard se encuentra en los repositorios de Linux en su versión estable. Concretamente en la versión 20.04 de Ubuntu ya disponemos de este kernel, de todas maneras la podemos instalar en su versión inestable en casi cualquier distribución basada en Debian.

Instalando Wireguard en el servidor

apt install wireguard


A continuación, habilitamos los repositorios EPEL y PowerTools:

sudo dnf install epel-release

sudo dnf install dnf-plugins-core

sudo dnf config-manager --set-enabled powertools


Para a continuación habilitar el repositorio de Wireguard:

sudo dnf copr enable jdoss/wireguard

sudo dnf install wireguard-dkms wireguard-tools 

Configurando la interfaz del servidor

Ya con Wireguard instalado procederemos a preparar la interfaz. Para ello utilizando el comando cd nos moveremos a la siguiente ruta: 

 cd /etc/wireguard/

Aquí generaremos nuestro par de claves pública y privada de esta forma:

umask 077

wg genkey | tee servidor_private.key | wg pubkey > servidor_public.key

Con el comando ll podemos comprobar que se han creado las claves pública y privada. Ahora por seguridad cambiaremos el permiso de acceso a las claves para que sólo tenga acceso el usuario root. De esta manera si se viera comprometido el servidor, no podrían suplantarnos y dirigir el tráfico hacía otro servidor distinto del que hemos creado. Lo haremos de esta manera:

chmod 600 -R ../wireguard/

Creamos nuestro archivo de configuración:

touch wg0.conf

Desde la ruta en la que estamos, vamos a copiar y a pegar desde la línea de comandos nuestra clave privada. También podríamos copiarla y pegarla a golpe de click, pero nos ahorraremos algo de tiempo de esta manera:

cat servidor_private.key >> wg0.conf

Editando el archivo wg0.conf


Procedemos a editar el archivo de configuración. Utilizaré Nano, pero cada uno puede utilizar el editor de texto que le apetezca:

nano wg0.conf

Inmediatamente se abrirá el editor y observaremos que nuestra clave privada ya está dentro (recordar que la hemos copiado y pegado anteriormente con el comando cat wg private.key >> wg0.conf). Ahora editaremos el archivo y lo dejaremos con este aspecto:

[Interface]
Address = 10.0.0.1
PrivateKey = Aquí va vuestra clave privada
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Explicación paso a paso del apartado [Interface]

  • “Address” es la dirección en la VPN, le podéis dar la que queráis siempre y cuando no esté ocupada. Esta dirección es la que crea la red VPN, os sirve la que yo tengo perfectamente. Cada cliente deberá tener una distinta es decir, si el servidor es la 10.0.0.1 el cliente será la 10.0.0.2.
  • “PrivateKey” es vuestra clave privada, recordar que estaba copiada y pegada previamente.
  • “ListenPort” es el puerto donde va a trabajar Wireguard. Importante, por defecto 51820 UDP es el puerto en el que trabaja esta VPN, pero puede ser cualquier otro. Deberéis abrirlo en vuestro módem para que el servicio pueda funcionar.
  • “PostUp y PostDown” son las reglas del firewall. Sólo las necesitáis si tenéis reglas Iptables (lo lógico es que sí). Podéis copiar y pegar éstas pero deberéis conocer la interfaz, es decir la mía es eth0 pero la vuestra puede tener otro nombre. Lo podéis consultar de manera sencilla desde vuestra terminal con el comando ifconfig.

Con nuestro archivo ya editado con nano, presionamos Ctrl O para guardarlo y Ctrl X para cerrarlo. Vamos a activar Wireguard para que inicie con el sistema:

Ctrl X para cerrarlo. Vamos a activar Wireguard para que inicie con el sistema:

systemctl enable wg-quick@wg0

Arrancamos el servicio, comprobamos que esté activo y que se ha creado la interfaz (primero una orden y luego la otra):


systemctl start wg-quick@wg0

systemctl status wg-quick@wg0


Apunte importante sobre Forwarding.

Cuidado con esto porque nos puede robar tiempo. Necesitamos tener habilitado el forwarding:


sysctl -w net.ipv4.ip_forward=1


En caso de utilizar el gestor de cortafuegos UFW habilitamos los puertos de esta manera:


ufw allow 22/tcp


ufw allow 51820/udp


ufw enable


Este apunte es importante para poder tener salida a internet. Si no fuera así una vez montado el servicio, conviene revisar la ruta /etc/sysctl.d y el archivo que se llama 99-sysctl.conf. Lo abriremos con nano y buscaremos las siguientes líneas:


# Uncomment the next line to enable packet forwarding for IPv4

#net.ipv4.ip_forward=1


Observar que en inglés pone “Elimine el comentario de la siguiente línea para habilitar el reenvío de paquetes para IPv4“. Simplemente borrarremos el # de la línea que pone net.ipv4.ip_forward=1 guardamos con Ctrl O y salimos. Ya deberíamos tener salida a internet.

Configurar cliente Wireguard en Windows


Wireguard es multiplataforma. Funciona en Linux, Windows, MacOS, Android e IOS. Os voy a enseñar como configurar todos los dispositivos como clientes. Veamos como configuramos un cliente Wireguard en Windows 10.

Desde nuestro PC Windows, nos vamos a la web de Wireguard y descargamos el programa para Windows. Lo instalamos y le damos permisos de administrador. A continuación en Add Tunnel presionamos sobre Add empty tunnel y rellenamos los datos tal y como salen en la imágenes. Las claves pública y privada ya nos las autogenera el propio programa.

  • Hacemos click e “Add Tunnel” y seguidamente “Add empty tunnel”
  • Rellenaremos los datos como en la imagen. Importante las claves pública y privada las autogenera el programa.

Configurando el servidor para añadir el cliente Windows.

Nuevamente dentro de nuestro servidor Linux y en la ruta /etc/wireguard/ vamos a modificar el archivo wg0.conf. Lo haremos así:


nano wg0.conf

Añadimos debajo de Interface el apartado Peer y queda de esta manera:

[Interface]

Address = 10.0.0.1

PrivateKey = Aquí va vuestra clave privada

ListenPort = 51820

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]

Publickey = LA CLAVE PÚBLICA QUE GENERÓ TU CLIENTE WINDOWS

AllowedIPs =10.0.0.2/32

PersistentKeepAlive = 25


Hemos añadido el peer (nuestro cliente) con su clave pública generada previamente en el cliente windows (recordar que nos la generaba automáticamente cuando añadiamos el túnel). Tenemos también la IP 10.0.0.2 que corresponde con el cliente. Por último la línea PersistentKeepAlive = 25, es para que envíe un paquete cada 25 segundos, que es lo que recomiendan desde Wireguard.

Reiniciamos el servicio y comprobamos que se ha creado el cliente:


systemctl restart wg-quick@wg0


Una vez en el cliente Windows, le daremos al botón “Activate” y ya estaría listo.


Configurar una VPN con Wireguard en IOS y Android


Wireguard puede tener como clientes smartphones y teléfonos móviles que tengan como sistema operativo IOS y Android. Os mostramos como configurarlos.

Desde la consola de comandos de nuestro servidor, una vez escalado privilegios como usuario root nos dirijimos a la ruta /etc/wireguard. Recordar que para eso utilizamos la orden cd /etc/wireguard.

Vamos a crear un directorio para los clientes IOS y Android. Nos moveremos dentro de esa carpeta:

mkdir clientes_moviles

cd clientes_moviles


Para el tutorial en nuestro caso vamos a utilizar un sólo dispositivo móvil, así que no voy a generar más carpetas. Vosotros si queréis ser ordenados podéis generar una carpeta para cada teléfono móvil que queráis utilizar como cliente.

Generamos las claves pública y privada del cliente móvil:


wg genkey | tee clientemovil_private.key | wg pubkey > clientemovil_public.key


Creamos un fichero de configuración para el cliente móvil:


touch clientemovil.conf


Enviamos la clave privada de nuestro cliente móvil al archivo de configuración y además la clave pública de nuestro servidor con los siguientes comandos:


cat clientemovil_private.key > clientemovil.conf


cat ../../servidor_public.key >> clientemovil.conf


Ahora con nano clientemovil.conf vamos a editar el archivo de configuración. Recordar que la primera línea que tenemos dentro del archivo es la clave privada del cliente movil. La segunda línea es la clave pública de nuestro servidor. Con los anteriores comandos los hemos copiado y por eso están dentro. Ahora dejamos el archivo de esta manera:


[Interface] 

Address = 10.0.0.4 

PrivateKey = LA CLAVE PRIVADA DE TU CLIENTE MÓVIL

ListenPort = 51820 

[Peer] 

Publickey = LA CLAVE PÚBLICA DE TU SERVIDOR

Endpoint = TU IP PÚBLICA:51820

AllowedIPs = 0.0.0.0/0 

PersistentKeepAlive = 25


Configurar una VPN con Wireguard, añadiendo el cliente móvil al servidor.


Ahora vamos a por el archivo de configuración del servidor y lo que vamos a hacer es copiar dentro la clave pública del cliente móvil. Tener cuidado de poner bien este comando, que podéis borrar el contenido del archivo de configuración del servidor:


cat clientemovil_publica.key >> /etc/wireguard/wg0.conf


Ahora editamos con nano el archivo de configuración del servidor:

nano /etc/wireguard/wg0.conf


Al final del archivo estará la clave pública de nuestro cliente movil, dejamos el archivo de configuración de esta manera:


[Interface]

Address = 10.0.0.1

PrivateKey = Aquí va vuestra clave privada

ListenPort = 51820

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Peer]

PublicKey = LA CLAVE PÚBLICA QUE GENERÓ TU CLIENTE WINDOWS

AllowedIPs = 10.0.0.2/32

PersistentKeepAlive = 25

[Peer]

PublicKey = LA CLAVE PÚBLICA DE TU CLIENTE LINUX

AllowedIPs = 10.0.0.3/32

PersistentKeepAlive = 25

[Peer] 

PublicKey = LA CLAVE PÚBLICA DE TU CLIENTE MÓVIL 

AllowedIPs = 10.0.0.4/32 

PersistentKeepAlive = 25


Reiniciamos Wireguard y comprobamos que el cliente móvil esté permitido:


systemctl restart wg-quick@wg0


Generando código QR con Qrencode.

Qrencode es un programa que nos permite generar un código QR desde la línea de comandos. Lo instalamos de esta forma:


apt install qrencode


Generamos nuestro código QR para escanear con nuestro dispositivo Android o IOS.


qrencode -t ansiutf8 < clientemovil.conf


Wireguard en el Smartphone

Desde App Store en IOS o Play Store en el caso de Android, descargamos la aplicación de Wireguard. En ambos sistemas operativos disponemos de un botón “+”. Pulsamos ese botón volvemos a presionar sobre Escanear desde código QR, o Crear desde código QR dependiendo del S.O.



Le damos un nombre a nuestro túnel y si todo ha ido bien, tenemos listo nuestro cliente móvil IOS o Android con su VPN Wireguard.

Fuentes:
https://enclaveinformatico.com/configurar-una-vpn-con-wireguard/

2 comentarios :

Anónimo dijo...

grande

Anónimo dijo...

muchas gracias por tus explicaciones.
Estoy intentando conectar desde un PC ubuntu a un servidor debian. y no veo la forma de hacer un cliente wireguard linux.
mi idea mas adelante es lanzar copias de seguridad desde el pc Ubuntu al Servidor exterior debian.
mucha gracias.
Francisco

Publicar un comentario

Los comentarios pueden ser revisados en cualquier momento por los moderadores.

Serán publicados aquellos que cumplan las siguientes condiciones:
- Comentario acorde al contenido del post.
- Prohibido mensajes de tipo SPAM.
- Evite incluir links innecesarios en su comentario.
- Contenidos ofensivos, amenazas e insultos no serán permitidos.

Debe saber que los comentarios de los lectores no reflejan necesariamente la opinión del STAFF.