L'uomo, come è noto, è una creatura pigra.
Tanto più quando si tratta della scelta di una password sicura.
Penso che ogni amministratore si sia confrontato, prima o poi, con il problema dell'uso di password facili e standard. Questo fenomeno è molto comune tra i vertici dirigenziali dell'azienda. Sì, proprio tra coloro che hanno accesso a informazioni riservate o commerciali e sarebbe estremamente sconsigliabile dover affrontare le conseguenze della perdita/violazione di una password e successivi incidenti.
Nella mia esperienza c'è stato un caso in cui, in un dominio Active Directory con una politica di password attiva, i contabili sono arrivati all'idea che password come "Pas$w0rd1234" rispettassero benissimo i requisiti della politica. Il risultato è stato un uso generalizzato di questa password ovunque. A volte variava solo per il set di numeri.
Ho molto desiderato avere la possibilità non solo di attivare una politica di password e definire un insieme di caratteri, ma anche di filtrare tramite un dizionario. Per escludere la possibilità di utilizzare questo tipo di password.
Microsoft ci informa gentilmente tramite il link che chiunque sappia usare correttamente un compilatore, un IDE e pronunciare correttamente C++ è in grado di compilare e usare autonomamente la libreria necessaria. Il vostro umile servitore non è in grado di farlo, quindi ho dovuto cercare una soluzione pronta.
Dopo un'ora di ricerca, sono emerse due soluzioni al problema. Naturalmente, parlo di una soluzione OpenSource. Infatti, ci sono opzioni a pagamento — da un estremo all'altro.
Opzione n. 1.
Non ci sono commit da circa due anni. L'installer originale funziona a tratti, bisogna correggerlo a mano. Crea un proprio servizio separato. Durante l'aggiornamento del file delle password, la DLL non rileva automaticamente il contenuto modificato, è necessario fermare il servizio, attendere il timeout, modificare il file e riavviare il servizio.
Non è un buon affare!
Opzione n. 2.
Il progetto è attivo, vivo e non serve neanche spingere il corpo freddo.
L'installazione del filtro consiste nella copia di due file e nella creazione di alcune voci di registro. Il file delle password non è bloccato, quindi è accessibile per la modifica e, secondo l'intenzione dell'autore del progetto, viene semplicemente letto una volta al minuto. Inoltre, tramite ulteriori voci di registro, è possibile effettuare configurazioni aggiuntive sia del filtro stesso che delle sfumature della politica delle password.
Dunque.
Dominio Active Directory test.local
workstation di prova Windows 8.1 (per le condizioni del compito — irrilevante)
filtro delle password PassFiltEx
- Scarichiamo l'ultima release dal link
- Copiare PassFiltEx.dll in C:WindowsSystem32 (o %SystemRoot%System32).
Copiare PassFiltExBlacklist.txt in C:WindowsSystem32 (o %SystemRoot%System32). Se necessario, aggiungiamo i nostri modelli
- Modifichiamo il ramo del registro: HKLMSYSTEMCurrentControlSetControlLsa => Notification Packages
Aggiungiamo PassFiltEx alla fine dell'elenco. (Non è necessario specificare l'estensione.) L'elenco completo dei pacchetti utilizzati per il controllo sarà simile a «rassfm scecli PassFiltEx«.
- Riavviamo il controller del dominio.
- Ripetiamo la procedura sopra indicata per tutti i controller del dominio.
È possibile aggiungere anche le seguenti voci di registro, che offrono maggiore flessibilità nell'uso di questo filtro:
Sezione: HKLMSOFTWAREPassFiltEx — viene creata automaticamente.
- HKLMSOFTWAREPassFiltExBlacklistFileName, REG_SZ, Predefinito: PassFiltExBlacklist.txt
BlacklistFileName — consente di specificare un percorso personalizzato per il file dei modelli delle password. Se questa voce di registro ha un valore vuoto o non esiste, viene utilizzato il percorso predefinito, ovvero — %SystemRoot%System32. È possibile anche specificare un percorso di rete, MA bisogna ricordare che il file dei modelli deve avere permessi chiari per la lettura, scrittura, eliminazione e modifiche.
- HKLMSOFTWAREPassFiltExTokenPercentageOfPassword, REG_DWORD, Predefinito: 60
TokenPercentageOfPassword — consente di specificare la percentuale di corrispondenza della maschera nella nuova password. Di default il valore è 60%. Ad esempio, se è specificata una percentuale di corrispondenza del 60 e nel file dei modelli c'è la stringa starwars, allora la password Starwars1! verrà rifiutata, mentre la password starwars1!DarthVader88 verrà accettata, poiché la percentuale di corrispondenza della stringa nella password è inferiore al 60%
- HKLMSOFTWAREPassFiltExRequireCharClasses, REG_DWORD, Predefinito: 0
RequireCharClasses — consente di ampliare i requisiti per le password rispetto ai requisiti standard di complessità delle password di ActiveDirectory. I requisiti di complessità integrati richiedono 3 su 5 possibili diversi tipi di caratteri: Maiuscole, Minuscole, Cifre, Caratteri speciali e Unicode. Con questa impostazione del registro è possibile stabilire i propri requisiti di complessità delle password. Il valore che può essere specificato è un insieme di bit, ciascuno dei quali è una corrispondente potenza di due.
Cioè — 1 = minuscole, 2 = maiuscole, 4 = cifra, 8 = carattere speciale, e 16 = carattere Unicode.
Quindi, con un valore di 7 i requisiti saranno “Maiuscole E minuscole E cifre”, mentre con un valore di 31 — “Maiuscole E minuscole E cifre E carattere speciale E carattere Unicode”.
Si possono anche combinare — 19 = “Maiuscole E minuscole E carattere Unicode”.
Una serie di regole per la creazione di file modello:
- I modelli sono insensibili al maiuscolo e minuscolo. Pertanto, la registrazione nel file starwars e StarWarS verrà considerata come lo stesso valore.
- Il file blacklist viene riletto ogni 60 secondi, in modo da poterlo modificare tranquillamente; dopo un minuto i nuovi dati saranno già utilizzati dal filtro.
- Attualmente non c'è supporto per Unicode per il controllo dei modelli. Cioè, è possibile utilizzare caratteri Unicode nelle password, ma il filtro non funzionerà. Questo non è critico, poiché non ho visto utenti utilizzare password in Unicode.
- È consigliabile non avere righe vuote nel file dei modelli. In debug sarà visibile un errore quando si tentano di caricare dati dal file. Il filtro funziona, ma perché avere eccezioni inutili?
Per il debug, nel pacchetto sono inclusi file batch che consentono di creare un log e poi analizzarlo tramite, ad esempio,
Questo filtro per password utilizza Event Tracing for Windows.
Il provider ETW per questo filtro password — 07d83223-7594-4852-babc-784803fdf6c5. Ad esempio, è possibile configurare il tracciamento degli eventi dopo il successivo riavvio:
logman crea trace autosessionPassFiltEx -o %SystemRootbugPassFiltEx.etl -p "{07d83223-7594-4852-babc-784803fdf6c5}" 0xFFFFFFFF -ets
Il tracciamento sarà avviato dopo il successivo riavvio del sistema. Per fermarlo:
logman stop PassFiltEx -ets && logman delete autosessionPassFiltEx -ets
Tutti questi comandi sono indicati negli script StartTracingAtBoot.cmd e StopTracingAtBoot.cmd.
Per un controllo una tantum del funzionamento del filtro è possibile utilizzare StartTracing.cmd e StopTracing.cmd.
Per una lettura comoda dell'output del debug di questo filtro in Microsoft Message Analyzer si consiglia di utilizzare le seguenti impostazioni:


