Ir al contenido principal

Anatomía de un archivo .ovpn: Entendiendo la configuración de OpenVPN

 

Anatomía de un archivo .ovpn: Desglosando una configuración real de AWS Client VPN

Los archivos .ovpn contienen toda la configuración necesaria para establecer una conexión VPN segura. En esta guía analizaremos línea por línea un archivo real de AWS Client VPN para entender exactamente cómo funciona.

El archivo .ovpn completo

Aquí está el archivo de configuración que analizaremos, evidentemente con datos ficticios.

client
dev tun
proto udp
remote cvpn-endpoint-a1b2c3d4e5f6789a.prod.clientvpn.us-east-1.amazonaws.com 443
remote-random-hostname
resolv-retry infinite
nobind
remote-cert-tls server
cipher AES-256-GCM
verb 3
<ca>
-----BEGIN CERTIFICATE-----
[Múltiples certificados de la cadena de confianza]
-----END CERTIFICATE-----
</ca>
auth-user-pass
auth-federate
auth-retry interact
auth-nocache
reneg-sec 0
verify-x509-name vpn-enterprise.example-corp.com name

Configuración básica del cliente

Parámetros fundamentales

client
dev tun
proto udp

¿Qué significan?

  • client: Le dice a OpenVPN que actúe como cliente (no servidor)
  • dev tun: Crea una interfaz de red virtual tipo "túnel" para enrutar tráfico IP
  • proto udp: Usa UDP como protocolo de transporte (más rápido que TCP)

Configuración del servidor

remote cvpn-endpoint-a1b2c3d4e5f6789a.prod.clientvpn.us-east-1.amazonaws.com 443
remote-random-hostname

Análisis:

  • remote [hostname] [puerto]: Especifica el servidor VPN de AWS Client VPN en el puerto 443
  • El hostname sigue el patrón de AWS: cvpn-endpoint-[ID].prod.clientvpn.[región].amazonaws.com
  • remote-random-hostname: Resuelve DNS de forma aleatoria para balanceo de carga

Políticas de conexión

resolv-retry infinite
nobind

Explicación:

  • resolv-retry infinite: Si falla la resolución DNS, reintenta indefinidamente
  • nobind: No vincula a un puerto local específico (deja que el sistema elija)

Configuración de seguridad

Cifrado y verificación

remote-cert-tls server
cipher AES-256-GCM
verb 3

Detalles de seguridad:

  • remote-cert-tls server: Verifica que el certificado remoto sea válido para servidor
  • cipher AES-256-GCM: Usa cifrado AES-256 con modo GCM (Galois/Counter Mode)
  • verb 3: Nivel de logging moderado (0=silencioso, 9=muy detallado)

¿Por qué AES-256-GCM?

  • AES-256: Cifrado simétrico de 256 bits (estándar militar)
  • GCM: Proporciona autenticación integrada y mejor rendimiento

Cadena de certificados

Estructura de los certificados

El archivo incluye tres certificados en la sección <ca>:

<ca>
-----BEGIN CERTIFICATE-----
[Certificado 1: Amazon RSA 2048 M02]
-----BEGIN CERTIFICATE-----
[Certificado 2: Amazon Root CA 1]  
-----BEGIN CERTIFICATE-----
[Certificado 3: Starfield Services Root CA - G2]
-----END CERTIFICATE-----
</ca>

¿Qué hace cada certificado?

  1. Amazon RSA 2048 M02: Certificado intermedio que firma el certificado del servidor VPN
  2. Amazon Root CA 1: Certificado raíz de Amazon que firma el intermedio
  3. Starfield Services Root CA - G2: Certificado raíz de Starfield (subsidiaria de GoDaddy)

Cadena de confianza

Tu cliente OpenVPN
    ↓ confía en
Starfield Root CA
    ↓ firmó
Amazon Root CA 1
    ↓ firmó  
Amazon RSA 2048 M02
    ↓ firmó
Certificado del servidor VPN

Configuración de autenticación

Métodos de autenticación

auth-user-pass
auth-federate
auth-retry interact
auth-nocache

