Настройка политики паролей в Active Directory по умолчанию позволяет устанавливать минимальные требования к длине, сложности и повторяемости паролей. Однако даже включение опции Сложный пароль, требующей использования минимум трех типов символов (буквы верхнего и нижнего регистра, цифры, специальные символы), не предотвращает использование слабых паролей, таких как 123Qwert, Pa$$w0rd или Password2025. В этой статье мы разберем, как использовать open-source инструменты PassFiltEx и Lithnet Password Protection для создания списков запрещенных паролей и защиты учетных записей в локальном домене Active Directory от атак методом перебора по словарю.
Использование PassFiltEx для фильтрации простых паролей
PassFiltEx — это легковесная библиотека, которая интегрируется в процесс проверки паролей на контроллере домена и позволяет запретить использование слабых или заранее определенных паролей. Она работает как дополнительный фильтр в процессе LSA (Local Security Authority) при смене пароля пользователя.
Установка и настройка PassFiltEx
Для внедрения PassFiltEx выполните следующие шаги:
1. Скачайте два файла с официальной страницы проекта на GitHub:
– PassFiltEx.dll — библиотека фильтра паролей.
– PassFiltExBlacklist.txt — текстовый файл для списка запрещенных паролей.
2. Скопируйте оба файла в каталог %SystemRoot%\System32 на контроллере домена.
3. Откройте Редактор реестра (Win+R, введите regedit).
4. Перейдите в раздел:
HKLM\SYSTEM\CurrentControlSet\Control\Lsa
5. Найдите параметр Notification Packages (тип REG_MULTI_SZ).
6. Добавьте строку PassFiltEx в конец списка (без расширения .dll).
7. Перезагрузите контроллер домена, чтобы изменения вступили в силу.
8. Проверьте, что библиотека PassFiltEx.dll загружена процессом lsass:
tasklist /m PassFiltEx.dll
Настройка списка запрещенных паролей
Файл PassFiltExBlacklist.txt содержит список паролей, которые будут запрещены. Важные особенности:
– Файл обновляется каждые 60 секунд, позволяя вносить изменения без перезагрузки.
– Пароли в файле нечувствительны к регистру (например, Password и password считаются одинаковыми).
– Поддержка Unicode-символов отсутствует.
Добавьте в файл PassFiltExBlacklist.txt слова или фразы, которые хотите запретить, например:
password
admin
123456
qwerty
После настройки, если пользователь попытается установить пароль из черного списка, он получит ошибку:
Пароль не соответствует требованиям политики безопасности.
Дополнительные параметры PassFiltEx
Для тонкой настройки создайте раздел реестра HKLM\SOFTWARE\PassFiltEx и добавьте следующие параметры:
1. BlacklistFileName (REG_SZ): Путь к файлу черного списка. По умолчанию: %SystemRoot%\System32\PassFiltExBlacklist.txt.
– Можно указать UNC-путь (например, \\DC\SYSVOL\blacklist.txt) для хранения файла на SYSVOL и репликации между контроллерами.
2. TokenPercentageOfPassword (REG_DWORD): Минимальный процент совпадения пароля с шаблоном из черного списка (по умолчанию 60%).
– Например, если в списке есть Password, пароль Password25 будет заблокирован.
3. Debug (REG_DWORD): Установите значение 1 для включения ведения лога отладки.
4. BlockSequentialChars (REG_DWORD): Установите 1, чтобы запретить последовательности символов (например, abcd, 1234).
5. BlockRepeatingChars (REG_DWORD): Установите 1, чтобы запретить повторяющиеся символы (например, aaaa, 2222).
Если в домене несколько контроллеров домена, повторите установку и настройку PassFiltEx на каждом из них.
Защита с помощью Lithnet Password Protection
Lithnet Password Protection for Active Directory (LPP) — это мощное решение для блокировки слабых и скомпрометированных паролей в Active Directory. Оно поддерживает расширенные политики паролей, фильтрацию по шаблонам, проверку хэшей паролей и интеграцию с базами скомпрометированных паролей, таких как Have I Been Pwned (HIBP). Управление осуществляется через PowerShell и Групповые политики.
Установка агента Lithnet Password Protection
1. Скачайте агент Lithnet Password Protection с официального репозитория GitHub.
2. Установите агент на каждом контроллере домена.
3. Убедитесь, что установка завершена успешно, и проверьте наличие файлов в каталоге:
C:\Program Files\Lithnet\Active Directory Password Protection
Настройка запрещенных паролей через PowerShell
После установки импортируйте модуль LithnetPasswordProtection в PowerShell с правами администратора:
Import-Module LithnetPasswordProtection
Добавьте запрещенное слово или фразу:
Add-BannedWord -Value "admin"
Импортируйте список запрещенных слов из текстового файла:
Import-BannedWords -Filename "C:\Temp\blacklistpwd.txt"
Проверьте, есть ли слово в базе запрещенных:
Test-IsBannedWord -Value admin
Протестируйте пароль на соответствие политике:
Get-PasswordFilterResult -Password "Admin123!" -Username spetrov -Fullname "Sergey Petrov"
Результат Compromised указывает, что пароль содержит запрещенное слово и будет отклонен.
Результат Approved подтверждает, что пароль соответствует политике.
Импорт скомпрометированных паролей
Lithnet Password Protection поддерживает импорт базы скомпрометированных паролей из сервиса Have I Been Pwned, что требует около 8 ГБ свободного места на диске:
Sync-HashesFromHibp
Для периодической синхронизации настройте задачу в Планировщике заданий для выполнения команды Sync-HashesFromHibp.
Альтернативно, импортируйте хэши из текстового файла:
Import-CompromisedPasswordHashes -Filename "C:\Temp\pwned-ntlm-hashs.txt"
Проверьте, есть ли пароль в базе скомпрометированных:
Test-IsCompromisedPassword -Value Adminl0vesY0u
Или проверьте пароль пользователя по UPN:
Test-IsADUserPasswordCompromised -UPN test@softcomputers.org
Репликация базы паролей
Хранилище Lithnet Password Protection представляет собой файловую базу данных в каталоге:
C:\Program Files\Lithnet\Active Directory Password Protection\Store\v3\p
Для репликации между контроллерами домена используется служба DFS-R, что обеспечивает синхронизацию хэшей и настроек.
Настройка через Групповые политики
Для управления Lithnet Password Protection через Групповые политики используйте ADMX-шаблоны, которые находятся в каталоге:
%WINDIR%\PolicyDefinitions
Скопируйте файлы lithnet.activedirectory.passwordfilter.admx, lithnet.admx и соответствующие ADML-файлы \en-us\lithnet.activedirectory.passwordfilter.adml
\en-us\lithnet.adml в центральное хранилище GPO.
Создайте новую GPO для контроллеров домена и настройте следующие параметры в разделе:
Конфигурация компьютера → Административные шаблоны → Lithnet → Password Protection for Active Directory → Default Policy
1. Reject passwords found in the compromised password store: Включите и активируйте флажки Enable for password set и Enable for password change operations.
2. Reject normalized password found in the compromised password store: Включите, чтобы запретить нормализованные варианты паролей (например, SoftComputers и softcomputers).
Примените GPO и перезагрузите контроллеры домена. Это также добавит фильтр lithnetpwdf в реестр в раздел HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages.
Проверка результата
После настройки PassFiltEx или Lithnet Password Protection при попытке установить слабый или скомпрометированный пароль пользователь получит ошибку, например:
Пароль не соответствует требованиям политики безопасности (для PassFiltEx).
Или в Windows 11 с Lithnet Password Protection:
Пароль для этой учетной записи не может быть изменен в данный момент.
Обратите внимание, что сообщение об ошибке может быть неинформативным, поэтому рекомендуется заранее уведомить пользователей о новых требованиях к паролям.
Рекомендации
– Регулярно обновляйте списки запрещенных паролей в PassFiltExBlacklist.txt или базе Lithnet Password Protection.
– Используйте DFS-R или SYSVOL для синхронизации черных списков между контроллерами домена.
– Настройте автоматическую синхронизацию с HIBP для актуальности базы скомпрометированных паролей.
– Проведите обучение пользователей, чтобы минимизировать обращения в техподдержку из-за отклонения паролей.
Запрет слабых и скомпрометированных паролей в Active Directory с помощью PassFiltEx и Lithnet Password Protection значительно повышает безопасность домена. PassFiltEx подходит для простых сценариев с минимальной настройкой, тогда как Lithnet Password Protection предлагает мощные инструменты для крупных организаций, включая проверку хэшей и интеграцию с GPO. Правильная настройка этих инструментов защитит учетные записи от атак методом перебора и повысит общий уровень безопасности инфраструктуры.