auth-nocache cu un fișier de acreditări: ajută sau dăunează?
auth-nocache aruncă acreditările solicitate din memorie. Când parola stă într-un fișier, avertismentul înseamnă mai puțin, iar opțiunea poate rupe renegocierea.
OpenVPN tipărește la pornire un avertisment care sugerează auth-nocache, iar răspunsul tentant este să adaugi opțiunea și să privești cum linia dispare. Sfatul acela presupune o autentificare interactivă. Odată ce numele de utilizator și parola trăiesc într-un fișier, comparația se schimbă: opțiunea nu mai protejează copia durabilă, iar pe un client care renunță la privilegii poate rupe mai târziu renegocierea. Două modele de stocare merită ținute separat înainte de a edita un profil.
Două moduri de a răspunde cererii de acreditări
Primul model este o persoană care tastează acreditări într-un terminal, sau o interfață de administrare care le ține pentru sesiune. OpenVPN păstrează acea copie ca să poată răspunde la următoarea renegociere fără să mai întrebe, și exact despre asta este avertismentul. Nimic de pe disc nu este implicat, așa că singurul lucru de protejat este procesul care ține valoarea. Închide clientul și copia dispare cu el.
Al doilea model este auth-user-pass care indică un fișier, unde fișierul este depozitul și clientul îl citește când este nevoie de o valoare. Expunerea care contează aici nu este memoria procesului, ci permisiunile și proprietarul acelui fișier. Avertismentul de pornire vine din directivele din configurație, nu dintr-o inspecție a modului în care furnizezi parola, așa că apare în ambele modele și nu indică niciunul.
Restul acestei comparații decurge din acea separare: gestionarea memoriei pentru un model, gestionarea fișierului și identitatea procesului pentru celălalt.
Ce aruncă de fapt auth-nocache
La o autentificare interactivă, --auth-nocache elimină copia stocată din memorie după ce a fost folosită. Costul este o cerere nouă la fiecare interval de renegociere, pentru că runda următoare nu poate refolosi ce a fost aruncat.
La o autentificare bazată pe fișier clientul poate reciti fișierul, așa că aruncarea este în mare parte invizibilă. Devine vizibilă într-un singur loc în care oamenii nu se așteaptă: după ce demonul renunță la privilegii, dacă fișierul de acreditări nu este lizibil de contul sub care rulează acum.
Adaugă opțiunea pentru că înțelegi acest schimb, nu pentru că a apărut un avertisment. O opțiune adăugată ca să facă un jurnal mai silențios este o opțiune al cărei efect nimeni nu l-a măsurat.
Unde se rupe calea bazată pe fișier
Un client care pornește ca root pentru a deschide dispozitivul de tunel și apoi trece la user și group citește fișierul de acreditări de două ori: o dată înainte de trecere, o dată la renegocierea care urmează. Dacă fișierul are modul 600 și aparține root, a doua citire eșuează, iar eșecul apare o oră mai târziu ca o eroare de autentificare care arată ca o problemă de server. Verifică jurnalul clientului în jurul intervalului de renegociere, apoi verifică împreună contul și fișierul.
stat -c '%a %U:%G' /etc/openvpn/client.creds
ps -o user:12,args -C openvpn | headAmbele linii contează. Prima îți spune cine poate citi fișierul, a doua îți spune cine este de fapt demonul care rulează, iar o nepotrivire între ele explică un eșec pe care nicio rescriere a parolei nu îl va repara.
Corecțiile practice nu sunt spectaculoase: mută fișierul într-un director și la un proprietar pe care contul demonului le poate citi, sau păstrează citirea privilegiată și confirmă că clientul tău citește o singură dată. Nu rezolva asta făcând fișierul lizibil pentru toți.
Cazul care chiar vrea opțiunea
O autentificare care poartă un cod de unică folosință vrea auth-nocache dintr-un alt motiv. Un cod de unică folosință este consumat de prima autentificare, așa că o copie din cache este inutilă la următoarea renegociere, iar o valoare învechită ar putea chiar fi redată din nou.
Este o întrebare despre tipul acreditării, nu despre unde este stocată. O parolă statică într-un fișier protejat are profilul opus: trebuie să fie lizibilă la fiecare renegociere, iar protecția de care ai nevoie este pe fișier.
Ține cele două motive separate în comentariile profilului, altfel următorul administrator va presupune că opțiunea este acolo din motivul pe care l-ar fi ales el.
Comparația într-o singură decizie
Alege modelul interactiv când există o persoană și prospețimea contează, și acceptă cererea repetată ca preț al lui. Alege modelul fișier când clientul rulează nesupravegheat, și investește efortul în proprietate, mod și renunțarea la privilegii.
Niciun model nu face o parolă stocată sigură de unul singur și niciunul nu face avertismentul de pornire semnificativ.
Dacă avertismentul este singurul motiv pentru care ai deschis profilul, notează decizia în locul unei opțiuni neexplicate: acreditările vin dintr-un fișier pe care contul demonului îl poate citi, o renegociere a fost văzută reușind, iar secțiunea despre renegociere din manualul OpenVPN 2.6 a fost citită înainte de a-i schimba intervalul. Acea notă supraviețuiește oricărui fanion individual.