¿Qué hace cada directiva?

  • auth-user-pass: Requiere usuario y contraseña
  • auth-federate: Habilita autenticación federada (SAML, Active Directory, etc.)
  • auth-retry interact: Permite reintroducir credenciales si fallan
  • auth-nocache: No guarda credenciales en memoria (más seguro)

Flujo de autenticación típico

  1. OpenVPN se conecta al endpoint
  2. Solicita credenciales al usuario
  3. Si auth-federate está activo, puede redirigir a un portal SSO
  4. Las credenciales se validan contra el directorio configurado
  5. Si fallan, auth-retry interact permite intentar de nuevo

Configuración avanzada

Renegociación de claves

reneg-sec 0
  • reneg-sec 0: Desactiva la renegociación automática de claves
  • Normalmente OpenVPN renegocia cada hora por seguridad
  • En AWS Client VPN se gestiona de forma diferente

Verificación del servidor

verify-x509-name vpn-enterprise.example-corp.com name
  • Verifica que el certificado del servidor contenga exactamente este nombre
  • Previene ataques man-in-the-middle
  • El nombre debe coincidir con el DNS del servidor

¿Cómo funciona la conexión?

Proceso paso a paso

  1. Resolución DNS: OpenVPN resuelve el hostname del servidor
  2. Conexión TCP/UDP: Se conecta al puerto 443 usando UDP
  3. Handshake TLS: Establece túnel TLS usando los certificados CA
  4. Verificación: Comprueba verify-x509-name y remote-cert-tls
  5. Autenticación: Usuario introduce credenciales (posiblemente federadas)
  6. Configuración: Servidor envía configuración de red (IPs, rutas, DNS)
  7. Túnel activo: Interfaz tun queda lista para enrutar tráfico

Flujo de datos

Tu aplicación
    ↓
Interfaz tun (10.x.x.x)
    ↓ cifrado AES-256-GCM
Túnel OpenVPN
    ↓ UDP puerto 443
Internet
    ↓
AWS Client VPN Endpoint
    ↓
Red privada de AWS

Particularidades de AWS Client VPN

Hostname específico

cvpn-endpoint-a1b2c3d4e5f6789a.prod.clientvpn.us-east-1.amazonaws.com

Estructura:

  • cvpn-endpoint-: Prefijo de AWS Client VPN
  • a1b2c3d4e5f6789a: ID único del endpoint
  • prod.clientvpn: Servicio de producción
  • us-east-1: Región de AWS
  • amazonaws.com: Dominio de AWS

Puerto 443

  • AWS Client VPN usa puerto 443 (HTTPS) por defecto
  • Facilita traversal de firewalls corporativos
  • Muchos firewalls permiten tráfico HTTPS saliente

Autenticación federada

auth-federate
  • Permite integración con Active Directory
  • Soporte para SAML 2.0
  • Compatible con Azure AD, Okta, OneLogin, etc.

Troubleshooting común

Problemas de conexión

Error de timeout:

# Verificar conectividad al endpoint
Test-NetConnection -ComputerName cvpn-endpoint-a1b2c3d4e5f6789a.prod.clientvpn.us-east-1.amazonaws.com -Port 443

Error de certificado:

  • Verificar que la fecha del sistema sea correcta
  • Los certificados tienen fechas de validez específicas

Error de autenticación:

  • Con auth-federate, puede abrir navegador web
  • Verificar credenciales de dominio/SSO

Logs útiles

Con verb 3 verás logs como:

TCP/UDP: Preserving recently used remote address: [IP]:443
Socket Buffers: R=[valor] S=[valor]
TLS: Initial packet from [IP]:443, sid=[session_id]
VERIFY OK: depth=2, CN=Starfield Services Root Certificate Authority - G2
VERIFY OK: depth=1, CN=Amazon Root CA 1
VERIFY OK: depth=0, CN=*.prod.clientvpn.us-east-1.amazonaws.com

Seguridad del archivo

Información sensible

Este archivo NO contiene:

  • ❌ Credenciales de usuario
  • ❌ Claves privadas
  • ❌ Secretos

Sí contiene:

  • ✅ Hostname del servidor (información pública)
  • ✅ Certificados públicos de CA
  • ✅ Configuración de red

