OpenVPN pieprasa lietotājvārdu un paroli vadošajā terminālī, un fails, kas pārvirzīts uz standarta ievadi, nav šis terminālis. Šī vienīgā detaļa izskaidro skriptu, kas karājas, lai gan parole atrodas tieši caurulē. Uzvedni zīmē klients, un nolasīšana notiek no termināļa ierīces, tāpēc stdin pārvirzīšana neko nemaina. Padodiet klientam ievadi pa vienu no tā dokumentētajiem ievades ceļiem, un tas pats skripts izveidos savienojumu pirmajā mēģinājumā.

Trīs ceļi aptver gandrīz visus gadījumus, un katrs neizdodas savā veidā. Izvēlieties pēc uzvednes, ko klients patiešām rāda, nevis pēc opcijas, kuru visvieglāk skriptēt.

Uzvedne nenāk no stdin

Kad OpenVPN vajag akreditācijas datus, tas atver vadošo termināli un lasa tur. Tāpēc interaktīvs tests izskatās labi, bet tā pati komanda zem cron vai unit faila stāv nekustīgi, un uzvedne ir ierakstīta žurnālā, kuru neviens neskatās. Dažas būves atgriežas pie standarta ievades, ja termināļa nav, un šī nekonsekvence ir sliktāka par cietu kļūmi, jo tā slēpj problēmu līdz izvietošanai.

Pārbaudiet vidi pirms jebkāda koda rakstīšanas: palaidiet klientu ar to pašu lietotāju un to pašu stdin, kā to darīs plānotājs vai pakalpojumu pārvaldnieks. Ja uzvedne nekad neparādās žurnālā un process nevirzās uz priekšu, kaut kas gaida termināli, kura nav.

Pirmais ceļš: akreditācijas datu fails ar divām rindām

Autentifikācijas opcija ņem ceļu, un failā ir tieši divas rindas: vispirms lietotājvārds, pēc tam parole, un nekas cits. Norādiet ceļu skaidri, nevis paļaujieties uz noklusējuma faila nosaukumu, jo aizmaldījies akreditācijas datu fails darba direktorijā ir veids, kā lietošanā nonāk nepareizais konts. Iestatiet režīmu uz 0600 un piešķiriet īpašumtiesības kontam, kas palaiž klientu.

Klients šo failu nolasa vienu reizi palaišanas laikā, tāpēc paroles maiņa nozīmē procesa atsākšanu. Parasti tā ir vēlamā uzvedība, un tas pieder runbook pie maiņas procedūras.

Otrais ceļš: askpass atslēgas paroles frāzei

Ar paroles frāzi aizsargāta privātā atslēga izraisa otru, citādu uzvedni, un tai ir sava failā balstīta atbilde: opcija askpass nolasa frāzi no faila pirmās rindas. SSH balstītiem tuneļiem ekvivalents ir askpass programma, ko izpilda klients un kuras standarta izvade kļūst par noslēpumu.

Neviena no formām neliek noslēpumu argumentu sarakstā, un abas atstāj to pastāvēt kā failu vai kā izpildāmu programmu, kas to izdrukā. Aizsardzība ir faila atļaujas un procesa īpašumtiesības, nevis nezināmība. Palīgs, kas atbalso kodā ierakstītu virkni, ir noslēpums ar papildu soļiem.

Trešais ceļš: paša portāla klienta CLI

Uzņēmuma klienti parasti nodrošina komandrindas ieejas punktu, kas savienojas ar nosauktu portālu bez jebkāda loga, un tas ir atbalstītais ceļš. Linux GlobalProtect klients savā CLI piedāvā savienošanas un sertifikāta importēšanas darbības, un portāliem, kas izmanto sertifikātu autentifikāciju, pirms automatizēta savienojuma darbības ir vajadzīgs importēšanas solis. Dodiet priekšroku tam, nevis sintētiskiem taustiņu nospiedumiem: jūs iegūstat īstu iziešanas statusu, nav atkarības no loga fokusa, un tas pārdzīvo bloķētu ekrānu.

Ja pirmajam savienojumam joprojām vajag cilvēku, lai pieņemtu sertifikātu, automatizācija nav pabeigta. Veiciet importēšanu iestatīšanas laikā un pierakstiet to kā priekšnosacījumu.

Kad plūsmai vajag pseidotermināli

Secībai, kas prasa paroli un pēc tam vienreizēju kodu, nav viena faila, ko lasīt. Termināļa draiveris, piemēram, Expect, ir pareizais rīks, jo tas pēc kārtas gaida katru paraugu, un tam vajag palaistu procesu, pirms tas vispār var kaut ko saskaņot.

Dominē divas kļūmes. Skripts, kas gaida uzvedni, nepalaidis klientu, gaida mūžīgi, un Tcl nav shell, tāpēc shell aritmētika, kas ierakstīta expect blokā, netiek novērtēta tā, kā tā tiek lasīta. Turiet atkļūdošanas karodziņu ieslēgtu, kamēr veidojat paraugus, un pēc tam izslēdziet to.

Noslēpumi, kas noplūst, un kur tie slēpjas

Viss, kas tiek nodots kā arguments, ir redzams procesu sarakstā, tāpēc akreditācijas datiem vieta ir failā vai aiz palīga, nekad komandrindā. Vienreizējie kodi tiek patērēti pēc dizaina, un tie ir jāizveido katram mēģinājumam. Kļūmju žurnāli bieži satur lietotājvārdu un dažkārt arī vairāk, tāpēc rediģējiet tos pirms sūtīšanas jebkur, un turiet noslēpumu ārpus paša profila, jo konfigurācijas fails ar iegultu paroli tiek ielīmēts biļetēs un repozitorijos. Konta maiņa tad nozīmē katras kopijas medības, un tieši šīs izmaksas šis izkārtojums izvairās.

Auditējiet izvēlētos ceļus un pēc tam pieslēdziet tos unit failam vai plānotājam, kas klientu patiešām palaidīs. Tunelis dzīvo tieši tik ilgi, cik dzīvo šis process.

Saistītie raksti