Čovjek je, kao što je poznato, biće lijeno.
A pogotovo kada se radi o izboru sigurnih lozinki.
Mislim da se svaki administrator barem jednom susreo s problemom korištenja slabih i standardnih lozinki. Ova pojava se često može vidjeti među višim menadžmentom kompanije. Da, da, upravo kod onih koji imaju pristup povjerljivim ili poslovnim informacijama i bilo bi krajnje nepoželjno rješavati posljedice provale ili curenja lozinki i daljnjih incidenata.
U mojoj praksi bio je slučaj kada su u Active Directory domeni s uključenom politikom lozinki, ljudi, posebno računovođe, sami došli na ideju da lozinka poput "Pas$w0rd1234" savršeno zadovoljava zahtjeve politike. Posljedica je bilo široko korištenje te lozinke svugdje i bez obzira. Razlikovala se ponekad samo skupom brojeva.
Jako sam želio imati mogućnost ne samo uključiti politiku lozinki i definirati skup znakova, već i filtrirati prema rječniku. Da isključim mogućnost korištenja takvih lozinki.
Tvrtka Microsoft ljubazno nas obavještava putem linka da svatko tko zna kako pravilno koristiti kompajler, IDE i zna pravilno izgovoriti C++, može samostalno skompajlirati potrebnu biblioteku i koristiti je prema svom nahođenju. Vaš ponizni sluga nije sposoban za tako nešto, pa je morao tražiti gotova rješenja.
Nakon dugog sata pretraživanja, pred mojim očima su se pojavila dva rješenja problema. Naravno, govorim o OpenSource rješenju. Jer plaćenih varijanti — od i do.
Opcija br. 1.
Već 2 godine nema novih commita. Izvorni instalater radi jednom od dvadeset, treba ga ručno popraviti. Stvara svoju posebnu uslugu. Kada se ažurira datoteka s lozinkama, DLL automatski ne preuzima izmijenjeni sadržaj, potrebno je zaustaviti uslugu, čekati timeout, uređivati datoteku, pokrenuti uslugu.
Nije sjajno!
Opcija br. 2.
Projekt je aktivan, živ i ne treba ga čak ni poticati.
Instalacija filtra sastoji se od kopiranja dvije datoteke i stvaranja nekoliko unosa registra. Datoteka lozinki nije zaključana, što znači da je dostupna za uređivanje i, prema zamisli autora projekta, jednostavno se učitava svake minute. Također, uz pomoć dodatnih unosa registra može se izvršiti dodatna konfiguracija kako samog filtra, tako i nijansi politike lozinki.
Dakle.
Dano: domena Active Directory test.local
testna radna stanica Windows 8.1 (za uvjete zadatka — nebitno)
filtriranje lozinki PassFiltEx
- Preuzimamo posljednju verziju putem veze
- Kopiramo PassFiltEx.dll u C:WindowsSystem32 (ili %SystemRoot%System32).
Kopiramo PassFiltExBlacklist.txt u C:WindowsSystem32 (ili %SystemRoot%System32). Ako je potrebno, dodajemo svoje predloške
- Uređujemo granu registra: HKLMSYSTEMCurrentControlSetControlLsa => Notification Packages
Dodajemo PassFiltEx na kraj popisa. (Nije potrebno navoditi ekstenziju.) Cijeli popis paketa koji se koriste za provjeru izgledat će ovako:rassfm scecli PassFiltEx«.
- Ponovno pokrećemo kontroler domene.
- Ponovimo gornju proceduru za sve kontrolere domene.
Također, može se dodati sljedeće unose registra koji omogućuju veću fleksibilnost u korištenju ovog filtra:
Odjeljak: HKLMSOFTWAREPassFiltEx — stvara se automatski.
- HKLMSOFTWAREPassFiltExBlacklistFileName, REG_SZ, Zadano: PassFiltExBlacklist.txt
BlacklistFileName — omogućuje određivanje prilagođene putanje do datoteke s predlošcima lozinki. Ako je ova stavka registra prazna ili ne postoji, koristi se putanja po zadatku, a to je — %SystemRoot%System32. Može se navesti čak i mrežna putanja, ali treba imati na umu da datoteka s predlošcima mora imati jasne dozvole za čitanje, pisanje, brisanje, izmjenu.
- HKLMSOFTWAREPassFiltExTokenPercentageOfPassword, REG_DWORD, Zadano: 60
TokenPercentageOfPassword — omogućuje određivanje procentualnog udjela maske u novoj lozinki. Po zadatku, vrijednost iznosi 60%. Na primjer, ako je određeno procentualno udjelovanje 60 i u datoteci s predlošcima postoji redak starwars, tada će lozinka Starwars1! biti odbijena, dok će lozinka starwars1!DarthVader88 biti prihvaćena, jer je procentualni udjel niza u lozinci manji od 60%
- HKLMSOFTWAREPassFiltExRequireCharClasses, REG_DWORD, Zadano: 0
RequireCharClasses — omogućuje proširiti zahtjeve za lozinkama u odnosu na standardne zahtjeve složenosti lozinki ActiveDirectory. Ugrađeni zahtjevi složenosti zahtijevaju 3 od 5 mogućih različitih vrsta znakova: Velika slova, Mala slova, Broj, Poseban i Unicode. Ovim unosom u registar mogu se postaviti vlastiti zahtjevi za složenost lozinki. Vrijednost koju možete naznačiti je skup bitova, pri čemu svaki od njih predstavlja odgovarajuću potenciju broja dva.
Dakle — 1 = mala slova, 2 = velika slova, 4 = broj, 8 = poseban znak, a 16 = Unicode znak.
Tako da će pri vrijednosti 7 zahtjevi biti 'Velika slova AND mala slova AND broj', a pri vrijednosti 31 — 'Velika slova AND mala slova AND broj AND poseban znak AND Unicode znak'.
Možete čak i kombinirati — 19 = 'Velika slova AND mala slova AND Unicode znak'.
Niz pravila za sastavljanje datoteka predložaka:
- Predlošci su neovisni o velikim i malim slovima. Stoga će zapis u datoteci starwars i StarWarS biti smatran istom vrijednošću.
- Datoteka crne liste se prepisuje svake 60 sekundi, tako da je moguće lako uređivati, a nakon minute će nove podatke već koristiti filtar.
- Trenutno nema podrške za Unicode za provjeru prema predlošku. To jest, korištenje Unicode znakova u lozinkama je moguće, ali filtar se neće aktivirati. To nije kritično, jer nisam vidio korisnike koji koriste lozinke u Unicode-u.
- Preporučljivo je ne dopuštati prazne redke u datoteci predložaka. U debagiranju se kasnije može vidjeti greška kada se učitavaju podaci iz datoteke. Filtar radi, ali zašto dodatne iznimke?
Za debagiranje u arhivi se nalaze shell skripte koje omogućuju stvaranje loga i kasnije njegovu analizu pomoću, na primjer,
Ovaj filtar lozinki koristi Event Tracing for Windows.
ETW davatelj za ovaj filtar lozinki — 07d83223-7594-4852-babc-784803fdf6c5. Tako, na primjer, možete postaviti praćenje događaja nakon sljedećeg ponovnog pokretanja:
logman create trace autosessionPassFiltEx -o %SystemRootbugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets
Praćenje će započeti nakon sljedećeg ponovnog pokretanja sustava. Da biste zaustavili:
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
Sve ove naredbe su navedene u skriptama StartTracingAtBoot.cmd i StopTracingAtBoot.cmd.
Za jednokratnu provjeru rada filtra možete koristiti StartTracing.cmd i StopTracing.cmd.
Kako biste lakše čitali ispis debagiranja ovog filtera u Microsoft Message Analyzer preporučuje se koristiti sljedeće postavke:


