VPN automáticas para redes públicas en Linux

Introducción a VPN automáticas en redes públicas

En el ecosistema Linux, la necesidad de proteger el tráfico cuando nos conectamos a redes Wi-Fi públicas es crucial. Un sistema de VPN automática detecta redes no confiables y establece un túnel seguro de forma transparente, sin intervención del usuario. En este artículo extenso y detallado exploraremos los fundamentos, herramientas y configuraciones para implementar soluciones robustas en distribuciones modernas basadas en NetworkManager y systemd-networkd.

1. ¿Por qué VPN automática

  • Experiencia de usuario simplificada: No hay que recordar activar o desactivar la VPN cada vez.
  • Seguridad continua: El túnel se establece apenas detecta una red pública, mitigando riesgos.
  • Políticas corporativas: Cumplimiento automático de normativas internas en entornos empresariales.

2. Amenazas en redes Wi-Fi públicas

  1. Eavesdropping: Captura de paquetes sensibles (credenciales, datos Bancarios).
  2. Man-in-the-Middle: Inserción de nodos falsos que modifican o bloquean el tráfico.
  3. Rogue Hotspots: Puntos de acceso maliciosos que imitan redes legítimas.
  4. Sniffing y ataques ARP Spoofing: Redirección del tráfico a través de un atacante.

3. Beneficios de VPN automática

Al activar un sistema de VPN automática obtenemos:

  • Transparencia al usuario final.
  • Integración con gestores de red estándar.
  • Capacidad de aplicar reglas basadas en conexiones específicas.
  • Registro de eventos para auditoría.

4. Principales soluciones disponibles

A continuación describimos algunas herramientas y métodos para conseguir una VPN automática en Linux:

4.1 NetworkManager OpenVPN

Combinando OpenVPN con NetworkManager, es posible crear perfiles que se activan al conectar a una Wi-Fi pública.

4.2 systemd-networkd WireGuard

WireGuard integrado en systemd-networkd ofrece un mecanismo ligero y rápido de gestión de túneles.

4.3 Scripts personalizados y hooks

Ganchos (hooks) en NetworkManager o systemd permiten ejecutar scripts cuando se detecta un cambio de interfaz o SSID.

5. Comparativa de proveedores de VPN

Proveedor Protocolos App Linux Precios
Mullvad VPN OpenVPN, WireGuard CLI NM plugin €5/mes
ProtonVPN OpenVPN, IKEv2, WireGuard App GTK, NM plugin Desde €4/mes
NordVPN OpenVPN, IKEv2, NordLynx (WireGuard) CLI App Electron Desde €3/mes
IVPN OpenVPN, WireGuard CLI Desde 6/mes

6. Configuración práctica: NetworkManager OpenVPN

6.1 Instalación de paquetes

En Debian/Ubuntu:

sudo apt update
sudo apt install network-manager-openvpn network-manager-openvpn-gnome

6.2 Creación de la conexión VPN

  1. Abrir Configuración → Red → VPN → Añadir.
  2. Seleccionar “Importar desde archivo” y cargar el .ovpn.
  3. Configurar autenticación (usuario/contraseña o certificado).
  4. En “Avanzado → General” marcar “Conectar automáticamente”.

6.3 Activar trigger por SSID

Editar el perfil de la red Wi-Fi y en la pestaña “VPN” elegir la conexión creada. Marcar “Conectar automáticamente con esta VPN al conectar con esta red”.

7. Configuración práctica: systemd-networkd WireGuard

7.1 Instalación de WireGuard

En sistemas modernos:

sudo apt install wireguard

7.2 Definición de la interfaz

# /etc/systemd/network/wg0.netdev
[NetDev]
Name=wg0
Kind=wireguard

# /etc/systemd/network/wg0.network
[Match]
Name=wg0

[Network]
Address=10.0.0.2/24

# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = TU_LLAVE_PRIVADA
Address = 10.0.0.2/24

[Peer]
PublicKey = CLAVE_DEL_SERVIDOR
Endpoint = vpn.ejemplo.com:51820
AllowedIPs = 0.0.0.0/0

7.3 Arranque condicional

Crear un servicio systemd que detecte SSID con wpa_cli y levante o baje wg-quick@wg0 según corresponda.

8. Scripts y hooks avanzados

NetworkManager permite directorios de scripts en /etc/NetworkManager/dispatcher.d/. Un ejemplo:

#!/bin/bash
IFACE=1
STATUS=2
SSID=(nmcli -t -f active,ssid dev wifi  grep ^yes  cut -d: -f2)

if [[ STATUS == up  SSID == MiPublica ]] then
  nmcli con up id VPN-Work
fi

if [[ STATUS == down  SSID == MiPublica ]] then
  nmcli con down id VPN-Work
fi

Dar permisos de ejecución y probar.

9. Pruebas y validación

  • Ver IP pública: curl ifconfig.me antes y después de conectar.
  • Leak test: https://ipleak.net/
  • Logs: Consultar journalctl -u NetworkManager o wg para WireGuard.

10. Buenas prácticas y recomendaciones

  • Mantener los certificados y claves en directorios con permisos restrictivos (700/600).
  • Usar autenticación de dos factores si el proveedor lo permite.
  • Actualizaciones periódicas de NetworkManager, wireguard-tools y openvpn.
  • Revisar logs tras cambios de configuración.
  • Desactivar IPv6 si no se enruta por la VPN (sysctl net.ipv6.conf.all.disable_ipv6=1).

Conclusión

Implementar VPN automáticas en Linux es una estrategia eficaz para blindar la conexión en entornos públicos. Ya sea con NetworkManager y OpenVPN, o con systemd-networkd y WireGuard, existen soluciones maduras y seguras. La clave está en adaptarlas a tus flujos de trabajo, garantizar buenas prácticas de seguridad y validar periódicamente el funcionamiento. Con estos conocimientos, podrás disfrutar de tranquilidad en cualquier punto de acceso inalámbrico.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *