Полезные LDAP запросы для поиска в Active Directory

Функционал сохранённых запросов (Saved Queries) в оснастке MMC Active Directory Users and Computers (ADUC) до сих пор остаётся полезным и актуальным, даже несмотря на появление PowerShell и соответствующего модуля для Active Direcotory. LDAP запросы позволяют вывести объекты в едином представлении невзирая на иерархию OU в домене. Полученный результат можно экспортировать в текстовые файлы с разделителями, либо выполнить групповые операции над найденными объектами. Также функционал сохранённых запросов полезен в тех случаях, когда необходимо обеспечить неквалифицированный персонал средством поиска в Active Directory по заранее настроенным запросам. В этой статье я создам небольшой список-обзор запросов, которыми пользуюсь сам и, которые, я думаю, будут полезны всем.

Создание сохранённого запроса

Напомню, если кто забыл/не знал, как создать свой поисковый запрос. В оснастке ADUC открываем раздел Saved Queries (сохранённые запросы):

Далее можно воспользоваться мастером и сконструировать запрос, либо создать запрос, используя язык запросов LDAP. Я буду использовать язык запросов. Каждый пример из этой статьи можно создать таким образом:

Примеры запросов

  1. Поиск административных учётных записей по атрибуту adminCount. Если пользователь является членом защищенной группы (например, Domain Admins, Enterprise Admins и т.п.), ему назначаются ACL, установленные в объекте AdminSDHolder в AD, а атрибуту adminCount пользователя присваивается значение 1.
    (objectClass=user)(objectCategory=Person)(adminCount=1)

    При удалении пользователя из привилегированной группы процесс AdminSDHolder не возвращает атрибут adminCount к прежнему значению, т.е. в результаты запроса попадут и те учётные записи, которые, когда-либо входили в одну из защищённых групп. 

  2. Все объекты, защищённые AdminSDHolder:
    (adminCount=1)
  3. Поиск всех отключенных учётных записей компьютеров:
    (&(objectClass=computer)(userAccountControl:1.2.840.113556.1.4.803:=2))
  4. Все пользователи:
    (&(objectCategory=user)(objectClass=user)(userPrincipalName=*))

    Или более эффективный вариант:

    (sAMAccountType=805306368)
  5. Все пользователи, кроме отключенных:
    (objectCategory=person)(objectClass=user)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)
  6. Пользователи, которые должны сменить пароль:
    (objectCategory=person)(objectClass=user)(pwdLastSet=0)(!useraccountcontrol:1.2.840.113556.1.4.803:=2)
  7. Пользователи, которые будут заблокированы после ещё одной неудачной попытки ввода пароля. В запросе используется атрибут badPwdCount. Значение нужно указать в соответствии с вашими парольными политиками в домене и учётом гранулированных парольных политик, если используются.
    (objectCategory=user)(badPwdCount>=6)
  8. Пользователи с бессрочным паролем (Password never expires):
    (objectcategory=user)(userAccountControl:1.2.840.113556.1.4.803:=65536)
  9. Все пользователи, которые не меняли свой пароль с указанной даты
    (&(objectCategory=person)(objectClass=user)(pwdLastSet<=131720255990000000))

    PwdLastSet для определённой даты можно получить с помощью PowerShell:

    $date = '28 May 2018 23:59:59'
    (Get-Date $date).ToFileTimeUTC()

    Подробнее о атрибуте Pwd-Last-Set см. здесь.

  10. Заблокированные пользователи:
    (objectCategory=person)(objectClass=user)(useraccountcontrol:1.2.840.113556.1.4.803:=16)
  11. Пользователи, у которых не заполнено поле должность. По аналогии можно найти пользователей по другим полям, либо по маске *название должности:
    (&(objectCategory=user)(objectClass=user)(!title=*))
  12. Пользователи, созданные за определённый период. Формат дат используется следующий:
    YYYY MM DD HH mm ss.s Z
    2017 01 01 00 00 00.0 Z
    (objectCategory=user)(whenCreated>=20170101000000.0Z&<=20171201000000.0Z&)

    objectCategory можно использовать любой, например group, computer, contact и др.

  13. Пользователи без фотографии (атрибут thumbnailPhoto):
    (objectCategory=user)(objectClass=user)(userPrincipalName=*)(!thumbnailPhoto=*)
  14. Все пользователи с Email адресом:
    (objectcategory=person)(mail=*)
  15. Все пользователи без Email адреса:
    (objectcategory=person)(!mail=*)
  16. Все пользователи у которых переопределена квота на почтовый ящик Exchange:
    (&objectCategory=user)(mDBUseDefaults=FALSE)
  17. Все пользователи, скрытые из адресной книги Exchange:
    (objectCategory=person)(objectClass=user)(msExchHideFromAddressLists=TRUE)
  18. Все компьютеры:
    (objectCategory=computer)
  19. Все компьютеры Windows 10:
    (objectCategory=computer)(operatingSystem=Windows 10*)
  20. Все компьютеры Windows Server 2016:
    (objectCategory=computer)(operatingSystem=Windows Server 2016*)
  21. Windows Server 2016 Standard:
    (objectCategory=computer)(operatingSystem=Windows Server 2016 Standard)
  22. Windows Server 2016 Datacenter:
    (objectCategory=computer)(operatingSystem=Windows Server 2016 Datacenter)
  23. Все SQL серверы, с любой ОС, у которых зарегистрирован servicePrincipalName:
    (objectCategory=computer)(servicePrincipalName=MSSQLSvc*)(operatingSystem=Windows Server*)
  24. Все Exchange серверы:
    (objectCategory=computer)(servicePrincipalName=exchangeMDB*)(operatingSystem=Windows Server*)
  25. Все контакты:
    (objectClass=contact)
  26. Поиск SMTP адреса по атрибуту proxyAddress. Позволяет найти любые объекты с почтовым адресом, включая общие папки Exchange:
    (&proxyAddresses=smtp:*@domain.com)
  27. Все группы:
    (objectCategory=group)
  28. Пустые группы, не содержащие ни одного члена:
    (objectCategory=group)(!member=*)
  29. Все организационные подразделения:
    (objectCategory=organizationalUnit)
  30. Все контейнеры:
    (objectCategory=container)
  31. Все цветные принтеры на сервере печати:
    (uncName=*Servername*)(objectCategory=printQueue)(printColor=TRUE)

    Servername — имя сервера печати, на котором установлен и опубликован в Active Directory принтер.

  32. Все доверительные отношения:
    (objectClass=trustedDomain)

     

Добавить комментарий