Importer en profil i en skrivebordsklient, og den første feilen er ofte en linje klienten nekter å etterkomme: en skriptkrok den ikke vil kjøre, eller en script-security-verdi den anser som for ettergivende. Å heve tallet får dialogen til å forsvinne. Det utvider også hva den profilen kan kjøre på maskinen din, som er en merkelig ting å gi bare for å bli kvitt en advarsel. Følg importen til direktivet, og beslutningen blir konkret.

Fra importdialogen til direktivet

Profilen er en tekstfil med direktiver, og klienten leser dem før noen tunnel finnes. Et direktiv som up, down eller tls-verify navngir et eksternt program som OpenVPN skal kjøre på et bestemt tidspunkt. Om OpenVPN er villig til å kjøre det, er en egen innstilling kalt script-security, og profilen setter den vanligvis også.

Advarselen handler altså ikke om kryptografi eller sertifikater. Den handler om en konfigurasjonsfil som ber klienten kjøre noe på verten, og om klienten som sjekker om dens nåværende tillatelsesnivå tillater den forespørselen.

To forskjellige feil ser like ut på dette stadiet. En profil som ber om et nivå klienten ikke vil gi, gir en avvisning. En profil som ber om et nivå klienten gir, men der skriptet mangler, gir i stedet en feil under kjøring, og de to blandes sammen i støttetråder. Den ene er et tillatelsesspørsmål, den andre et pakningsspørsmål.

Hva hvert nivå faktisk åpner

Nivå 0 forbyr eksterne programkall helt, noe som er sammenhengende for en klient som konfigurerer sitt eget grensesnitt uten hjelp, og usammenhengende for en som kaller operativsystemet. Nivå 1, standarden, tillater de innebygde kjørbare filene som grensesnitt- og ruteoppsett trenger. Ingen av nivåene kjører noe brukeren har levert.

LevelWhat OpenVPN may executeWhat it exposes
0No external programs at allInterface and route setup must not depend on helpers
1 (default)Built-in helpers such as ip, ifconfig, route or netshPrivileged commands the platform already ships
2Built-in helpers plus user-defined scriptsWhatever the named script does with the client's privileges
3Everything above, plus passwords in environment variablesCredentials visible to child processes and their logs

Nivå 2 er den interessante grensen, fordi det slipper inn brukerdefinerte skript. Fra det punktet gjelder klientens privilegier for kode du kanskje aldri har lest, kalt på tidspunkter du ikke valgte, med et miljø som inneholder tilkoblingsdetaljer. Nivå 3 går lenger og tillater at passord sendes gjennom miljøvariabler, og derfor beskriver håndboken det som potensielt utrygt.

Ingen av disse tallene er en styrkeinnstilling. En profil på nivå 3 har ikke bedre kryptering enn en på nivå 1; den har bare en større kjøreflate, og tunnelen er identisk.

Bestem hva profilen fortjener

Spør hva skriptet er til før du spør hvilket nivå det trenger. En krok som skyver DNS-innstillinger eller reparerer en rute etter tilkobling er en legitim grunn til å kjøre noe. En krok som kaller en ukjent binærfil i en midlertidig mappe, er en grunn til å stoppe.

Skriptets sti betyr like mye som skriptet. En relativ sti løses mot den mappen klienten bruker, og en skrivbar mappe gjør en engangsimport til et permanent kjørested. Absolutte stier i en mappe brukeren ikke kan endre, er formen som bør foretrekkes.

Skript arver også klientens miljø, der påloggingsinformasjon og tilkoblingsmetadata bor. Nettopp den arven er det som gjør nivå 3 farlig sammen med et skript som logger miljøet sitt, og det er grunnen til at en diagnostisk utskrift fra en klient med skript fortjener et ekstra blikk før den limes inn i en sak. Fjern miljøet før du deler det.

grep -nE 'script-security|^up |^down |tls-verify' client.ovpn

Endre én ting, og følg deretter også med på nedkoblingen

Hvis profilen virkelig trenger et skript, endre bare nivået og bare for den profilen. Kjør klienten i forgrunnen med utførlig utdata slik at skriptets egne feil er synlige i stedet for å bli slukt av en tjenesteadministrator.

openvpn --config client.ovpn --script-security 2 --verb 3
ip route show default

Test hele livssyklusen, ikke bare tilkoblingen. En krok for nedkobling som feiler, etterlater ruter som peker på en død tunnel, noe som gir en maskin som ser tilkoblet ut og ikke når noe. Koble til på nytt én gang og koble fra én gang før du erklærer endringen ferdig, og kontroller rutetabellen etter hver.

Ta vare på en kopi av den opprinnelige profilen. Hvis en plattformklient ikke implementerer den samme skriptmodellen, kan sletting av direktiver til importen lykkes fjerne DNS- eller ruteintegrasjonen som tunnelen trengte, og den resulterende tilkoblingen vil autentisere perfekt mens den ikke løser noe.

Beslutningen som skal registreres, er smal: hvilket skript, på hvilken sti, gitt på hvilket nivå, for hvilken profil. Alt annet i profilen er uendret, og det er en setning en gjennomgåer kan kontrollere.

Relaterte artikler