Omul, după cum se știe, este o ființă leneșă.
Și cu atât mai mult când vine vorba de alegerea unei parole sigure.
Cred că fiecare dintre administratori s-a confruntat vreodată cu problema utilizării de parole slabe și standard. Acest fenomen este adesea întâlnit în rândul vârfurilor ierarhice ale companiei. Da, da, exact în rândul celor care au acces la informații confidențiale sau comerciale și ar fi extrem de nedorit să se elimine consecințele unei scurgeri/înțelegeri a parolei și incidentele ulterioare.
În practica mea a fost un caz în care, în domeniul Active Directory cu politica de parolă activată, contabilii au ajuns singuri la ideea că o parolă de tipul „Pas$w0rd1234” se potrivește perfect cerințelor politicii. Consecința a fost utilizarea generalizată a acestei parole peste tot. Diferea uneori doar prin setul de cifre.
Mi-aș fi dorit să am posibilitatea nu doar de a activa politica de parolă și de a determina setul de simboluri, ci și de a filtra după un dicționar. Pentru a exclude posibilitatea utilizării unor parole de acest tip.
Compania Microsoft ne informează cu amabilitate printr-un link că oricine știe să folosească corect un compilator, IDE și știe să pronunțe corect C++, poate să compileze singur biblioteca necesară și să o folosească după bunul său plac. Sluga dumneavoastră nu este capabilă să facă asta, așa că a trebuit să caut o soluție gata.
După o oră lungă de căutare, mi-au fost prezentate două variante pentru rezolvarea problemei. Desigur, vorbesc despre o soluție OpenSource. Căci nu lipsesc variantele plătite - de la și până la.
Varianta nr. 1.
Nu au mai fost commit-uri de vreo 2 ani. Instalatorul original funcționează din când în când, trebuie să corectez manual. Creează un serviciu separat. Când actualizez fișierul de parole, DLL-ul nu preia automat conținutul modificat, trebuie să opresc serviciul, să aștept timeout-ul, să editez fișierul, să repornesc serviciul.
Nu este grozav!
Varianta nr. 2.
Proiectul este activ, viu și nici măcar nu trebuie să-l împingi.
Instalarea filtrului constă în copierea a două fișiere și crearea mai multor intrări în registru. Fișierul de parole nu este închis, adică - este disponibil pentru modificare și, conform concepției autorului proiectului, acesta este pur și simplu citit o dată pe minut. De asemenea, prin intermediul unor intrări suplimentare în registru, se poate efectua o configurare suplimentară atât a filtrului în sine, cât și a detaliilor politicii de parole.
Așadar.
Dat: domeniul Active Directory test.local
stația de lucru Windows 8.1 de test (pentru condiția sarcinii - nesemnificativă)
filtrul de parole PassFiltEx
- Descărcăm ultima versiune de pe link
- Copiem PassFiltEx.dll în C:WindowsSystem32 (sau %SystemRoot%System32).
Copiem PassFiltExBlacklist.txt în C:WindowsSystem32 (sau %SystemRoot%System32). Dacă este necesar, completăm cu șabloanele proprii
- Edităm ramura registrului: HKLMSYSTEMCurrentControlSetControlLsa => Notification Packages
Adăugăm PassFiltEx la sfârșitul listei. (Extensia nu trebuie specificată.) Lista completă a pachetelor utilizate pentru verificare va arăta astfel «rassfm scecli PassFiltEx«.
- Rebootăm controlerul de domeniu.
- Repetăm procedura menționată mai sus pentru toate controlerele de domeniu.
De asemenea, se pot adăuga următoarele intrări în registru, ceea ce oferă o flexibilitate mai mare în utilizarea acestui filtr:
Secțiunea: HKLMSOFTWAREPassFiltEx — se creează automat.
- HKLMSOFTWAREPassFiltExBlacklistFileName, REG_SZ, Default: PassFiltExBlacklist.txt
BlacklistFileName — permite specificarea unei căi personalizate către fișierul cu șabloanele de parole. Dacă această intrare în registru are o valoare nulă sau nu există, se va folosi calea implicită, anume — %SystemRoot%System32. Se poate specifica chiar și o cale de rețea, DAR trebuie să țineți minte că fișierul cu șabloane trebuie să aibă permisiuni clare pentru citire, scriere, ștergere, modificare.
- HKLMSOFTWAREPassFiltExTokenPercentageOfPassword, REG_DWORD, Default: 60
TokenPercentageOfPassword — permite specificarea procentului de apariție a unui tipar în noua parolă. În mod implicit, valoarea este de 60%. De exemplu, dacă se specifică un procent de apariție de 60 și în fișierul de șabloane există șirul starwars, atunci parola Starwars1! va fi refuzată, pe când parola starwars1!DarthVader88 va fi acceptată, deoarece procentul de apariție a șirului în parolă este mai mic de 60%
- HKLMSOFTWAREPassFiltExRequireCharClasses, REG_DWORD, Default: 0
RequireCharClasses — permite extinderea cerințelor pentru parole în comparație cu cerințele standard de complexitate ale ActiveDirectory. Cerințele încorporate de complexitate necesită 3 din 5 tipuri diferite de caractere posibile: Majuscule, Minuscule, Cifre, Simbol special și Unicode. Prin intermediul acestei intrări de registru, se pot stabili propriile cerințe de complexitate a parolelor. Valoarea care poate fi specificată este un set de biți, fiecare reprezentând o putere a două.
Asta înseamnă — 1 = minuscule, 2 = majuscule, 4 = cifre, 8 = simbol special, și 16 = caracter Unicode.
Astfel, cu o valoare de 7, cerințele vor fi “Majuscule ȘI minuscule ȘI cifre”, iar cu o valoare de 31 — “Majuscule ȘI minuscule ȘI cifre ȘI simbol special ȘI caracter Unicode”.
Se pot combina chiar și — 19 = “Majuscule ȘI minuscule ȘI caracter Unicode”.
O serie de reguli pentru crearea fișierelor de șabloane:
- Șabloanele sunt insensibile la majuscule. Prin urmare, o înregistrare în fișierul starwars și StarWarS va fi considerată o valoare identică.
- Fișierul de blacklist se citește la fiecare 60 de secunde, astfel că poate fi editat în liniște, iar datele noi vor fi utilizate de filtru în maxim un minut.
- În prezent, nu există suport Unicode pentru verificarea prin șablon. Asta înseamnă că se pot folosi caractere Unicode în parole, dar filtrul nu va funcționa. Nu este critic, pentru că nu am întâlnit utilizatori care să folosească parole în Unicode.
- Este recomandat să nu se permită linii goale în fișierul de șabloane. În debug, se poate observa o eroare când se încarcă date din fișier. Filtrul funcționează, dar de ce să existe excepții inutile?
Pentru debug, în arhivă există batch-uri care permit crearea unui log ce poate fi analizat ulterior, de exemplu,
Acest filtru pentru parole utilizează Event Tracing for Windows.
Providerul ETW pentru acest filtru de parole este 07d83223-7594-4852-babc-784803fdf6c5. Așadar, se poate configura trasarea evenimentelor după următoarea repornire:
logman create trace autosessionPassFiltEx -o %SystemRootbugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets
Trasarea va fi lansată după următoarea repornire a sistemului. Pentru a opri:
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
Toate aceste comenzi sunt specificate în scripturi StartTracingAtBoot.cmd și StopTracingAtBoot.cmd.
Pentru o verificare unică a funcționării filtrului, se poate folosi StartTracing.cmd și StopTracing.cmd.
Pentru a citi confortabil ieșirea de debug a acestui filtru în Microsoft Message Analyzer se recomandă utilizarea următoarelor setări:


