Importer en profil i en desktopklient, og den første fejl er ofte en linje, klienten nægter at efterkomme: et scriptkrog, den ikke vil køre, eller en script-security-værdi, den anser for at være for eftergivende. At hæve tallet får dialogen til at forsvinde. Det udvider også, hvad den profil må udføre på din maskine, hvilket er en mærkelig ting at give for at slippe af med en advarsel. Følg importen til direktivet, og beslutningen bliver konkret.

Fra importdialogen til direktivet

Profilen er en tekstfil med direktiver, og klienten læser dem, før der findes nogen tunnel. Et direktiv som up, down eller tls-verify navngiver et eksternt program, som OpenVPN skal køre på et bestemt tidspunkt. Om OpenVPN er villig til at køre det, er en separat indstilling kaldet script-security, og profilen sætter den normalt også.

Advarslen handler altså ikke om kryptografi eller certifikater. Den handler om en konfigurationsfil, der beder klienten udføre noget på værten, og om klienten, der kontrollerer, om dens nuværende tilladelsesniveau tillader den anmodning.

To forskellige fejl ser ens ud på dette tidspunkt. En profil, der beder om et niveau, klienten ikke vil give, giver en afvisning. En profil, der beder om et niveau, klienten giver, men hvor scriptet mangler, giver i stedet en fejl under kørslen, og de to blandes sammen i supporttråde. Den ene er et tilladelsesspørgsmål, den anden et pakningsspørgsmål.

Hvad hvert niveau faktisk åbner

Niveau 0 forbyder eksterne programkald helt, hvilket er sammenhængende for en klient, der konfigurerer sin egen grænseflade uden hjælp, og usammenhængende for en, der kalder på operativsystemet. Niveau 1, standarden, tillader de indbyggede eksekverbare filer, som grænseflade- og ruteopsætning har brug for. Ingen af niveauerne kører noget, som brugeren har leveret.

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

Niveau 2 er den interessante grænse, fordi det tillader brugerskrevne skripter. Fra det punkt gælder klientens privilegier for kode, du måske aldrig har læst, kaldt på tidspunkter, du ikke valgte, med et miljø, der indeholder forbindelsesoplysninger. Niveau 3 går videre og tillader, at adgangskoder sendes gennem miljøvariabler, og derfor beskriver håndbogen det som potentielt usikkert.

Ingen af disse tal er en styrkeindstilling. En profil på niveau 3 har ikke bedre kryptering end en på niveau 1; den har blot en større udførelsesflade, og tunnelen er identisk.

Beslut, hvad profilen fortjener

Spørg, hvad scriptet er til, før du spørger, hvilket niveau det har brug for. En krog, der skubber DNS-indstillinger eller reparerer en rute efter forbindelse, er en legitim grund til at køre noget. En krog, der kalder en ukendt binær fil i en midlertidig mappe, er en grund til at stoppe.

Scriptets sti betyder lige så meget som scriptet. En relativ sti opløses mod den mappe, klienten bruger, og en skrivbar mappe gør en engangsimport til en permanent udførelsesplads. Absolutte stier i en mappe, brugeren ikke kan ændre, er den form, der bør foretrækkes.

Skripter arver også klientens miljø, hvor legitimationsoplysninger og forbindelsesmetadata bor. Netop den arv er, hvad der gør niveau 3 farligt sammen med et script, der logger sit miljø, og det er grunden til, at et diagnostisk dump fra en klient med skripter fortjener et ekstra blik, før det klistres i en sag. Fjern miljøet, før du deler det.

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

Ændr én ting, og hold så også øje med nedtagningen

Hvis profilen virkelig har brug for et script, ændr da kun niveauet og kun for den profil. Kør klienten i forgrunden med udførligt output, så scriptets egne fejl er synlige i stedet for at blive slugt af en tjenesteadministrator.

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

Test hele livscyklussen, ikke kun forbindelsen. En krog til nedkobling, der fejler, efterlader ruter, der peger på en død tunnel, hvilket giver en maskine, der ser forbundet ud og ikke kan nå noget. Genopret forbindelsen én gang, og afbryd én gang, før du kalder ændringen færdig, og kontroller rutetabellen efter hver.

Gem en kopi af den oprindelige profil. Hvis en platformsklient ikke implementerer den samme scripting-model, kan sletning af direktiver, indtil importen lykkes, fjerne den DNS- eller ruteintegration, som tunnelen havde brug for, og den resulterende forbindelse vil godkende perfekt, mens den ikke opløser noget.

Beslutningen, der skal registreres, er snæver: hvilket script, på hvilken sti, givet på hvilket niveau, for hvilken profil. Alt andet i profilen er uændret, og det er en sætning, en anmelder kan kontrollere.

Relaterede artikler