Instalar y configurar WireGuard VPN

WireGuard VPN image
El teletrabajo es el método que actualmente está de moda, y junto a ello se han incrementado los ataques cibernéticos de forma considerable para la obtención de información confidencial.

En este artículo vamos a ver cómo securizar aquellas conexiones que realizamos a la red de nuestra empresa para que nadie pueda interceptar nuestra comunicación. Además, vamos a crear un servidor VPN (WireGuard) y realizaremos un pequeño laboratorio en el que simularemos una red doméstica y la de nuestra empresa (donde se ubicará nuestro servidor VPN).

¿Qué es una VPN?

Tal y como sus siglas dicen Virtual Private Network (red privada virtual) es una tecnología que proporciona un túnel IP encapsulado cifrado a través de Internet. Esto permite conectar diferentes delegaciones de una empresa, simulando una red local de una manera transparente y económica. También es utilizada como acceso remoto seguro a los diferentes recursos de la red de la empresa desde un lugar (aeropuerto o red publica) que no es accesible.

Ventajas de la utilización de una VPN

Las principales ventajas de una VPN son la de permitir el acceso remoto a trabajadores, clientes, socios o consultores a los recursos de la red interna de forma segura y puede ser instalado con hardware dedicado (Forticlinet) o mediante software específico (OpenVPN, WireGuard) incluido en sistemas operativos Linux o Windows.

WireGuard

WireGuard es un servidor VPN open source de software. Su instalación y configuración es muy sencilla y apenas necesita recursos para poder implementarla.

Configuración servidor VPN

Lo primero que vamos a hacer es actualizar las listas de los repositorios.

sudo apt update
sudo apt upgrade

Una vez hayamos ejecutado los comandos anteriores instalaremos el servidor WireGuard.

sudo apt install wireguard -y

Cuando acabe la instalación, nos dirigiremos a la ruta de WireGuard.

cd /etc/wireguard/

Una vez nos hayamos ubicado en dicho directorio, crearemos la clave privada y pública del servidor.

wg genkey | tee serverprivatekey | wg pubkey > serverpublickey

Para verificar que las claves han sido generadas correctamente realizaremos un cat. El comando cat nos permite leer ficheros en linux. 

 cat serverprivatekey
 cat serverpublickey

Anotaremos dichas claves ya que las deberemos de utilizar más tarde.

Ya tenemos las claves privadas generadas, por lo que ahora nos queda generar un par de claves para el lado del cliente. Para ello utilizaremos el mismo comando que hemos utilizado antes, pero está vez le pondremos el nombre del cliente para identificarlo en un futuro. Deberemos de crear tantas claves como usuarios necesitemos.

wg genkey | tee clientprivatekey | wg pubkey > clientpublickey

A continuación, crearemos el archivo de configuración del servidor VPN que deberá de llamarse wg0.conf. En el añadiremos las siguiente líneas:

[Interface]
PrivateKey = La clave privada del servidor generada antes.
Address = La subred del servidor VPN.
ListenPort = El puerto de escucha del servidor (UDP).
PostUp = Introduciremos las reglas de iptables necesarias para permitir el acceso VPN.
iptables -A FORWARD -i %i -j ACCEPT; 
iptables -A FORWARD -o %i -j ACCEPT; 
iptables -t nat -A POSTROUTING -o ens33 -j MASQUERADE;

PostDown = Introduciremos las reglas de iptables necesarias para permitir el acceso VPN.
iptables -D FORWARD -i %i -j ACCEPT; 
iptables -D FORWARD -o %i -j ACCEPT;
iptables -t nat -D POSTROUTING -o ens33 -j MASQUERADE;

[Peer]
PublicKey = La clave pública del cliente generada antes. 
AllowdIps = La dirección IP del cliente, aquí podemos restringir una dirección en concreto o admitir cualquier conexión con 0.0.0.0/0.

