Zaktualizowano 6 min czytania

Hasła i MFA: co dziś rekomendują standardy i jak to ustawić w Active Directory

Wymuszana zmiana hasła co 90 dni i reguły „wielka litera, cyfra, znak specjalny” to zalecenia, z których standardy się wycofały. Co je zastąpiło, jak sprawdzić obecne ustawienia domeny i które metody MFA są odporne na phishing.

Rys. 1. Odporność na phishing daje dopiero metoda związana z adresem strony; dopasowanie liczby chroni przed zalewaniem powiadomieniami, ale nie przed fałszywą stroną pośredniczącą w logowaniu.

Polityka haseł w wielu organizacjach wygląda tak samo od lat: minimum osiem znaków, wielka litera, cyfra, znak specjalny, zmiana co 90 dni, zakaz powtarzania ostatnich 24 haseł. Efekt jest przewidywalny: Wiosna2026!, potem Lato2026!, karteczki pod klawiaturą i seria zgłoszeń o reset w każdy poniedziałek po zmianie. Konto z hasłem Lato2026! i bez drugiego składnika pada przy pierwszym ataku polegającym na sprawdzaniu kilku popularnych haseł na wszystkich kontach organizacji.

Standardy, na których te zasady były oparte, dawno je porzuciły. Poniżej: co je zastąpiło, jak sprawdzić obecne ustawienia domeny i które metody MFA rzeczywiście chronią przed phishingiem.

Co mówią aktualne wytyczne

Najczęściej cytowanym punktem odniesienia są wytyczne NIST dotyczące uwierzytelniania, SP 800-63B w wersji 4.

Dotychczasowa regułaAktualne zaleceniePowód
minimum 8 znaków i wymagana złożonośćminimum 15 znaków, gdy hasło jest jedynym składnikiem, 8 przy MFA; bez wymagań co do rodzajów znakówreguły składu dają przewidywalne wzorce, długość daje odporność
zmiana co 30–90 dnizmiana tylko przy przesłance ujawnieniawymuszona zmiana daje kolejne wersje tego samego hasła
brak sprawdzania treści hasłaporównanie z listą zakazanych: popularne, słownikowe, związane z organizacją, znane z wyciekówatakujący zaczynają od tych samych list
krótki limit długości, zakaz wklejaniaco najmniej 64 znaki, wklejanie dozwolonefrazy hasłowe i menedżery haseł
pytania pomocnicze i podpowiedzibrakodpowiedzi łatwo ustalić z publicznych źródeł

Przełożenie na Active Directory

Zasada haseł dla kont domenowych pochodzi z obiektu zasad grupy połączonego z katalogiem głównym domeny, zwykle Default Domain Policy, w gałęzi Konfiguracja komputera → Zasady → Ustawienia systemu Windows → Ustawienia zabezpieczeń → Zasady konta → Zasady haseł. Te same ustawienia połączone z jednostką organizacyjną działają tylko na konta lokalne komputerów, nie na konta domenowe.

Klasyczna zasada ogranicza minimalną długość do 14 znaków. Nowsze wersje Windows Server pozwalają przekroczyć ten limit ustawieniem „Relax minimum password length limits” w tej samej gałęzi, a ustawienie „Minimum password length audit” pozwala najpierw zbierać w dzienniku zdarzeń kontrolerów informacje o ustawianych hasłach krótszych niż planowane minimum. Wszystkie kontrolery domeny muszą obsługiwać ten mechanizm, więc wdrożenie zaczyna się od audytu.

Dłuższe minimum dla wybranych kont daje szczegółowa zasada haseł (Fine-Grained Password Policy). Dotyczy użytkowników i globalnych grup zabezpieczeń, przy kilku zasadach wygrywa ta z niższym Precedence, a minimalna długość nie podlega limitowi 14 znaków. Wymagania dotyczące długości obowiązują od następnej zmiany hasła członków grupy:

