A maioría da xente le un ficheiro .ovpn como le a páxina de axustes dun router: enderezos, rutas, unha lista de cifrados. A parte que executa código está preto da parte inferior, xunto a directivas que parecen fontanería, e execútase cos privilexios que xa teña o cliente. Esa é a fenda que aproveita un perfil descoidado ou malicioso, e tamén é a fenda que converte un axudante DNS útil nun problema de soporte tres semanas despois. A directiva de evento, o nivel de seguridade e a propiedade do ficheiro deciden que pode ocorrer; o contido do script decide que ocorre realmente. Lea as catro antes de conectarse.

Un perfil que executa un axudante é un programa, non un ficheiro de axustes

Directivas como route e dhcp-option describen o estado que o cliente debe establecer, e o cliente trátaas como datos. Un script up é distinto: o cliente lánzao como proceso e entrégalle un contorno cheo de detalles de conexión, así que todo o que escribiu o seu autor execútase cos dereitos da súa conta. Nun portátil onde o usuario é administrador, iso é unha porta ancha para un ficheiro que chegou como anexo ou pegado dun fío de foro. A distinción non é estilística, é a diferenza entre configuración e código.

O mito que convén retirar é que un perfil só pode redirixir o tráfico. Un axudante que executa ip route add e outro que executa curl contra un host remoto son o mesmo mecanismo, e o perfil parece idéntico desde fóra. Nada na aparencia do ficheiro lle di cal ten, por iso a revisión ten que chegar ao propio script.

Que decide realmente a execución e como son as liñas que a habilitan

Tres cousas controlan un axudante: a directiva de evento que o nomea, o nivel script-security que o permite e a implementación propia da plataforma do cliente. Un perfil pode pedir un gancho e aínda así non ver nada ocorrer, porque un cliente móbil ou unha compilación de escritorio recortada pode non implementar ese evento en absoluto. Igualmente, un perfil que pide máis permiso do que necesita a súa función dille algo sobre a súa orixe. Un nivel de permiso é unha capacidade, non unha aprobación. As liñas que o habilitan son así, cunha ruta que ocupa o lugar da súa.

script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.sh

O nivel 0 rexeita programas externos e o nivel 1, o predeterminado, só permite os executables integrados do cliente, así que un gancho necesita 2 ou máis; o nivel 3 existe sobre todo para pasar contrasinais antigos e é mellor evitalo. Un perfil distribuído cun gancho necesita tanto a directiva como ese nivel, por iso unha liña preto do final do ficheiro merece o mesmo escrutinio que o bloque do certificado. O manual de OpenVPN enumera os niveis de permiso, e a súa redacción merece lerse xunto ao que o perfil pide realmente.

Propiedade, ruta e con que se alimenta o axudante

Un perfil no que confía e que apunta a un script que outra conta pode reescribir non é un arranxo fiable, porque a revisión que fixo onte xa non describe o que se executa hoxe. Comprobe o propietario e o modo do axudante, e comprobe que a ruta configurada resolve ao ficheiro que inspeccionou e non a un nome que outra cousa poida eclipsar. Os argumentos e o contorno merecen a mesma mirada: o cliente pasa detalles de conexión ao gancho, e un axudante que rexistra todo o seu contorno pode estar escribindo credenciais nun tícket de soporte. Prefira unha integración documentada do operador ou da plataforma a un script DNS copiado dunha entrada non relacionada, porque dous xestores de resolvedores que pelexan polo mesmo ficheiro producen un fallo que parece unha VPN rota.

Cando informe dun gancho que falla, redacte o contorno antes de pegalo en calquera sitio. O volcado que lle axuda a depurar tamén pode levar o token que o autentica.

Os fallos de limpeza aparecen cando o túnel xa non está

Un axudante up engade rutas e axustes de resolvedor, e o axudante down debería retiralos de novo. Cando falta o gancho down, falla en silencio ou nunca se executa porque o cliente foi matado, os restos sobreviven á sesión. Entón o tráfico toma un camiño que ninguén planificou e os nomes resólvense por un resolvedor que debería terse retirado, mentres o túnel parece san. Eses síntomas chegan despois da desconexión, por iso se culpa a rede e non o perfil.

Probe a desmontaxe como un paso propio: levante o túnel, anote as rutas e o resolvedor, báixeo e confirme despois que ambos desapareceron. Un perfil que conecta limpamente pode deixar estado atrás, e un código de saída cero do axudante non demostra que o resolvedor acabase apuntando onde vostede pensa.

Revisar o axudante e conservar unha saída

Lea o script de principio a fin buscando tres cousas: comandos que necesitan privilexios, rutas codificadas que quizais non existan no seu sistema e calquera chamada de rede que faga. Despois mire como falla, porque un axudante que traga os erros converte un erro de configuración nun misterio. Se non pode dicir nunha frase que fai o script e quen pode cambialo, non está listo para habilitalo. Un perfil que pide máis privilexios dos que esixe esa frase é o sinal de parar.

Garde o último perfil que funcionaba e o axudante ao que apuntaba en almacenamento protexido, coas dúas versións anotadas, para que unha reversión sexa unha copia e non unha reconstrución no peor momento posible. Se o axudante só existe para unha distribución ou versión de cliente que xa non o necesita, xubíleo na configuración que posúe o axuste en lugar de subir privilexios ata que os erros paren. Esa é a saída: menos pezas móbiles, non máis permiso.

Artigos relacionados