AyGR - Redes Privadas virtuales (VPN) - OpenVPN - WireGuard
Fecha de Entrega: Chivilcoy: 17/11/2024. Luján 17/11/2024.
Objetivo: Conocer herramientas de uso extendido para configurar redes privadas virtuales. Reconocer los escenarios de uso habituales de VPN y los servicios de seguridad asociados. Categorías ISO: FCAPS.
Bibliografía
- HERTZOG, R.; MAS, R. 2015. Capítulo 10. Sección 2: “Red privada virtual”. En El manual del Administrador de Debian. Freexian.
https://debian-handbook.info/browse/es-ES/stable/sect.virtual-private-network.html - YONAN J. 2003. The User-Space VPN and OpenVPN.
https://maurom.com/redes/openvpn-Yonan-BLUG-talk.pdf - MAKIN, S. 2024. Introduction to WireGuard VPN. Canonical Group Ltd.
https://documentation.ubuntu.com/server/explanation/intro-to/wireguard-vpn/ - DONENFELD, J. 2022. WireGuard: Fast, Modern, Secure VPN Tunnel.
https://www.wireguard.com/
Experiencia de laboratorio
Elija para esta experiencia de laboratorio un compañero/a de trabajo con el cual realizará la actividad. Un equipo actuará de cliente y otro de servidor.
Túnel punto a punto simple
Para llevar a cabo esta experiencia se utilizará la herramienta “Open VPN”. Se requiere por lo tanto instalar los siguientes paquetes:
apt-get install openvpn
Para la primera experiencia, y por fines didácticos, se realizará una conexión punto a punto con la mínima configuración posible.
-
En el servidor: Crear un túnel y asignarle la interfaz virtual
tun0
. Configurar la ip10.9.8.1
al extremo local del túnel y10.9.8.2
al extremo remoto.openvpn --dev tun0 --ifconfig 10.9.8.1 10.9.8.2
-
En el cliente: Crear el otro extremo del túnel y la interfaz virtual con el comando.
openvpn --remote IP_SERVIDOR_VPN --dev tun0 --ifconfig 10.9.8.2 10.9.8.1
-
Verificar que la interfaz del túnel (
tun0
) está activa mediante el comandoip link
¿Cuántas interfaces de red posee ahora el host? ¿Cuáles de ellas son reales/físicas? -
Compruebe que la configuración haya sido exitosa utilizando el comando
ping
contra el extremo opuesto del túnel. -
Realice una captura durante la ejecución del ping (en el cliente o en el servidor) en la interfaz virtual
tun0
. Guardela con el nombre capturavpn-simple-tun.pcapng
. ¿Es posible visualizar los mensajes ICMP? -
Destruya el túnel en el extremo del cliente y realice una captura en la interfaz física del equipo al momento de volver a crearlo. Además repita la operación de realizar un
ping
. Guarde la captura con el nombrevpn-simple-eth.pcapng
. ¿Es posible visualizar los mensajes ICMP? ¿Por qué?
Túnel punto a punto con cifrado simétrico
En este escenario se utiliza una configuración donde se requiere de un usuario y contraseña para poder establecer el túnel.
-
En el servidor, crear una nueva clave con:
openvpn --genkey --secret secret.key
-
Se debe copiar la clave generada en el servidor al equipo del cliente. Puede utilizar para ello el comando
scp
. -
En ambos extremos, ubique el archivo de clave
.key
en el directorio/etc/openvpn/
-
En el servidor cree el archivo
/etc/openvpn/tun0.conf
para configurar la interfaz y luego incorpore los siguientes parámetros:dev tun0 ifconfig 10.9.8.1 10.9.8.2 secret /etc/openvpn/secret.key
-
En el cliente, configure también una interfaz en el archivo
/etc/openvpn/tun0.conf
con los siguientes parámetros:remote ip-del-servidor dev tun0 ifconfig 10.9.8.2 10.9.8.1 secret /etc/openvpn/secret.key
-
En el servidor levante el túnel de configurado con:
openvpn --config /etc/openvpn/tun0.conf
-
En el cliente Inicie una captura y luego levante el túnel configurado con el mismo comando utilizado en el punto anterior. Realice un ping al extremo del tunel correspondiente al servidor. Guarde la captura con nombre
vpn-simetrico.pcapng
. ¿Es posible ver los mensajes ICMP en la captura?
Tunel punto a punto con WireGuard y cifrado asimétrico
Si bien este escenario puede realizarse mediante OpenVPN con certificados X.509 utilizando una Infraestructura de Clave Pública (PKI) propia, en esta oportunidad utilizaremos una solución libre que también basa su funcionamiento en cifrado asimétrico, pero utilizando una arquitectura y un protocolo novedoso: WireGuard.
-
Instale la herramienta (válido para debian 11 y 12, para debian 10 debe agregarse el repositorio backports: https://backports.debian.org/):
apt update apt install wireguard
Para otros sistemas operativos ver: https://www.wireguard.com/install/
-
En ambos equipos extremos de la vpn genere su par de claves públicas y privadas
wg genkey > private.key cat private.key wg pubkey < private.key > public.key cat public.key
-
En el servidor crear una nueva interfaz de red llamada wg0 y asignarle una IP
ip link add wg0 type wireguard ip addr add 10.9.8.1/24 dev wg0
-
En el cliente crear una nueva interfaz de red llamada wg0 y asignarle una IP
ip link add wg0 type wireguard ip addr add 10.9.8.2/24 dev wg0
-
En ambos equipos asignar la clave privada a la interfaz de red y levantar la interfaz
wg set wg0 private-key ./private.key ip -4 addr show ip link set wg0 up
-
En ambos equipos, indicar la dirección IP del extremo y su respectiva clave pública
wg set wg0 listen-port PUERTO_LOCAL peer CLAVE_PUB \ allowed-ips IPVIRTUAL_EXTREMO/32 endpoint IPREAL_EXTREMO:PUERTO_EXTREMO
Las variables son las siguientes:
PUERTO_LOCAL
es el puerto en el cual Wireguard va a escuchar en ese host.CLAVE_PUB
es la clave pública del otro extremo.IPVIRTUAL_EXTREMO
es la IP ‘virtual’, la que pertenece a la red conformada por la VPN. En este caso se viene utilizando 10.9.8.1 para el server y 10.9.8.2 para el cliente.IPREAL_EXTREMO
es la IP en la LAN del otro extremo.PUERTO_EXTREMO
es el puerto en el cual está escuchando el servicio en el otro extremo (ya funciona conque el ‘cliente’ especifique elPUERTO_LOCAL
del servidor, pero pueden ser iguales y recíprocos).
-
Pueden comprobar el estado de la VPN wiregard en ambos lados con los comandos:
wg show wg showconf wg0
-
Iniciar captura sobre la interfaz REAL del equipo.
-
Visualizar la tabla de rutas y probar el enlace VPN
ip route show ping 10.9.8.X
-
Detener la captura y determinar con ella el protocolo de transporte utilizado, los puertos origen y destino, e indicar si Wireshark interpreta apropiadamente las PDUs del protocolo de “aplicación” WireGuard
Trabajo práctico
-
¿Porqué no es posible visualizar las PDU de openVPN en la captura
vpn-simple-tun.pcapng
? -
Identifique en la captura
vpn-simple-eth.pcapng
, los mensajes de establecimiento del túnel y busque los paquetes correspondientes a los mensajes ICMP Echo Request y Echo Repl. ¿Para qué se utiliza el campo HMAC? -
¿Qué identifican las direcciones IP luego de la instrucción
ifconfig
? -
¿Qué servicios de seguridad se proveen en la experiencia de laboratorio denominada “Tunel punto a punto simple”?
-
¿Por qué usted considera que se utiliza en la experiencia de “Tunel punto a punto simétrico” un archivo de clave secreto en lugar de una cadena de texto corta?
-
¿Qué servicios de seguridad se proveen en la experiencia de laboratorio denominada “Tunel punto a punto simétrico”?
-
En la captura
vpn-simetrico.pcapng
¿Es posible ver los mensajes ICMP? ¿y las ip internas del tunel? ¿Qué datos de usuario puede extraer de la captura? -
¿Qué configuración debe aplicarse para convertir el tunel punto a punto creado en las experiencias en una VPN tipo: a) equipo a red y b) red a red?.
-
Describa las principales diferencias entre OpenVPN y WireGuard.