Mejores prácticas

  1. Permisos de archivo: chmod 600 client.ovpn
  2. No compartir innecesariamente: Aunque no tiene secretos, revela infraestructura
  3. Mantener actualizado: Los certificados CA pueden cambiar

Y en conclusión....

Este archivo .ovpn de AWS Client VPN muestra una configuración empresarial moderna con:

  • Seguridad robusta: Cifrado AES-256-GCM y verificación estricta de certificados
  • Autenticación flexible: Soporte para credenciales locales y federadas
  • Optimización para empresa: Puerto 443, UDP para rendimiento
  • Cadena de confianza completa: Tres niveles de certificados CA

La configuración está diseñada para ser segura por defecto, con políticas que priorizan la seguridad sobre la conveniencia (como auth-nocache y verificación estricta de nombres).

Entender cada línea te permite diagnosticar problemas de conectividad y comprender exactamente cómo se establece la conexión segura a la red privada de AWS.

Comentarios

Entradas más populares de este blog

Arquitectura N-Capas GUÍA COMPLETA .NET Core

Entendiendo la Arquitectura Limpia (Clean Architecture) en .NET: Una Guía Completa La Arquitectura Limpia, también conocida como arquitectura N-Capas, es un patrón de diseño que nos ayuda a crear aplicaciones mantenibles, testables y escalables. En este artículo, exploraremos en detalle cómo implementar esta arquitectura en un proyecto .NET. Si quieres entenderlo más fácil y con código, te dejo este otro artículo:   Arquitectura Limpia explicado con patitos 🐤 ¿Qué es la Arquitectura Limpia? La Arquitectura Limpia es un conjunto de principios de diseño que nos ayuda a separar las responsabilidades en diferentes capas de nuestra aplicación. Cada capa tiene una responsabilidad específica y se comunica con las otras capas a través de interfaces bien definidas. Estructura del Proyecto Una típica estructura de proyecto en Arquitectura Limpia se ve así: ├── Controllers/ │   └── ProductController.cs ├── Domain/ │   ├── Models/ │   └── DTOs/ ├── Repository/ │...

Archivo Application.properties en SPRING BOOT

  Guía Completa: Application.properties en Spring Boot El archivo application.properties es una pieza fundamental en aplicaciones Spring Boot, actuando como el centro de configuración para todo tu proyecto. En esta guía, exploraremos sus características principales y cómo aprovecharlo al máximo. ¿Qué es application.properties? Es un archivo de configuración que permite definir diferentes parámetros y valores para tu aplicación Spring Boot sin necesidad de modificar el código fuente. Se ubica en src/main/resources y Spring Boot lo lee automáticamente al iniciar. Configuraciones Esenciales Configuración del Servidor # Puerto del servidor server.port = 8080 # Contexto de la aplicación server.servlet.context-path = /miapp Conexión a Base de Datos # MySQL spring.datasource.url = jdbc:mysql://localhost:3306/mibasededatos spring.datasource.username = usuario spring.datasource.password = contraseña spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver JPA y Hibernat...

Kubernets (K8S) - PRIMEROS pasos

¡Hola, amantes de la tecnología! 👋 Si has escuchado hablar de Kubernetes pero aún no sabes por dónde empezar, este artículo es para ti. 🚢 Kubernetes, también conocido como K8s, es una herramienta poderosa para la gestión de contenedores que puede parecer intimidante al principio. Pero no te preocupes, aquí te guiaremos paso a paso para que puedas dominar los conceptos básicos y empezar a desplegar tus propias aplicaciones en un clúster de Kubernetes. 🌐 Prepárate para descubrir cómo esta tecnología puede transformar la manera en que desarrollas y despliegas tus aplicaciones. ¡Vamos a sumergirnos en el mundo de Kubernetes! 💻🚀 Vamos hacer un listado para lo que vamos a necesitar instalar:  Docker Desktop  Install Docker Desktop on Windows | Docker Docs   Kubectl  Install Tools | Kubernetes   MiniCube  https://minikube.sigs.k8s.io/docs/start Scoop ( opcional para instalar Kubecolor)  Scoop   Kubecolor ( opcional para colores en PowerShell)  ...