--csd-wrapper-valitsimen lisääminen profiiliin antaa paikallisen skriptin taustapalvelulle, joka suorittaa sen kirjautumisen aikana, joten edessäsi oleva päätös on koodikatselmus, ei asetusvalitsin. Valitsin on olemassa, jotta yhdyskäytävän isäntätarkistuskomponentti voidaan korvata, ja se ottaa polun toimittamaasi skriptiin. Kaikki alla olettaa, että käyttöönoton omistaja on jo kertonut, mikä tilatarkistus vaaditaan; jos se osa on vielä auki, ratkaise se ensin. Oppaassa on neljä vaihetta: paikanna epäonnistunut vaihe, lue skripti, valitse identiteetti, jolla se suoritetaan, ja todista tulos.

Vaihe 1: Paikanna epäonnistunut vaihe

Asiakkaan viimeinen viesti koskee yleensä evästettä, joka on ketjun loppu eikä sen alku. HTTPS-kirjautuminen, palvelimen varmenteen tarkistus, todennuksen vaihto ja tilakomponentti ovat kaikki tuon viestin edessä.

Kirjaa käytössä oleva versio ja kirjautumisosoite ja toista yritys pitäen yksityiskohtainen tuloste omassa päätteessäsi. Lue ensimmäinen virhe, joka ei ole uusintayritys, älä litteroinnin viimeistä riviä. Jos loki pysähtyy ennen kuin mitään arviointikomponenttia nimetään, kääre ei ole vielä ongelmasi. Sen lisääminen siinä vaiheessa vain laajentaa pintaa, jota sinun on myöhemmin puolustettava.

openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/null

Pidä litterointi paikallisena, koska evästeet ja todennusvastaukset ovat pääsymateriaalia. Keskusteluun liitetty jälki on tunnistetietojen vuoto, vaikka arviointivaihe näyttäisi vaarattomalta. Jaa virheteksti ja kohta työnkulussa, jossa se ilmeni, älä koskaan hyötykuormaa.

Vaihe 2: Lue skripti ennen kuin se päätyy profiiliin

Kääre on yhtä luotettava kuin katselmoimasi versio, joten kiinnitä se versio ja tallenna sen hash hyväksyntämuistion viereen. Kaksi alla olevaa komentoa antavat sormenjäljen ja halvan syntaksitarkistuksen ennen kuin luet yhtäkään riviä. Ne antavat myös seuraavalle henkilölle kiinteän viitteen, millä on merkitystä, kun tiedosto elää paketinhallinnan ulkopuolella. Kumpikaan komento ei kerro, mitä skripti tekee, joten suorita ne ja jatka lukemista.

sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.sh

Lue koko tiedosto pitäen mielessäsi neljä kysymystä: tekeekö se lähteviä HTTP-kutsuja, lukeeko se tunnistetiedostotiedostoja tai ympäristömuuttujia, kirjoittaako se väliaikaisen hakemiston ulkopuolelle ja raportoiko jokin haara hyväksytystä tilasta mittaamatta mitään. Viimeinen malli on käytännön kiertäminen, johon on liitetty lokirivi. Kopioidut kääreet salakuljettavat sen yleensä uskottavalta näyttävän tarkistuksen taakse. Jos skripti päättää, että laite on kunnossa ennen kuin se katsoo laitetta, pysähdy siihen.

Tarkista myös pakatut hyötykuormat, koska luettava otsikko ei todista mitään tiedoston lopusta. Skriptin lataaminen foorumiketjusta ei tee siitä luotettavaa vain siksi, että sen nimi kaikuu todellista isäntätarkistuskomponenttia. Kirjaa, kuka sen asensi, mistä se tuli ja miten sitä päivitetään.

grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.sh

Vaihe 3: Valitse identiteetti, jolla kääre suoritetaan

--csd-user laskee käyttöoikeuksia, kun CSD-, TNCC- tai HIP-ohjelma suoritetaan. Tämä tili on osa paikallista suoritusjärjestelyä, ei yhdyskäytävälle lähetettävä käyttäjänimi.

Anna kääreelle erillinen tili ilman interaktiivista kuorta, ilman sudo-oikeuksia ja ilman ryhmäjäsenyyksiä, joita se ei tarvitse. Myönnä lukuoikeus skriptiin ja niihin tiedostoihin, joita se tarkistaa, ja testaa sitten oikeuksien lasku ennen kuin kosket VPN-profiiliin. Ongelman löytäminen täältä on halvempaa kuin sen löytäminen asiakkaan sisältä.

sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.sh

Käyttöoikeuksien laskeminen rajoittaa vahinkoa, jonka huono skripti voi aiheuttaa. Se ei katselmoi koodia, tee raportista totuudenmukaista eikä osoita, että yhdyskäytävän ylläpitäjä hyväksyy tämän toteutuksen laitekäytännön täyttämiseksi.

Vaihe 4: Pidä muutos palautettavana

Varmuuskopioi profiili ennen sen muokkaamista ja pidä kääre versiohallinnassa, jotta palautus palauttaa tunnetun hashin kopion etsimisen sijaan. Kirjoita skriptin polku, hash, suorituskäyttäjä ja hyväksyjä yhteen paikkaan.

Palauta poistamalla valitsin, käynnistämällä asiakas uudelleen ja varmistamalla, että alkuperäinen virhe palaa. Jos yhdyskäytävä yhä hylkää kirjautumisen palautuksen jälkeen, myös jotain muuta on muuttunut, ja tuon eron löytäminen tulee ennen kääreen uutta yritystä. Pidä edellinen kopio koko muutosikkunan ajan, mikä useimmille tiimeille tarkoittaa seuraavan huoltoikkunan ohittumiseen asti.

Onnistuneen käyttöönoton jälkeen tarkista kaksi asiaa yhden sijaan: tunneli nousee, ja laite, jonka pitäisi epäonnistua tilatarkistuksessa, hylätään edelleen. Yhteyden toimiminen kaikille ei ole todiste siitä, että arviointi selvisi muutoksestasi.

Oikoteitä, jotka luovat toisen ongelman

Älä anna apurin raportoida vaatimustenmukaista tilaa suorittamatta vaadittuja tarkistuksia, äläkä ohita alustan identiteettiä toisen käyttöjärjestelmän mukaiseksi. Väite eri alustasta ei ole todiste siitä, että todellinen laite täyttää käytännön. Se jättää sinulle asiakkaan, joka valehtelee jokaisella tulevalla kirjautumisella.

Palvelimen varmennuksen poistaminen käytöstä, vanhan evästeen toistaminen ja katselmoimattomien skriptien pinoaminen vaihtavat kaikki näkyvän epäonnistumisen näkymättömään. Jos asennettu asiakas ei voi suorittaa tuettua työnkulkua, pyydä hyväksytty vaihtoehto sen sijaan, että taivutat olemassa olevaa.

OpenConnectin käsikirja kuvaa --csd-wrapper ja --csd-user erikseen, ja se on se vihje, jolla on merkitystä: skripti ja identiteetti ovat kaksi päätöstä. Katselmoi ne erikseen ja kirjoita molemmat muistiin. Silloin kirjautumiskehote lakkaa olemasta arvoitus, jonka ratkaiset liittämällä koodia.

Aiheeseen liittyvät artikkelit