Неактивные учётные записи в Active Directory: поиск и блокировка

0
12
Обложка статьи: Неактивные учётные записи в Active Directory: поиск и блокировка

Разовый аудит домена находит ошибки конфигурации. Эта статья — про ежемесячную рабочую процедуру: выгрузить список неактивных учётных записей, спросить владельца и заблокировать поимённо. Не гоняйте конвейер отключения на весь домен: среди «тихих» окажутся сервисные записи и люди в длительном отпуске. Увольнение по-прежнему закрывайте в день события, не ждите отчёта о неактивности: чек-лист отзыва прав. Для Linux-серверов та же задача решается другими средствами: неактивные учётные записи Linux.

Статья опирается на логику направления «Управление доступом» из методики зрелости Группы Сбер (источник); это методика для крупных компаний, мы используем её как ориентир и пересказываем своими словами. Срез типичных ошибок AD: аудит Active Directory.

Что должно получиться

Уровень Что это значит на практике
2. Гигиенический Неактивные учётные записи находятся по расписанию, подтверждаются у владельца и блокируются поимённо, а не копятся месяцами и не отключаются массовым конвейером

Критерии сформулированы нами по мотивам методики, это ориентир, а не оценка соответствия.

Порог и исключения

Зафиксируйте порог в политике. CIS Controls v8.1 ориентирует отключать дремлющие записи примерно через 45 дней, где это поддерживается. На площадках с длинными отпусками часто берут 90 дней для обычных пользователей и 45 — для административных. Число одно на компанию, не «как получится в скрипте».

Исключения до выгрузки: сервисные учётки с владельцем, gMSA, учётки оборудования, задокументированный декрет или вахта. Их ведите рядом с заявками: заявка на доступ. Без строки в исключениях «это сервис» не принимайте.

Выгрузка списка

Модуль ActiveDirectory (RSAT). Команда только читает. Интервал 45.00:00:00 замените своим порогом. Нужен функциональный уровень домена не ниже Windows Server 2003 — иначе признак неактивности по этой команде недоступен (документация Microsoft).

Search-ADAccount -AccountInactive -TimeSpan 45.00:00:00 -UsersOnly |
  Where-Object { $_.Enabled -eq $true } |
  Select-Object Name, SamAccountName, LastLogonDate, DistinguishedName |
  Export-Csv -Path inactive-users.csv -NoTypeInformation -Encoding UTF8

На экране и в CSV — включённые пользователи, которых команда считает неактивными. LastLogonDate опирается на реплицируемый штамп и может отставать на дни: не блокируйте человека, который заходил вчера на другую площадку, пока владелец не подтвердит. Компьютеры выгружайте отдельно (-ComputersOnly), не смешивайте с людьми.

Блокировка поимённо

Риск конвейера: команда без разбора в Disable-ADAccount отключит сервис и бухгалтера в отпуске. Отключайте по одному имени после ответа владельца:

Disable-ADAccount -Identity ИМЯ

Проверка: Get-ADUser ИМЯ -Properties Enabled | Select-Object Enabled — False. Документация: Search-ADAccount, Disable-ADAccount.

Подтверждение и журнал

  1. Раз в месяц отправьте CSV владельцам систем: «подтвердите, что человеку доступ ещё нужен» — срок ответа три рабочих дня.
  2. Молчание по обычной учётке = блокировка; молчание по привилегированной = блокировка в тот же день после напоминания.
  3. Запишите в журнал: дата выгрузки, сколько строк, сколько подтверждено, сколько отключено, какие исключения.
  4. Через 30 дней отключённую личную учётку архивируйте по политике хранения; сервисную не удаляйте без владельца системы.

Парольные правила для того, что остаётся живым: парольная политика.

Диагностика

Симптом Причина и что делать
Выгрузка пустая, а бывший сотрудник входит в SaaS Искали только в AD. Добавьте почту, VPN и облачные сервисы из реестра активов
После отключения «упал» обмен между системами Сервисная учётка без исключения. Верните, заведите владельца, запретите автоконвейер
LastLogonDate расходится с реальным входом на день-два Атрибут реплицируется между контроллерами домена не мгновенно. Перед блокировкой проверяйте через Get-ADUser -Properties LastLogonDate на нескольких контроллерах или дождитесь подтверждения владельца
Список расходится с порогом в локальной политике другого подразделения Разный порог в разных документах. Приведите к одному числу в общей политике

Где это в модели зрелости

Материал относится к направлению «Управление доступом» (материалы направления, карта зрелости). Разовый аудит AD находит ошибки конфигурации. Эта процедура поддерживает гигиену: дремлющие записи не копятся месяцами. Это не PAM и не IDM — таблица, владелец и одна команда блокировки.

Как проверить

  1. В политике записан порог неактивности и список исключений.
  2. Есть CSV последней выгрузки не старше месяца.
  3. По трём случайным отключённым именам есть подтверждение владельца или отметка «молчание, порог вышел».
  4. Сервисные учётки не попали под массовое отключение.
  5. Команда Search-ADAccount запускается как чтение; блокировка — поштучно через Disable-ADAccount.

Источники

  • Microsoft Learn, Search-ADAccount: learn.microsoft.com.
  • Microsoft Learn, Disable-ADAccount: learn.microsoft.com.
  • CIS Controls v8.1, контроль 5 (дремлющие учётные записи). Это не закон РФ: cisecurity.org.
  • Методика оценки уровня зрелости кибербезопасности компании, Группа Сбер: sberbank.ru.

Комментарии закрыты.