Añadiremos campos Peer por cliente que tengamos utilizando la misma estructura.

  Emular juegos en una Raspberry con RetroPie

Para aplicar la configuración ejecutaremos el siguiente comando.

wg-quick up wg0

Para que el servidor WireGuard se inicie automáticamente cada vez que se reinicie el servidor ejecutaremos el siguiente comando.

sudo systemctl enable wg-quick@wg0

Para acabar con la configuración en el lado del servidor, vamos a habilitar el reenvío de peticiones a la red en la que estamos, para ello accederemos al fichero /etc/sysctl.conf y descomentamos la siguiente línea.

net.ipv4.ip_forward=1

Para que se apliquen todos los cambios tendremos que reiniciar el servidor.

Configuración en el lado del cliente

Una vez terminada la configuración en el lado del servidor, en nuestro caso vamos a utilizar el cliente en el sistema operativo Ubutun Desktop ubicado en una red distinta a la del servidor VPN. Nos descargamos el cliente WireGuard utilizando el siguiente comando:

sudo apt install wireguard

A continuación nos dirigiremos al directorio /etc/wireguard y crearemos el fichero de configuración wg0.conf tal y como hemos realizado en la máquina del servidor. Las líneas que vamos a añadir en este documento van a ser diferentes a las de antes, ya que se trata de realizar una configuración para realizar la conexión. Los campos a rellenar serán los siguientes:

[Interface]
Address = Dirección IP del cliente / máscara.
PrivateKey = La clave privada del cliente creada antes en el servidor. (Dicha clave privada la debemos de tener en nuestro cliente).

[Peer]
PublicKey = Clave pública del servidor DNS.
AllowedIPs = Direcciones IPs al que el cliente tendrá acceso junto a su máscara, si introducimos más de una las separaremos con “,”.
Endpoint = Dirección IP pública:puerto a la escucha (si tenemos un dominio podremos utilizarlo en este campo, sino podremos utilizar un servicio como el de DuckDNS).

A continuación, configuraremos la VPN para que se levante en cuanto encendamos el equipo con el siguiente comando:

sudo systemctl enable wg-quick@wg0.service

A continuación os dejo comandos para controlar el servicio Systemd:

sudo systemctl start wg-quick@wg0.service → Para iniciar.
sudo systemctl stop wg-quick@wg0.service → Para parar.
sudo systemctl status wg-quick@wg0.service → Para visualizar el estado del servicio.

Por último vamos a verificar que la conexión está establecida con el siguiente comando:

ip a

Como podemos ver, tenemos una nueva interfaz (la de la VPN) llamada wg0. Vamos a intentar acceder a un servidor web interno ubicado en la misma red que el servidor VPN la dirección en el que se encuentra es 192.168.64.11.

5/5 - (15 votos)

5 comentarios en «Instalar y configurar WireGuard VPN»

  1. ¡Hola!

    Un artículo muy interesante que me ha servido para salir del apuro…

    En mi empresa usábamos el servicio VPN que trae el Firewall de la compañía Fortinet y hemos sido uno de los afectados a la vulnerabilidad CVE_2020-12812. Gracias a este artículo he podido montar un servidor VPN en 20 minutos con buenísimos resultados, ya que son necesarias las claves públicas/privadas para la autenticación.

    ¡Enhorabuena por este gran artículo a todo el equipo y sobre todo al escritor John Requejo López!

    Gracias otra vez.
    (Mi nombre es ficticio para que nadie pueda desvelar mi identidad y salga a la luz la empresa afectada)

  2. Nice article! I just had found this documentation link from a forum where they asked how to install a VPN server. It’s in spanish, but working with brave browser, google translator extension and following the fucking photos you can install it without any problem. Best regards from Sweden!

  3. Buen aporte Jhon, una consulta, seria mas seguro si el wareguard se instale en un VPS? y alli cmo seria la instlación para ingresar ala red del trabajo?

Deja una respuesta