Su archivo .ovpn puede ejecutar código, no solo enrutar tráfico
Un perfil que nombra un auxiliar up o down ejecuta código con sus privilegios. Revise la ruta, la propiedad, la limpieza y el ajuste script-security.
La mayoría de la gente lee un archivo .ovpn como lee la página de ajustes de un router: direcciones, rutas, una lista de cifrados. La parte que ejecuta código está cerca del final, junto a directivas que parecen fontanería, y se ejecuta con los privilegios que ya tenga el cliente. Esa es la grieta que aprovecha un perfil descuidado o malicioso, y también la grieta que convierte un auxiliar DNS útil en un problema de soporte tres semanas después. La directiva de evento, el nivel de seguridad y la propiedad del archivo deciden qué puede pasar; el contenido del script decide qué pasa en realidad. Lea las cuatro antes de conectarse.
Un perfil que ejecuta un auxiliar es un programa, no un archivo de ajustes
Directivas como route y dhcp-option describen el estado que el cliente debe establecer, y el cliente las trata como datos. Un script up es distinto: el cliente lo lanza como proceso y le entrega un entorno lleno de detalles de conexión, así que todo lo que escribió su autor se ejecuta con los derechos de su cuenta. En un portátil donde el usuario es administrador, eso es una puerta ancha para un archivo que llegó como adjunto o pegado de un hilo de foro. La distinción no es estilística, es la diferencia entre configuración y código.
El mito que conviene retirar es que un perfil solo puede redirigir el tráfico. Un auxiliar que ejecuta ip route add y otro que ejecuta curl contra un host remoto son el mismo mecanismo, y el perfil se ve idéntico desde fuera. Nada en la apariencia del archivo le dice cuál tiene, por eso la revisión tiene que llegar al propio script.
Qué decide realmente la ejecución y cómo son las líneas que la habilitan
Tres cosas controlan un auxiliar: la directiva de evento que lo nombra, el nivel script-security que lo permite y la implementación propia de la plataforma del cliente. Un perfil puede pedir un gancho y aun así no ver nada ocurrir, porque un cliente móvil o una compilación de escritorio recortada puede no implementar ese evento en absoluto. Igualmente, un perfil que pide más permiso del que necesita su función le dice algo sobre su origen. Un nivel de permiso es una capacidad, no una aprobación. Las líneas que lo habilitan son así, con una ruta que ocupa el lugar de la suya.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shEl nivel 0 rechaza programas externos y el nivel 1, el predeterminado, solo permite los ejecutables integrados del cliente, así que un gancho necesita 2 o más; el nivel 3 existe sobre todo para pasar contraseñas antiguas y es mejor evitarlo. Un perfil distribuido con un gancho necesita tanto la directiva como ese nivel, por eso una línea cerca del final del archivo merece el mismo escrutinio que el bloque del certificado. El manual de OpenVPN enumera los niveles de permiso, y su redacción merece leerse junto a lo que el perfil pide en realidad.
Propiedad, ruta y con qué se alimenta al auxiliar
Un perfil en el que confía y que apunta a un script que otra cuenta puede reescribir no es un arreglo fiable, porque la revisión que hizo ayer ya no describe lo que se ejecuta hoy. Compruebe el propietario y el modo del auxiliar, y compruebe que la ruta configurada resuelve al archivo que inspeccionó y no a un nombre que otra cosa pueda eclipsar. Los argumentos y el entorno merecen la misma mirada: el cliente pasa detalles de conexión al gancho, y un auxiliar que registra todo su entorno puede estar escribiendo credenciales en un ticket de soporte. Prefiera una integración documentada del operador o de la plataforma a un script DNS copiado de una entrada no relacionada, porque dos gestores de resolutores que se pelean por el mismo archivo producen un fallo que parece una VPN rota.
Cuando informe de un gancho que falla, redacte el entorno antes de pegarlo en cualquier sitio. El volcado que le ayuda a depurar también puede llevar el token que lo autentica.
Los fallos de limpieza aparecen cuando el túnel ya no está
Un auxiliar up añade rutas y ajustes de resolutor, y el auxiliar down debería retirarlos de nuevo. Cuando falta el gancho down, falla en silencio o nunca se ejecuta porque el cliente fue matado, los restos sobreviven a la sesión. Entonces el tráfico toma un camino que nadie planificó y los nombres se resuelven por un resolutor que debería haberse retirado, mientras el túnel parece sano. Esos síntomas llegan después de la desconexión, por eso se culpa a la red y no al perfil.
Pruebe el desmontaje como un paso propio: levante el túnel, anote las rutas y el resolutor, bájelo y confirme después que ambos se han ido. Un perfil que conecta limpiamente puede dejar estado atrás, y un código de salida cero del auxiliar no demuestra que el resolutor acabara apuntando donde usted piensa.
Revisar el auxiliar y conservar una salida
Lea el script de principio a fin buscando tres cosas: comandos que necesitan privilegios, rutas codificadas que quizá no existan en su sistema y cualquier llamada de red que haga. Luego mire cómo falla, porque un auxiliar que se traga los errores convierte un error de configuración en un misterio. Si no puede decir en una frase qué hace el script y quién puede cambiarlo, no está listo para habilitarlo. Un perfil que pide más privilegios de los que exige esa frase es la señal de parar.
Guarde el último perfil que funcionaba y el auxiliar al que apuntaba en almacenamiento protegido, con ambas versiones anotadas, para que una reversión sea una copia y no una reconstrucción en el peor momento posible. Si el auxiliar solo existe para una distribución o versión de cliente que ya no lo necesita, jubílelo en la configuración que posee el ajuste en lugar de subir privilegios hasta que los errores paren. Esa es la salida: menos piezas móviles, no más permiso.