Voer 'n profiel in 'n lessenaarkliënt in en die eerste fout is dikwels 'n reël wat die kliënt weier om te eerbiedig: 'n skrip-haak wat hy nie sal loop nie, of 'n script-security-waarde wat hy as te toelatend beskou. Om die getal te verhoog laat die dialoog verdwyn. Dit verruim ook wat daardie profiel op jou masjien mag uitvoer, wat 'n vreemde ding is om toe te staan net om 'n waarskuwing weg te klik. Volg die invoer deur tot by die opdrag en die besluit word konkreet.

Van die invoerdialoog tot die opdrag

Die profiel is 'n tekslêer met opdragte, en die kliënt lees hulle voordat enige tonnel bestaan. 'n Opdrag soos up, down of tls-verify noem 'n eksterne program wat OpenVPN op 'n bepaalde oomblik moet loop. Of OpenVPN bereid is om dit te loop, is 'n aparte instelling genaamd script-security, en die profiel stel dit gewoonlik ook.

Die waarskuwing gaan dus nie oor kriptografie of sertifikate nie. Dit gaan oor 'n konfigurasielêer wat die kliënt vra om iets op die gasheer uit te voer, en die kliënt wat nagaan of sy huidige toestemmingsvlak daardie versoek toelaat.

Twee verskillende foute lyk op hierdie stadium soos dieselfde. 'n Profiel wat 'n vlak vra wat die kliënt nie sal toestaan nie, lewer 'n weiering. 'n Profiel wat 'n vlak vra wat die kliënt toestaan, maar die skrip ontbreek, lewer eerder 'n fout tydens loop, en die twee word in ondersteuningsdrade verwar. Die een is 'n toestemmingsvraag en die ander is 'n verpakkingsvraag.

Wat elke vlak werklik oopmaak

Vlak 0 verbied eksterne programoproepe heeltemal, wat samehangend is vir 'n kliënt wat sy eie koppelvlak sonder hulp opstel en onsamehangend vir een wat na die bedryfstelsel uitwyk. Vlak 1, die verstek, laat die ingeboude uitvoerbare lêers toe wat koppelvlak- en roetekonfigurasie nodig het. Nie een van die twee vlakke loop iets wat die gebruiker verskaf het nie.

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

Vlak 2 is die interessante grens, want dit laat gebruikergedefinieerde skripte toe. Van daardie punt af geld die kliënt se voorregte vir kode wat jy miskien nooit gelees het nie, wat op oomblikke ingeroep word wat jy nie gekies het nie, met 'n omgewing wat verbindingsbesonderhede insluit. Vlak 3 gaan verder en laat wagwoorde deur omgewingsveranderlikes deurgee, daarom beskryf die handleiding dit as potensieel onveilig.

Nie een van hierdie getalle is 'n sterkte-instelling nie. 'n Profiel op vlak 3 het geen beter enkripsie as een op vlak 1 nie; dit het bloot 'n groter uitvoeringsoppervlak, en die tonnel is identies.

Bepaal wat die profiel verdien

Vra waarvoor die skrip is voordat jy vra watter vlak dit nodig het. 'n Haak wat DNS-instellings stoot of 'n roete ná verbinding herstel is 'n geldige rede om iets te loop. 'n Haak wat 'n onbekende binêre lêer in 'n tydelike gids aanroep, is 'n rede om te stop.

Die skrip se pad maak net soveel saak soos die skrip self. 'n Relatiewe pad word opgelos teen watter gids die kliënt ook al gebruik, en 'n skryfbare gids maak van 'n eenmalige invoer 'n blywende uitvoerslot. Absolute paaie in 'n gids wat die gebruiker nie kan verander nie, is die vorm wat jy moet verkies.

Skripte erf ook die kliënt se omgewing, waar geloofsbriewe en verbindingsmetadata woon. Daardie oorerwing is presies wat vlak 3 gevaarlik maak in kombinasie met 'n skrip wat sy omgewing teken, en dit is die rede waarom 'n diagnostiese uittreksel van 'n skrip-geaktiveerde kliënt 'n tweede kyk verdien voordat dit in 'n tiket geplak word. Stroop die omgewing voordat jy dit deel.

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

Verander een ding, en let dan ook op die afbreek

As die profiel werklik 'n skrip nodig het, verander net die vlak en net vir daardie profiel. Loop die kliënt in die voorgrond met uitvoerige uitset sodat die skrip se eie foute sigbaar is eerder as om deur 'n diensbestuurder ingesluk te word.

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

Toets die hele lewensiklus, nie net die verbinding nie. 'n Af-haak wat misluk, laat roetes na 'n dooie tonnel wys, wat 'n masjien oplewer wat gelyk of dit verbind is en niks kan bereik nie. Herverbind een keer en ontkoppel een keer voordat jy die verandering klaar noem, en kyk ná elkeen na die roetekaart.

Hou 'n kopie van die oorspronklike profiel. As 'n platformkliënt nie dieselfde skripmodel implementeer nie, kan die uitvee van opdragte tot die invoer slaag die DNS- of roete-integrasie verwyder wat die tonnel nodig gehad het, en die gevolglike verbinding sal goed verifieer terwyl dit niks opgelos kry nie.

Die besluit om op te teken is smal: watter skrip, op watter pad, op watter vlak toegestaan, vir watter profiel. Alles anders in die profiel bly onveranderd, en dit is 'n sin wat 'n keurder kan nagaan.

Verwante artikels