OpenVPN traži korisničko ime i lozinku na kontrolnom terminalu, a datoteka preusmjerena na standardni ulaz nije taj terminal. Taj jedan detalj objašnjava skriptu koja se zauvijek čeka dok lozinka stoji upravo tamo u cijevi. Upit ispisuje klijent, a čitanje se uzima s terminalnog uređaja, pa preusmjeravanje stdin-a ne mijenja ništa. Nahranite klijent kroz jedan od njegovih dokumentiranih ulaza i ista skripta će se povezati iz prvog pokušaja.

Tri ulaza pokrivaju skoro svaki slučaj, i svaki pada na svoj način. Birajte prema upitu koji klijent zaista prikazuje, ne prema opciji koju je najlakše skriptirati.

Upit ne dolazi sa stdin-a

Kada OpenVPN-u trebaju akreditivi, otvara kontrolni terminal i čita tu. Zato interaktivni test izgleda dobro, a ista naredba pod cron-om ili unit datotekom stoji besposlena s upitom upisanim u log koji niko ne gleda. Neke gradnje se vraćaju na standardni ulaz kada terminal ne postoji, a ta nedosljednost je gora od tvrdog pada jer skriva problem do uvođenja.

Provjerite okruženje prije nego napišete bilo kakav kod: pokrenite klijent pod istim korisnikom, s istim stdin-om, kao što će to raditi planer ili upravitelj servisa. Ako se upit nikad ne pojavi u logu i proces ne napreduje, nešto čeka terminal koji ne postoji.

Prvi ulaz: datoteka s akreditivima od dva reda

Opcija autentifikacije prima putanju, a datoteka sadrži tačno dva reda, korisničko ime pa lozinku, i ništa drugo. Proslijedite putanju izričito umjesto da se oslanjate na zadano ime datoteke, jer zalutala datoteka s akreditivima u radnom direktoriju je način na koji pogrešan račun završi u upotrebi. Postavite način na 0600 i dajte vlasništvo računu koji pokreće klijent.

Klijent čita tu datoteku jednom pri pokretanju, pa rotiranje lozinke znači ponovno pokretanje procesa. To je obično ponašanje koje želite, i ono pripada u runbook uz proceduru rotacije.

Drugi ulaz: askpass za lozinku ključa

Privatni ključ zaštićen lozinkom pokreće drugi, drugačiji upit, i on ima svoj odgovor iz datoteke: opcija askpass čita lozinku iz prvog reda datoteke. Za tunele zasnovane na SSH ekvivalent je askpass program koji klijent izvršava, i čiji standardni izlaz postaje tajna.

Nijedan oblik ne stavlja tajnu u listu argumenata, i oba je ostavljaju da postoji kao datoteka ili kao izvršna datoteka koja je ispisuje. Zaštita su dozvole datoteke i vlasništvo procesa, ne tajnovitost. Pomoćnik koji odjekuje niz upisan u kod je tajna s dodatnim koracima.

Treći ulaz: vlastiti CLI portala

Poslovni klijenti obično isporučuju ulaznu točku u naredbenom retku koja se povezuje s imenovanim portalom bez ikakvog prozora, i to je podržani put. Na Linuxu GlobalProtect klijent izlaže operacije povezivanja i uvoza certifikata kroz svoj CLI, a portali koji koriste autentifikaciju certifikatom trebaju korak uvoza prije nego automatizirano povezivanje može raditi. Preferirajte ga umjesto sintetiziranih pritisaka tipki: dobijate pravi izlazni status, bez zavisnosti od fokusa prozora, i preživljava zaključan ekran.

Ako prvo povezivanje još traži čovjeka da prihvati certifikat, automatizacija nije gotova. Obavite uvoz tokom postavljanja i zabilježite ga kao preduvjet.

Kada tok zahtijeva pseudo-terminal

Slijed koji traži lozinku pa jednokratni kod nema jednu datoteku za čitanje. Terminalni upravljač kao Expect je pravi alat jer čeka svaki uzorak redom, i potrebno mu je da proces bude pokrenut prije nego što uopće može nešto upariti.

Dva neuspjeha dominiraju. Skripta koja čeka upit bez pokretanja klijenta čeka vječno, a Tcl nije ljuska, pa se aritmetika ljuske napisana unutar expect bloka ne izračunava onako kako se čita. Držite zastavicu za otklanjanje grešaka uključenom dok gradite uzorke, pa je isključite.

Tajne koje cure, i gdje se skrivaju

Sve što se prenese kao argument vidljivo je na listi procesa, pa akreditivi pripadaju u datoteku ili iza pomoćnika, nikad na naredbeni redak. Jednokratni kodovi se troše po dizajnu i moraju se proizvesti za svaki pokušaj. Logovi neuspjeha često nose korisničko ime a ponekad i više, pa redigirajte prije nego ih bilo gdje pošaljete, i držite tajnu izvan samog profila, jer konfiguracijska datoteka s ugrađenom lozinkom završi zalijepljena u tikete i repozitorije. Rotiranje računa tada znači lov na svaku kopiju, a to je upravo trošak koji ovaj raspored izbjegava.

Provjerite ulaze koje ste odabrali, pa ih povežite s unit datotekom ili planerom koji će klijent zaista pokretati. Tunel živi tačno onoliko koliko živi taj proces.

Povezani članci