El vostre fitxer .ovpn pot executar codi, no només encaminar trànsit
Un perfil que nomena un auxiliar up o down executa codi amb els vostres privilegis. Reviseu el camí, la propietat, la neteja i el paràmetre script-security.
La majoria de gent llegeix un fitxer .ovpn com llegeix la pàgina de paràmetres d’un encaminador: adreces, rutes, una llista de xifratges. La part que executa codi és a prop de la part inferior, al costat de directrius que semblen feina de lampisteria, i s’executa amb els privilegis que ja té el client. Aquest és el buit que explota un perfil descuidat o maliciós, i també el buit que converteix un auxiliar DNS útil en un problema de suport tres setmanes després. La directriu d’esdeveniment, el nivell de seguretat i la propietat del fitxer decideixen què pot passar; el contingut de l’script decideix què passa realment. Llegiu-ne els quatre abans de connectar-vos.
Un perfil que executa un auxiliar és un programa, no un fitxer de paràmetres
Directrius com route i dhcp-option descriuen l’estat que el client ha d’establir, i el client les tracta com a dades. Un script up és diferent: el client l’engega com a procés i li passa un entorn ple de detalls de connexió, així que tot el que va escriure el seu autor s’executa amb els drets del vostre compte. En un portàtil on l’usuari és administrador, això és una porta ampla per a un fitxer que va arribar com a adjunt o enganxat d’un fil de fòrum. La distinció no és estilística, és la diferència entre configuració i codi.
El mite que cal retirar és que un perfil només pot redirigir el trànsit. Un auxiliar que executa ip route add i un que executa curl contra un amfitrió remot són el mateix mecanisme, i el perfil sembla idèntic des de fora. Res en l’aparença del fitxer no us diu quin teniu, i per això la revisió ha d’arribar a l’script mateix.
Què decideix realment l’execució i com són les línies que l’habiliten
Tres coses controlen un auxiliar: la directriu d’esdeveniment que el nomena, el nivell script-security que el permet i la implementació pròpia de la plataforma del client. Un perfil pot demanar un ganxo i no veure res, perquè un client mòbil o una compilació d’escriptori reduïda pot no implementar gens aquest esdeveniment. Igualment, un perfil que demana més permís del que la seva funció necessita us diu alguna cosa sobre el seu origen. Un nivell de permís és una capacitat, no una aprovació. Les línies que l’habiliten són així, amb un camí que fa el paper del vostre.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shEl nivell 0 refusa programes externs i el nivell 1, el predeterminat, només permet els executables integrats del client, així que un ganxo necessita 2 o més; el nivell 3 existeix sobretot per transmetre contrasenyes antigues i val més evitar-lo. Un perfil enviat amb un ganxo necessita tant la directriu com aquell nivell, i per això una línia a prop del final del fitxer mereix la mateixa atenció que el bloc del certificat. El manual d’OpenVPN llista els nivells de permís, i val la pena llegir-ne la redacció al costat del que el perfil demana realment.
Propietat, camí i què se li dona a l’auxiliar
Un perfil en què confieu i que apunta a un script que un altre compte pot reescriure no és un acord fiable, perquè la revisió que vau fer ahir ja no descriu què s’executa avui. Comproveu l’amo i el mode de l’auxiliar, i comproveu que el camí configurat resol al fitxer que heu inspeccionat i no a un nom que una altra cosa pot fer ombra. Els arguments i l’entorn mereixen la mateixa mirada: el client passa detalls de connexió al ganxo, i un auxiliar que registra tot el seu entorn pot estar escrivint credencials en un tiquet de suport. Preferiu una integració documentada de l’operador o de la plataforma a un script DNS copiat d’una entrada no relacionada, perquè dos gestors de resolutors que es barallen pel mateix fitxer produeixen un error que sembla una VPN espatllada.
Quan informeu d’un ganxo que falla, redacteu l’entorn abans d’enganxar-lo enlloc. L’abocament que us ajuda a depurar també pot portar el testimoni que us autentica.
Les fallades de neteja apareixen quan el túnel ja no hi és
Un auxiliar up afegeix rutes i paràmetres de resolutor, i l’auxiliar down ha de tornar a treure’ls. Quan el ganxo down falta, falla en silenci o no s’executa mai perquè el client ha estat mort, les restes sobreviuen a la sessió. Llavors el trànsit pren un camí que ningú no havia planificat i els noms es resolen per un resolutor que s’hauria hagut de treure, mentre el túnel sembla sa. Aquests símptomes arriben després de la desconnexió, i per això es culpa la xarxa i no el perfil.
Proveu el desmuntatge com una passa pròpia: pugeu el túnel, anoteu les rutes i el resolutor, baixeu-lo i confirmeu que tots dos han desaparegut. Un perfil que es connecta net pot deixar estat enrere, i un codi de sortida zero de l’auxiliar no demostra que el resolutor hagi acabat apuntant on penseu.
Revisar l’auxiliar i mantenir una sortida
Llegiu l’script de cap a peus buscant tres coses: ordres que necessiten privilegis, camins codificats que potser no existeixen al vostre sistema i qualsevol crida de xarxa que faci. Després mireu com falla, perquè un auxiliar que s’empassa errors converteix un error de configuració en un misteri. Si no podeu dir en una frase què fa l’script i qui el pot canviar, no esteu a punt per habilitar-lo. Un perfil que demana més privilegis del que aquella frase requereix és el senyal d’aturar-se.
Guardeu l’últim perfil que funcionava i l’auxiliar al qual apuntava en un emmagatzematge protegit, amb les dues versions anotades, perquè una reversió sigui una còpia i no una reconstrucció en el pitjor moment possible. Si l’auxiliar només existeix per a una distribució o versió de client que ja no el necessita, jubileu-lo a la configuració que posseeix el paràmetre en lloc d’apujar privilegis fins que els errors parin. Aquesta és la sortida: menys peces mòbils, no més permís.