OpenVPN žádá uživatelské jméno a heslo na řídicím terminálu a soubor přesměrovaný na standardní vstup tímto terminálem není. Ten jediný detail vysvětluje skript, který visí, i když heslo leží přímo v rouře. Výzvu kreslí klient a čtení probíhá z terminálového zařízení, takže přesměrování stdin nic nemění. Nasyťte klienta jedním z jeho dokumentovaných vstupů a tentýž skript se připojí napoprvé.

Tři vstupy pokrývají téměř každý případ a každý selhává po svém. Vybírejte podle výzvy, kterou klient skutečně zobrazuje, ne podle volby, která se nejsnáze skriptuje.

Výzva nepřichází ze stdin

Když OpenVPN potřebuje přihlašovací údaje, otevře řídicí terminál a čte tam. Proto interaktivní test vypadá dobře a stejný příkaz pod cronem nebo unit souborem stojí nečinně s výzvou zapsanou v logu, který nikdo nesleduje. Některé buildy padají zpět na standardní vstup, když terminál neexistuje, a tahle nekonzistence je horší než tvrdé selhání, protože skrývá problém až do nasazení.

Prozkoumejte prostředí dřív, než napíšete jakýkoli kód: spusťte klienta pod stejným uživatelem a se stejným stdin, s jakým ho spustí plánovač nebo správce služeb. Pokud se výzva v logu nikdy neobjeví a proces nepostupuje, něco čeká na terminál, který neexistuje.

První vstup: soubor s údaji o dvou řádcích

Volba pro ověření bere cestu a soubor obsahuje přesně dva řádky, nejdřív uživatelské jméno, pak heslo, a nic jiného. Předejte cestu výslovně místo spoléhání na výchozí název souboru, protože zbloudilý soubor s údaji v pracovním adresáři je způsob, jak se do použití dostane špatný účet. Nastavte režim 0600 a vlastnictví přiřaďte účtu, který klienta spouští.

Klient ten soubor čte jednou při startu, takže rotace hesla znamená restart procesu. To je obvykle chování, které chcete, a patří do runbooku vedle postupu rotace.

Druhý vstup: askpass pro heslo ke klíči

Soukromý klíč chráněný heslem vyvolá druhou, jinou výzvu a ta má svou vlastní odpověď ze souboru: volba askpass čte heslo z prvního řádku souboru. Pro tunely založené na SSH je ekvivalentem program askpass, který klient spouští, a jeho standardní výstup se stane tajemstvím.

Ani jedna forma nedává tajemství do seznamu argumentů a obě ho nechávají existovat jako soubor nebo jako spustitelný soubor, který ho vypíše. Ochranou jsou oprávnění souboru a vlastnictví procesu, ne neznalost. Pomocník, který opakuje řetězec zapečený v kódu, je tajemství s kroky navíc.

Třetí vstup: vlastní CLI portálového klienta

Podnikoví klienti obvykle dodávají vstupní bod v příkazovém řádku, který se připojuje k pojmenovanému portálu bez okna, a to je podporovaná cesta. V Linuxu klient GlobalProtect vystavuje operace připojení a importu certifikátu přes své CLI a portály s certifikátovým ověřováním potřebují krok importu, než může automatizované připojení fungovat. Dejte mu přednost před syntetizovanými stisky kláves: získáte skutečný návratový stav, žádnou závislost na fokusu okna a přežije uzamčenou obrazovku.

Pokud první připojení stále potřebuje člověka, aby přijal certifikát, automatizace není hotová. Proveďte import během nastavení a zapište ho jako předpoklad.

Když tok potřebuje pseudo-terminál

Sekvence, která žádá heslo a pak jednorázový kód, nemá jediný soubor ke čtení. Terminálový ovladač jako Expect je správný nástroj, protože čeká na každý vzor postupně, a potřebuje spuštěný proces, než vůbec může něco porovnat.

Převládají dvě selhání. Skript, který čeká na výzvu, aniž by spustil klienta, čeká věčně, a Tcl není shell, takže shellová aritmetika napsaná uvnitř bloku expect se nevyhodnocuje tak, jak se čte. Nechte během stavby vzorů zapnutý přepínač ladění a pak ho vypněte.

Tajemství, která unikají, a kde se skrývají

Cokoli předané jako argument je vidět v seznamu procesů, takže přihlašovací údaje patří do souboru nebo za pomocníka, nikdy na příkazový řádek. Jednorázové kódy se spotřebovávají konstrukčně a musí se vytvořit pro každý pokus. Protokoly selhání často nesou uživatelské jméno a někdy víc, takže je redigujte, než je někam pošlete, a držte tajemství mimo samotný profil, protože konfigurační soubor s vloženým heslem se ocitne v tiketech a repozitářích. Rotace účtu pak znamená hon na každou kopii, což je přesně cena, které se tohle uspořádání vyhýbá.

Zkontrolujte vstupy, které jste vybrali, a pak je zapojte do unit souboru nebo plánovače, který klienta skutečně spustí. Tunel žije přesně tak dlouho jako ten proces.

Související články