Полезные 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)(useraccountcontrol:1.2.840.113556.1.4.803:=16)
  10. Пользователи, у которых не заполнено поле должность. По аналогии можно найти пользователей по другим полям, либо по маске *название должности:
    (&(objectCategory=user)(objectClass=user)(!title=*))
  11. Пользователи, созданные за определённый период. Формат дат используется следующий:
    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 и др.

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

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

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

     

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