Alla fermata del log e dell'analisi in Microsoft Message Analyzer tutto appare più o meno in questo modo:

Qui possiamo vedere che c'è stato un tentativo di impostare una password per l'utente — ce lo dice la magica parola SET nel debug. E la password è stata rifiutata poiché era presente nel file dei modelli, con oltre il 30% di corrispondenza nel testo immesso.
In caso di tentativo riuscito di cambiare la password, vediamo quanto segue:

C'è un certo disagio per l'utente finale. Nel tentativo di cambiare una password che è presente nell'elenco del file dei modelli, il messaggio sullo schermo non differisce per ingegno e discernimento dal messaggio standard in caso di fallimento della politica sulla password.

Quindi preparatevi a ricevere telefonate e urla: «Ho inserito la password come dovevo, ma non funziona.»
Conclusione.
Questa libreria consente di vietare l'uso di password semplici o standard nel dominio Active Directory. Diciamo «No!» a password del tipo: «P@ssw0rd», «Qwerty123», «ADm1n098».
Sì, senza dubbio, gli utenti vi apprezzeranno ancora di più per questa attenzione alla loro sicurezza e alla necessità di inventare password difficili. E, forse, il numero di telefonate e richieste di aiuto con la password aumenterà. Ma per la sicurezza bisogna pagare.
Riferimenti alle risorse utilizzate:
Articolo di Microsoft sulla libreria personalizzata per i filtri delle password:
PassFiltEx:
Link.
Elenco di password:
DanielMiessler lists:
Wordlist da weakpass.com:
Wordlist dal repo di berzerk0:
Microsoft Message Analyzer:
Fonte: habr.com
