Kehtetud saladused on konteineri probleem, mitte paroolireegel
Tagasi lükatud volitus ei pruukinud kunagi lüüsini jõudagi. Kõigepealt võrrelge sisendkonteinerit, autentimisetappi ja kontot ennast.
«Kehtetute saladuste» nägemine viib tavaliselt ühe järelduseni: VPN ei armasta kirjavahemärke. See järeldus on tavaliselt vale, sest teade tuleb sageli kohalikust töötlusest enne, kui ükski lüüs on kontole pilgu heitnud. Kaks lahendust edastavad sama parooli, graafiline väli ja volituste fail, ning need nurjuvad eri kohtades. Võrrelge konteinereid enne, kui lihtsustate parooli, mis oli kogu aeg korras.
Viga tuleb enne lüüsi
Kohalik valideerimine, lukustatud saladuste hoidla, puuduv agent ja vigaselt vormistatud volituste fail tekitavad kõik tõrkeid, mida kasutaja kogeb ühe tagasilükkamisena. Ükski neist ei hõlma autentimisserverit. Lüüsi enda tagasilükkamine on eraldi sündmus ja saabub tavaliselt teise teatega ning teisel ajal. See juhtub pärast seda, kui tunnel on olemas ja volitused on edastatud.
Nii et esimene küsimus ei ole, millised märgid on lubatud, vaid kus katse peatus. Klient, kes ei ava kunagi ühendust, ei ole kellegi poolt tagasi lükatud. Kirjutage üles etapp, mida nägite, sest iga järgmine samm sõltub sellest liigitusest.
See eristus muudab ka seda, kes selle parandab. Konteineri probleem kuulub seadmele ja selle omanikule, kontole keeldumine aga sellele, kes haldab autentimise taustaprogrammi.
Võrrelge konteinereid, mitte märke
Graafiline parooliväli, võtmehoidla kirje, kaherealise volituste fail ja automatiseerimise saladus kannavad igaüks sama väärtust erinevas ümbrikus. Ümbrikul on omad reeglid ja tavaliselt just need reeglid katkevad. Väärtus on harva probleem; probleem on väärtuse transport. Hoidke kaks mõtet lahus ja diagnoos lüheneb.
| Where the value stops | What you see | What you check | Who owns the fix |
|---|---|---|---|
| GUI field or managed profile | A validation message before any connection opens | The selected authentication mode and whether the field holds the secret or the username | The device owner or the profile author |
| Keychain or secret agent | A prompt that keeps reappearing, or an agent error | Whether the agent is unlocked and holds an entry for this profile | The user who owns the keychain |
| Two-line credential file | A prompt for a password that was already supplied | Line count, line order and whether a trailing newline is present | Whoever generated the file |
| Shell argument or environment | Works interactively but fails in automation | Whether the shell expanded, trimmed or logged the value | Whoever wrote the automation |
OpenVPN 2.6 kogukonna kliendivalikud kirjeldavad seda kaherealist faili jaoks auth-user-pass, sealhulgas käitumist, kui paroolirida puudub: siis küsib klient ise. See üks detail selgitab tervet teadete klassi tüübis «küsib parooli, mille ma juba andsin». See ütleb ka, et tühi teine rida on tähenduslik olek, mitte kahjutu vormindusvalik.
Jutumärgid on jälle eraldi kiht: tavalise volituste faili jutumärgid salvestatakse andmetena, samal ajal kui kest eemaldab need enne, kui programm midagi näeb. Sama märk on ühes kohas kahjutu ja teises struktuurne. Tabel ei saa öelda, millist konteinerit teie klient kasutas, seega lugege kliendi enda konfiguratsiooni enne rea valimist.
Ka reavahetused on struktuursed. Reavahedega eraldatud väljadega fail ei saa kanda väärtust, mis sisaldab reavahetust, ja see on vormingu piirang, mitte hinnang parooli tugevusele. Kasutage juurutuse toetatud edastusmehhanismi, selle asemel et saladust kärpida, et see improviseeritud faili mahuks.
Looge volituste fail ilma kesta tekitatud kahjustusteta
Kõige turvalisem kohalik tee hoiab saladuse kesta ajaloost ja protsessi argumentide loendist väljas. Lugege mõlemad väljad interaktiivselt, seejärel kirjutage kaks rida, mida klient ootab. Kõik muu võib jääda kergesti üle vaadatavasse konfiguratsioonifaili.
read -r VPN_USER
read -rs VPN_PASS
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client/creds
chmod 600 /etc/openvpn/client/creds
openvpn --config /etc/openvpn/client/office.conf --auth-user-pass /etc/openvpn/client/creds
Kaks esimest käsku loevad kasutajanime ja seejärel parooli ilma seda kuvamata, kolmas kirjutab mõlemad read, neljas piirab faili ja viimane käivitab kliendi selle failiga. Pange tähele, et read -r hoiab alles kurakaldkriipsud, ja see on täpselt selline detail, mis muudab töötava parooli nurjuvaks, kui see välja jätta.
Vältige faili loomist jutumärkideta muutuja või kesta laiendusi täis here-dokumendiga. Mõlemad võivad märke muuta enne, kui need faili jõuavad, ja sellest tulenev tõrge näeb välja nagu VPN-i tagasilükkamine, sest kettal olev parool erineb tõesti paroolist, mida teate. Kui kahtlustate seda, võrrelge faili baitpikkust oodatud väärtusega, ilma saladust ennast välja printimata. Ühe-kahe baidi erinevus on jutumärkide õnnetuse allkiri.
Lugege etapp esimesest veast
Hoidke ühe katse esimene konkreetne teade alles ja liigitage see. Kohalik valideerimisviga, puuduv privaatvõti, kättesaamatu saladusagent ja lüüsil toimunud autentimistõrge on neli erinevat tulemust nelja erineva omanikuga. Ainult üks neist puudutab kontot.
Kui lüüs tõesti lükkab tagasi korrektselt edastatud volituse, kontrollige kontot, autentimise taustaprogrammi ja kõiki nõutavaid väljakutseid administraatoriga. Üldine autentimistõrge ei nimeta ühtegi keelatud märki.
Taastage kinnitatud väärtus õige mehhanismi kaudu, selle asemel et taandada see tähtedeks ja numbriteks. Paroolipoliitika kuulub operaatorile ja vaikselt seda rikkuv möödaminek ei ole parandus. See varjab ka tegelikku viga järgmisel inimesel, kes kohtub sama veaga nõrgema parooliga ja ilma parema ideeta.