La oprirea jurnalului și analiza în Microsoft Message Analyzer totul arată cam așa:

Aici se vede că a existat o încercare de a stabili o parolă pentru utilizator — acest lucru ne este indicat de cuvântul magic SET în debug. Și parola a fost respinsă din cauza prezenței sale în fișierul de șabloane și a unei conformități mai mari de 30% cu textul introdus.
În cazul unei încercări reușite de schimbare a parolei vedem următoarele:

Există o anumită neplăcere pentru utilizatorul final. La încercarea de a schimba o parolă care se află pe lista fișierului de șabloane, mesajul de pe ecran nu diferă prin inteligență de mesajul standard în cazul neîndeplinirii politicii de parolă.

Așadar, fiți pregătiți pentru apeluri și strigăte: „Am introdus parola corect, dar nu funcționează.”
Concluzie.
Această bibliotecă permite interzicerea utilizării parolelor simple sau standard în domeniul Active Directory. Să spunem „Nu!” parolelor de tip: „P@ssw0rd”, „Qwerty123”, „ADm1n098”.
Da, fără îndoială, utilizatorii vă vor aprecia și mai mult pentru grija față de securitatea lor și necesitatea de a inventa parole greu de descifrat. Și, poate, numărul apelurilor și cererilor de ajutor legate de parolă va crește. Dar pentru securitate trebuie să plătiți.
Linkuri către resursele utilizate:
Articol pe Microsoft privind biblioteca personalizată de filtre pentru parole:
PassFiltEx:
Link către versiune:
Liste de parole:
DanielMiessler liste:
Lista de cuvinte de la weakpass.com:
Lista de cuvinte din repo-ul berzerk0:
Microsoft Message Analyzer:
Sursa: habr.com
