Szczegółowość i zasady haseł w Active Directory można definiować za pomocą polityki, jeśli to nie wystarcza można użyć fine-grained password policies (więcej informacji tutaj). Co jeśli obie te opcje nie wystarczają? Co jeśli z audytu haseł, o którym szerzej w tym artykule wynika, że hasła spełniają politykę, ale są zbyt proste? Generalnie mamy 2 opcje:
- Zmienić politykę haseł, aby zwiększyć jego złożoność – za bardzo wydłużając hasła możemy zniechęcić użytkowników do wprowadzania mocnych haseł
- Wprowadzić opcję filtrowania haseł w Active Directory
W tym artykule opiszę jak w środowisku on-premise uruchomić taką opcję, która pozwala na porównanie hasła ze zdefiniowanym wcześniej słownikiem. Kiedyś ta opcja była udokumentowana na stronach Microsoft, ale wraz z przeniesieniem tej opcji do Azure została usunięta.
Do rzeczy. Na GitHubie Ryana Riesa jest dostępna dll-ka, która właśnie realizuje owe filtrowanie haseł.
Instalacja dodatku jest relatywnie prosta, wymaga jednak restartu kontrolera domeny. Po rozpakowaniu archiwum zip, interesują nas 2 pliki: PassFiltEx.dll oraz PassFiltExBlacklist.txt.
Plik dll kopiujemy do lokalizacji C:\Windows\System32
Natomiast plik txt, jest to lista z zakazanymi hasłami. Domyślnie również powinien trafić do tej samej lokalizacji co plik dll. Ja jednak zdecydowałem się na umieszczenie go w folderze SYSVOL. Jest łatwiej zarządzać lista haseł, edytuje plik raz i później jest on replikowany po wszystkich kontrolerach domeny. Minusem tego rozwiązania jest możliwość, że użytkownicy mogą łatwo znaleźć ten plik i zobaczyć na jakie hasła nie pozwalamy w organizacji.
Kolejnym krokiem jest dodanie pliku dll do usługi LSA, poprzez edycję wpisu w rejestrze
Ostatnim krokiem jest restart kontrolera domeny, oraz powtórzenie powyższych kroków na wszystkich DC-kach. Po zakończonej implementacji możemy swobodnie rozwijać nasz słownik zabronionych haseł, a użytkownicy przy próbie ustawienia hasła, z pliku otrzymują standardowy komunikat, taki sam gdy hasło nie spełnia wymagań polityki.