Kada zaustavite zapis i analizu u Microsoft Message Analyzer sve izgleda otprilike ovako:

Ovdje se vidi da je bila pokušana postavka lozinke za korisnika — o tome nam govori čarobna riječ SET u debagiranju. I lozinka je odbijena zbog njenog prisustva u datoteci obrazaca i više od 30% podudaranja u unosu teksta.
Pri uspješnom pokušaju promjene lozinke vidimo sljedeće:

Postoji određena neugodnost za krajnje korisnike. Kada pokušavaju promijeniti lozinku koja se nalazi na popisu datoteke obrazaca, poruka na ekranu ne razlikuje se pameti i domišljenosti od standardne poruke kada ne prođu politikom lozinki.

Stoga budite spremni na pozive i vikanje: ‘Unijela sam lozinku kako treba, a ne radi.’
Zaključak.
Ova biblioteka omogućava zabranu korištenja jednostavnih ili standardnih lozinki u domenu Active Directory. Recite ‘Ne!’ lozinkama poput: ‘P@ssw0rd’, ‘Qwerty123’, ‘ADm1n098’.
Da, korisnici će vas sigurno još više voljeti zbog takve brige o njihovoj sigurnosti i potrebe za smišljanjem teških lozinki. I, možda, će se broj poziva i molbi za pomoć oko lozinke kod vas povećati. No, sigurnost nešto košta.
Linkovi na korištene resurse:
Članak na Microsoftu o prilagođenoj biblioteci filtera lozinki:
PassFiltEx:
Link na izdanju:
Popisi lozinki:
DanielMiessler listovi:
Rječnik sa weakpass.com:
Rječnik iz berzerk0 repozitorija:
Microsoft Message Analyzer:
Izvor: habr.com
