.ovpn-tiedostosi voi suorittaa koodia, ei vain reitittää liikennettä
Profiili, joka nimeää up- tai down-avustajan, suorittaa koodia oikeuksillasi. Tarkista polku, omistus, siivous ja script-security-asetus.
Useimmat lukevat .ovpn-tiedostoa kuin reitittimen asetussivua: osoitteet, reitit, salausluettelo. Koodia suorittava osa sijaitsee lähellä loppua, putkitöiltä näyttävien direktiivien vieressä, ja se toimii niillä oikeuksilla, jotka asiakasohjelmalla jo on. Se on aukko, jota huolimaton tai pahantahtoinen profiili hyödyntää, ja se on myös aukko, joka muuttaa hyödyllisen DNS-avustajan tukiongelmaksi kolme viikkoa myöhemmin. Tapahtumadirektiivi, suojaustaso ja tiedoston omistus ratkaisevat, mitä voi tapahtua; skriptin sisältö ratkaisee, mitä todella tapahtuu. Lue kaikki neljä ennen yhdistämistä.
Avustajaa ajettava profiili on ohjelma, ei asetustiedosto
Direktiivit kuten route ja dhcp-option kuvaavat tilaa, joka asiakasohjelman pitäisi muodostaa, ja asiakasohjelma käsittelee niitä datana. up-skripti on erilainen: asiakasohjelma käynnistää sen prosessina ja antaa sille yhteystiedoilla täytetyn ympäristön, joten kaikki mitä sen tekijä kirjoitti, ajetaan käyttäjätilisi oikeuksin. Kannettavassa, jossa käyttäjä on järjestelmänvalvoja, se on leveä ovi tiedostolle, joka saapui liitteenä tai foorumiketjusta liitettynä. Ero ei ole tyylillinen, se on ero asetusten ja koodin välillä.
Myytti, joka kannattaa jättää eläkkeelle, on että profiili voi vain uudelleenohjata liikennettä. Avustaja, joka ajaa ip route add, ja se, joka ajaa curl etäisäntää vastaan, ovat sama mekanismi, ja profiili näyttää ulospäin samalta. Mikään tiedoston ulkoasussa ei kerro, kumpi sinulla on, siksi tarkastuksen on yllettävä skriptiin itseensä.
Mikä suorituksen todella ratkaisee ja miltä mahdollistavat rivit näyttävät
Kolme asiaa ohjaa avustajaa: tapahtumadirektiivi, joka nimeää sen, script-security-taso, joka sallii sen, ja asiakasalustan oma toteutus. Profiili voi pyytää koukun ja silti nähdä, ettei mitään tapahdu, koska mobiiliasiakas tai karsittu työpöytäversio ei välttämättä toteuta sitä tapahtumaa lainkaan. Samoin profiili, joka pyytää enemmän lupaa kuin sen toiminto tarvitsee, kertoo jotain alkuperästään. Lupataso on kyky, ei hyväksyntä. Mahdollistavat rivit näyttävät tältä, ja polku korvaa omasi.
script-security 2
up /etc/openvpn/update-resolv-conf.sh
down /etc/openvpn/update-resolv-conf.shTaso 0 torjuu ulkoiset ohjelmat ja taso 1, oletus, sallii vain asiakasohjelman sisäänrakennetut suoritettavat tiedostot, joten koukku tarvitsee 2 tai korkeamman; taso 3 on lähinnä vanhojen salasanojen välitystä varten ja se kannattaa välttää. Koukun mukana toimitettu profiili tarvitsee sekä direktiivin että tuon tason, siksi yksi rivi tiedoston loppupäässä ansaitsee saman tarkastelun kuin varmenneosio. OpenVPN-käsikirja luettelee lupatasot, ja sen sanamuoto kannattaa lukea sen rinnalla, mitä profiili todella pyytää.
Omistus, polku ja millä avustajaa ruokitaan
Profiili, johon luotat, mutta joka osoittaa skriptiin, jonka toinen tili voi kirjoittaa uudelleen, ei ole luotettava järjestely, koska eilinen tarkastus ei enää kuvaa sitä, mitä tänään ajetaan. Tarkista avustajan omistaja ja tila ja varmista, että määritetty polku johtaa tarkastamaasi tiedostoon eikä nimeen, jonka jokin muu voi varjostaa. Argumentit ja ympäristö ansaitsevat saman katseen: asiakasohjelma välittää yhteystiedot koukulle, ja avustaja, joka kirjaa koko ympäristönsä, saattaa kirjoittaa tunnukset tukipyyntöön. Suosi operaattorin tai alustan dokumentoitua integraatiota DNS-skriptin sijaan, joka on kopioitu asiaankuulumattomasta julkaisusta, koska kaksi ratkaisimen hallitsijaa samasta tiedostosta riitelemällä tuottavat vian, joka näyttää rikkinäiseltä VPN:ltä.
Kun raportoit epäonnistuneesta koukusta, peitä ympäristö ennen kuin liität sen mihinkään. Vianetsintää auttava vedos voi kantaa myös tunnuksen, joka todentaa sinut.
Siivousvirheet näkyvät, kun tunneli on poissa
up-avustaja lisää reittejä ja ratkaisimen asetuksia, ja down-avustajan pitäisi poistaa ne taas. Kun down-koukku puuttuu, epäonnistuu hiljaa tai ei koskaan ajaudu, koska asiakasohjelma tapettiin, jäänteet elävät istuntoa pidempään. Silloin liikenne kulkee reittiä, jota kukaan ei suunnitellut, ja nimet ratkeavat ratkaisimen kautta, joka olisi pitänyt poistaa, kun itse tunneli näyttää terveeltä. Ne oireet saapuvat yhteyden katkaisun jälkeen, siksi verkkoa syytetään profiilin sijaan.
Testaa purkaminen omana vaiheenaan: nosta tunneli, kirjaa reitit ja ratkaisin, laske se, ja vahvista sitten, että molemmat ovat poissa. Puhtaasti yhdistyvä profiili voi silti jättää tilaa taakseen, eikä avustajan nollapoistumiskoodi todista, että ratkaisin päätyi sinne, missä luulet.
Avustajan tarkastelu ja ulospääsyn säilyttäminen
Lue skripti alusta loppuun etsien kolmea asiaa: komentoja, jotka vaativat oikeuksia, kovakoodattuja polkuja, joita järjestelmässäsi ei ehkä ole, ja kaikki verkkokutsut, joita se tekee. Katso sitten, miten se epäonnistuu, koska virheet nielevä avustaja muuttaa asetusvirheen arvoitukseksi. Jos et pysty yhdellä lauseella sanomaan, mitä skripti tekee ja kuka voi muuttaa sitä, et ole valmis ottamaan sitä käyttöön. Profiili, joka pyytää enemmän oikeuksia kuin tuo lause vaatii, on pysähtymisen merkki.
Säilytä viimeksi toimiva profiili ja sen viittaama avustaja suojatussa tallennuksessa molemmat versiot merkittyinä, jotta palautus on kopio eikä uudelleenrakennus pahimmalla mahdollisella hetkellä. Jos avustaja on olemassa vain jakelua tai asiakasversiota varten, joka ei enää tarvitse sitä, poista se käytöstä asetuksen omistavassa kokoonpanossa sen sijaan, että nostaisit oikeuksia, kunnes virheet loppuvat. Se on ulospääsy: vähemmän liikkuvia osia, ei enemmän lupaa.