VPN: IPsec, WireGuard y TLS
Protocolos VPN, modos de operación y cuándo usar cada tecnología
¿Qué es una VPN?
Una Virtual Private Network crea un túnel cifrado sobre una red pública (Internet). El tráfico se encapsula y cifra antes de enviarse, proporcionando confidencialidad, integridad y autenticación del origen.
# Sin VPN: tráfico expuesto en Internet
Empleado → [Internet abierto] → Oficina
# Con VPN: tráfico cifrado
Empleado → [Túnel cifrado VPN] → Gateway VPN → Oficina
IPsec
IPsec (RFC 4301) opera en capa 3. Es el estándar corporativo para VPN site-to-site y acceso remoto empresarial. Utiliza IKE (Internet Key Exchange) para negociar las SAs (Security Associations).
Protocolos IPsec
AH (Authentication Header)
Solo autenticación e integridad. NO cifra. Header IP: protocolo 51.
ESP (Encapsulating Security Payload)
Cifrado + autenticación + integridad. El más usado. Protocolo 50.
Modos de operación
Modo Transporte
Solo cifra el payload. Cabecera IP original visible. Para comunicación host-a-host.
Modo Túnel
Cifra todo el paquete IP original. Nueva cabecera IP añadida. Para VPN site-to-site.
# IKEv2 + IPsec (strongSwan) — configuración básica
conn mi-vpn
keyexchange=ikev2
ike=aes256-sha256-modp2048
esp=aes256gcm128
left=%defaultroute
right=vpn.empresa.com
auto=start
WireGuard
Protocolo moderno (2015, integrado en Linux Kernel 5.6). ~4.000 líneas de código vs ~100.000 de OpenVPN. Usa criptografía moderna: Curve25519 (DH), ChaCha20-Poly1305 (cifrado+AEAD), BLAKE2s (hash).
Ventajas vs OpenVPN/IPsec
- • Código base pequeño = superficie de ataque mínima
- • Rendimiento superior (kernel-space)
- • Reconexión casi instantánea (roaming mobile)
- • Configuración simple (solo pares de claves)
Consideraciones
- • Las IPs se almacenan en memoria mientras hay sesión activa (privacidad)
- • No tiene Perfect Forward Secrecy en el sentido estricto de IKEv2 (aunque las claves rotan)
- • Ecosistema de gestión empresarial menos maduro
# WireGuard — configuración servidor (/etc/wireguard/wg0.conf)
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = SERVER_PRIVATE_KEY
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.0.0.2/32
SSL/TLS VPN vs IPsec
| Criterio | IPsec | SSL/TLS VPN |
|---|---|---|
| Capa OSI | Capa 3 (red) | Capa 7 (aplicación) |
| Cliente necesario | Sí, cliente IPsec | Solo navegador (o cliente ligero) |
| Uso típico | Site-to-site, road warrior corporativo | Acceso remoto a apps web específicas |
| Puertos | UDP 500/4500 (IKE) | TCP 443 (HTTPS) |
| Firewall friendly | A veces bloqueado | Siempre (usa 443) |
| Rendimiento | Superior | Menor (overhead TLS) |
Buenas Prácticas
Usar IKEv2 + ESP con AES-256-GCM y SHA-256 mínimo. Evitar IKEv1 y algoritmos obsoletos (DES, MD5).
Exigir certificados de cliente para VPN de acceso remoto corporativo (no solo usuario/contraseña).
Implementar split tunneling con cuidado: solo túnelizar el tráfico corporativo, no todo Internet.
Registrar en SIEM todos los eventos de conexión VPN: usuario, IP origen, duración.
Revisar periódicamente las claves pre-compartidas (PSK) y los certificados de la VPN.
Para Zero Trust, considerar SDP (Zscaler, Cloudflare Access) en lugar de VPN tradicional.
Siguiente Paso
Aprende a proteger datos en reposo y en tránsito con TLS 1.3 y cifrado de disco
Cifrado en Reposo y en Tránsito →