New-ADFineGrainedPasswordPolicy -Name 'PSO-Admins' -Precedence 10 `
    -MinPasswordLength 20 -ComplexityEnabled $true -PasswordHistoryCount 24 `
    -MinPasswordAge '1.00:00:00' -MaxPasswordAge '365.00:00:00' `
    -LockoutThreshold 10 -LockoutDuration '00:15:00' -LockoutObservationWindow '00:15:00'
Add-ADFineGrainedPasswordPolicySubject -Identity 'PSO-Admins' -Subjects 'GG-Admins-Tier0'

Złożoność zostaje włączona do czasu wdrożenia listy zakazanych haseł, bo w samym AD to jedyny mechanizm, który odrzuca hasło zawierające nazwę konta. Wygasanie po roku zostaje z tego samego powodu.

Lista zakazanych haseł

Microsoft Entra Password Protection dla AD DS składa się z agenta na każdym kontrolerze domeny i usługi proxy, która pobiera listy z Entra ID. Nowe hasło jest porównywane z globalną listą słabych haseł i z własną listą organizacji (do 1000 pozycji: nazwa firmy, produkty, miasto, nazwy drużyn sportowych), po normalizacji typowych podmian, więc P@ssw0rd jest traktowane jak password. Usługa wymaga licencji Entra ID P1 lub wyższej i ma tryb audytu, od którego warto zacząć. Alternatywą są filtry haseł open source na kontrolerach domeny, sprawdzające hasła z listą znanych wycieków, np. Lithnet Password Protection.

Lista działa przy zmianie i resetowaniu hasła, nie przy logowaniu. Istniejące słabe hasła zostają do najbliższej zmiany.

Konta, których polityka nie obejmuje

Konto z ustawionym PasswordNeverExpires nie podlega wygasaniu, a konto usługi z hasłem ustawionym osiem lat temu zwykle ma je zapisane w kilku skryptach. Grupowe zarządzane konta usług (gMSA) mają hasła generowane i zmieniane automatycznie przez domenę, więc każde konto usługi, które może być gMSA, powinno nim być. Istniejące gMSA pokazuje Get-ADServiceAccount -Filter *.

Szczególnie ważne są konta użytkowników z przypisanym SPN: każdy uwierzytelniony użytkownik domeny może pobrać dla nich bilet Kerberos i próbować złamać hasło poza siecią. Konto z SPN i starym, krótkim hasłem to gotowy cel:

Get-ADUser -Filter "ServicePrincipalName -like '*'" -Properties ServicePrincipalName, PasswordLastSet |
    Select-Object SamAccountName, PasswordLastSet, ServicePrincipalName

Każde takie konto jest kandydatem na gMSA, a do czasu migracji dostaje losowe hasło o długości co najmniej 25 znaków z menedżera sekretów.

MFA: nie każde jest równe

MetodaOdporność na phishingWygodaKoszt
SMS, połączenie głosowenie: przejęcie numeru, kod do przepisania na fałszywej stronieśredniabrak lub opłaty za SMS
Kod jednorazowy z aplikacji (TOTP)nie: kod można przepisać na fałszywej stronieśredniabrak
Powiadomienie push z dopasowaniem liczbynie: chroni przed zalewaniem powiadomieniami, ale nie przed stroną pośredniczącąwysokabrak
Passkey w aplikacji uwierzytelniającejtakwysokabrak dodatkowego sprzętu
Windows Hello for Businesstakbardzo wysoka na własnym komputerzemoduł TPM, projekt wdrożenia
Klucz sprzętowy FIDO2takwysokazakup kluczy, najlepiej dwóch na osobę
Certyfikat, karta inteligentnatakśredniainfrastruktura PKI, karty i czytniki

Różnica między górną a dolną częścią tabeli jest jakościowa. Strona pośrednicząca w ataku typu adversary-in-the-middle przekazuje do prawdziwej usługi hasło, kod i zatwierdzenie push, a po zalogowaniu przejmuje sesję. Metody odporne na phishing podpisują wyzwanie kluczem związanym z adresem strony, więc podpis wygenerowany dla fałszywej domeny jest bezużyteczny.

Kolejność wdrażania: najpierw administratorzy, od razu metodami odpornymi na phishing, wymuszanymi w dostępie warunkowym przez wbudowaną siłę uwierzytelniania „Phishing-resistant MFA” (wymaga Entra ID P1). Potem dostęp zdalny i poczta, potem wszyscy użytkownicy. Uwierzytelnianie starszego typu, które nie obsługuje drugiego składnika, jest blokowane. Wyjątkiem są tylko konta awaryjne, objęte osobną procedurą i monitorowaniem.

Sprawdź u siebie

Domyślna zasada haseł domeny:

Get-ADDefaultDomainPasswordPolicy |
    Format-List MinPasswordLength, ComplexityEnabled, MaxPasswordAge, PasswordHistoryCount, LockoutThreshold
MinPasswordLength    : 8
ComplexityEnabled    : True
MaxPasswordAge       : 90.00:00:00
PasswordHistoryCount : 24
LockoutThreshold     : 0

MinPasswordLength poniżej 14 przy haśle jako jedynym składniku jest za mało. LockoutThreshold równe 0 oznacza brak blokady konta, czyli nieograniczoną liczbę prób; rozsądna wartość to np. 10 prób.

Szczegółowe zasady haseł i zasada, która faktycznie obowiązuje konkretne konto:

Get-ADFineGrainedPasswordPolicy -Filter * |
    Format-Table Name, Precedence, MinPasswordLength, MaxPasswordAge, AppliesTo
Get-ADUserResultantPasswordPolicy -Identity adm.jkowalski

Brak wyniku pierwszego polecenia oznacza, że administratorzy mają takie same wymagania jak wszyscy. Brak wyniku drugiego oznacza, że konto podlega zasadzie domyślnej, a nie szczegółowej.

Włączone konta z hasłem, które nigdy nie wygasa, od najstarszego hasła:

Get-ADUser -Filter 'PasswordNeverExpires -eq $true -and Enabled -eq $true' -Properties PasswordLastSet, LastLogonDate |
    Sort-Object PasswordLastSet |
    Format-Table SamAccountName, PasswordLastSet, LastLogonDate

Każde konto na liście powinno mieć właściciela i uzasadnienie. Konta osobowe na tej liście i konta usług z hasłem starszym niż kilka lat są pierwszymi kandydatami do zmiany.

Metody uwierzytelniania włączone w Entra ID:

Connect-MgGraph -Scopes 'Policy.Read.All'
(Get-MgPolicyAuthenticationMethodPolicy).AuthenticationMethodConfigurations |
    Format-Table Id, State

Dobry wynik: Fido2 i MicrosoftAuthenticator włączone, Sms i Voice wyłączone albo ograniczone do grupy przejściowej. Włączone SMS dla wszystkich oznacza, że część użytkowników korzysta z najsłabszej metody, bo jest najwygodniejsza przy rejestracji.