Nivells de script-security d’OpenVPN del 0 al 3, i què desbloqueja cadascun
Cada nivell de script-security amplia què pot executar un perfil: primer els auxiliars d’administració, després els scripts d’usuari i finalment les contrasenyes a l’entorn. Llegeix les directives.
Importa un perfil en un client d’escriptori i la primera fallada sol ser una línia que el client es nega a respectar: un hook d’script que no executarà, o un valor de script-security que considera massa permissiu. Apujar el número fa desaparèixer el diàleg. També amplia què pot executar aquest perfil a la teva màquina, que és una cosa estranya de concedir només per tancar un avís. Segueix la importació fins a la directiva i la decisió esdevé concreta.
Del diàleg d’importació a la directiva
El perfil és un fitxer de text amb directives, i el client les llegeix abans que existeixi cap túnel. Una directiva com up, down o tls-verify anomena un programa extern que OpenVPN ha d’executar en un moment definit. Si OpenVPN està disposat a executar-lo és un paràmetre a part anomenat script-security, i el perfil normalment també el fixa.
Així que l’avís no tracta de criptografia ni de certificats. Tracta d’un fitxer de configuració que demana al client executar alguna cosa a l’amfitrió, i del client comprovant si el seu nivell de permisos actual permet aquesta petició.
Dues fallades diferents semblen iguals en aquesta etapa. Un perfil que demana un nivell que el client no concedirà produeix un rebuig. Un perfil que demana un nivell que el client concedeix però l’script no hi és produeix una fallada en temps d’execució, i les dues es confonen als fils de suport. Una és una qüestió de permisos i l’altra és una qüestió d’empaquetatge.
Què obre realment cada nivell
El nivell 0 prohibeix del tot les crides a programes externs, cosa coherent per a un client que configura la seva pròpia interfície sense ajuda i incoherent per a un que recorre al sistema operatiu. El nivell 1, el predeterminat, permet els executables integrats que necessiten la configuració d’interfície i de rutes. Cap dels dos nivells executa res que hagi aportat l’usuari.
| Level | What OpenVPN may execute | What it exposes |
|---|---|---|
| 0 | No external programs at all | Interface and route setup must not depend on helpers |
| 1 (default) | Built-in helpers such as ip, ifconfig, route or netsh | Privileged commands the platform already ships |
| 2 | Built-in helpers plus user-defined scripts | Whatever the named script does with the client's privileges |
| 3 | Everything above, plus passwords in environment variables | Credentials visible to child processes and their logs |
El nivell 2 és la frontera interessant, perquè admet scripts definits per l’usuari. A partir d’aquell punt els privilegis del client s’apliquen a codi que potser no has llegit mai, invocat en moments que no has triat, amb un entorn que inclou detalls de connexió. El nivell 3 va més enllà i permet passar contrasenyes per variables d’entorn, i per això el manual el descriu com potencialment insegur.
Cap d’aquests números no és un paràmetre de força. Un perfil de nivell 3 no té millor xifratge que un de nivell 1; simplement té una superfície d’execució més gran, i el túnel és idèntic.
Decideix què mereix el perfil
Pregunta per a què serveix l’script abans de preguntar quin nivell necessita. Un hook que empeny la configuració de DNS o repara una ruta després de connectar és un motiu legítim per executar alguna cosa. Un hook que crida un binari desconegut en un directori temporal és un motiu per aturar-se.
El camí de l’script importa tant com l’script. Un camí relatiu es resol contra el directori que faci servir el client, i un directori on es pot escriure converteix una importació puntual en un lloc d’execució permanent. Els camins absoluts en un directori que l’usuari no pot modificar són la forma que cal preferir.
Els scripts també hereten l’entorn del client, on viuen les credencials i les metadades de connexió. Aquesta herència és exactament el que fa perillós el nivell 3 combinat amb un script que registra el seu entorn, i és la raó per què un bolcat de diagnòstic d’un client amb scripts mereix una segona mirada abans d’enganxar-lo en un tiquet. Neteja l’entorn abans de compartir-lo.
grep -nE 'script-security|^up |^down |tls-verify' client.ovpnCanvia una cosa, i observa també l’aturada
Si el perfil necessita de debò un script, canvia només el nivell i només per a aquest perfil. Executa el client en primer pla amb sortida detallada perquè els errors propis de l’script siguin visibles en lloc de ser engolits per un gestor de serveis.
openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default
Prova tot el cicle de vida, no només la connexió. Un hook de baixada que falla deixa rutes apuntant a un túnel mort, cosa que produeix una màquina que sembla connectada i no arriba enlloc. Torna a connectar un cop i desconnecta un cop abans de donar el canvi per acabat, i revisa la taula d’encaminament després de cadascun.
Guarda una còpia del perfil original. Si un client de plataforma no implementa el mateix model d’scripting, suprimir directives fins que la importació funcioni pot eliminar la integració de DNS o de rutes que el túnel necessitava, i la connexió resultant s’autenticarà perfectament sense resoldre res.
La decisió que cal enregistrar és estreta: quin script, en quin camí, concedit a quin nivell, per a quin perfil. Tota la resta del perfil queda igual, i això és una frase que un revisor pot verificar.