вторник, 19 марта 2019 г.

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

LDAP query 

ЗапросLDAP-фильтр
Все пользователи(&(objectCategory=person)(objectClass=user))
Все пользователи (прим. 1)(sAMAccountType=805306368)
Все компьютеры(objectCategory=computer)
Все контакты(objectClass=contact)
Все группы(objectCategory=group)
Все организационные подразделения(objectCategory=organizationalUnit)
Все контейнеры(objectCategory=container)
Все встроенные контейнеры(objectCategory=builtinDomain)
Все домены(objectCategory=domain)
Компьютеры без описания(&(objectCategory=computer)(!description=*))
Группы с описанием(&(objectCategory=group)(description=*))
Пользователи с cn начитающимися на "Вас"(&(objectCategory=person)(objectClass=user)

(cn=Вас*))
Объекты с описанием "Отдел IT Ижевск\Казань"
(прим. 2)
(description=Отдел IT Ижевск\5CКазань)
Группы с cn начинающимся на "Test" или "Admin"(&(objectCategory=group(|(cn=Test*)(cn=Admin*)))
Все пользователи с заполненными именем и фамилией.(&(objectCategory=person)(objectClass=user)

(givenName=*)(sn=*))
Все пользователи с указанным e-mail(&(objectCategory=person)(objectClass=user)

(|(proxyAddresses=*:jsmith@company.com)

(mail=jsmith@company.com)))
Объекты с общим именем "Василий * Пупкин"
(прим. 3)
(cn=Василий \2A Пупкин)
Объекты с sAMAccountName, начинающимся
на  "x", "y", или "z"
(sAMAccountName>=x)
Объекты с sAMAccountName начинающимся с
  "a" или цифры или символа, кроме "$"
(&(sAMAccountName<=a)(!sAMAccountName=$*))
пользователи с установленным параметром "Срок действия пароля не ограничен"
(прим. 4)
(&(objectCategory=person)(objectClass=user)
(userAccountControl:1.2.840.113556.1.4.803:=65536))
Все отключенные пользователи (прим. 4)(&(objectCategory=person)(objectClass=user)
(userAccountControl:1.2.840.113556.1.4.803:=2))
Все включенные пользователи (прим. 4)(&(objectCategory=person)(objectClass=user)
(!userAccountControl:1.2.840.113556.1.4.803:=2))
Пользователи, не требующие паролей (прим. 4)(&(objectCategory=person)(objectClass=user)
(userAccountControl:1.2.840.113556.1.4.803:=32))
Пользователи с включенным параметром "Без предварительной проверки подлинности Kerberos"(&(objectCategory=person)(objectClass=user)

(userAccountControl:1.2.840.113556.1.4.803:=4194304))
Пользователи с неограниченным сроком действия учетной записи (прим. 5)(&(objectCategory=person)(objectClass=user)
(|(accountExpires=0)
(accountExpires=9223372036854775807)))
Учетные записи, доверенные для делегирования(userAccountControl:1.2.840.113556.1.4.803:=524288)
Чувствительные и недоверенные для делегирования учетные записи(userAccountControl:1.2.840.113556.1.4.803:=1048574)
Все группы распространения (прим. 4, 15)(&(objectCategory=group)
(!groupType:1.2.840.113556.1.4.803:=2147483648))
Все группы безопасности (прим. 4)(groupType:1.2.840.113556.1.4.803:=2147483648)
Все встроенные группы (прим. 4, 16)(groupType:1.2.840.113556.1.4.803:=1)
Все глобальные группы (прим. 4)(groupType:1.2.840.113556.1.4.803:=2)
Все локальные в домене группы (прим. 4)(groupType:1.2.840.113556.1.4.803:=4)
Все универсальные группы (прим. 4)(groupType:1.2.840.113556.1.4.803:=8)
Все глобальные группы безопасности (прим. 17)(groupType=-2147483646)
Все универсальные группы безопасности (прим. 17)(groupType=-2147483640)
Все локальные в домене группы безопасности (прим. 17)(groupType=-2147483644)
Все глобальные группы распространения(groupType=2)
Все объекты с имемем участника-службы(servicePrincipalName=*)
Пользователи с параметром "Разрешить доступ" на вкладке "Входящие звонки"
(прим. 6)
(&(objectCategory=person)(objectClass=user)
(msNPAllowDialin=TRUE))
Группы, созданные после  1 марта 2011(&(objectCategory=group)
(whenCreated>=20110301000000.0Z))
Пользователи, обязанные изменить свой пароль при следующем входе в систему(&(objectCategory=person)(objectClass=user)
(pwdLastSet=0))
Пользователи, сменившие свои пароли после
15.04.2011  (прим. 7)
(&(objectCategory=person)(objectClass=user)
(pwdLastSet>=129473172000000000))
Пользовали с "основной" группой, отличающейся от
"Пользователи домена"
(&(objectCategory=person)(objectClass=user)
(!primaryGroupID=513))
Компьютеры с  "основной" группой "Контроллеры домена"(&(objectCategory=computer)(primaryGroupID=515))
Объект с GUID
"90395FB99AB51B4A9E9686C66CB18D99" (прим. 8)
(objectGUID=\90\39\5F\B9\9A\B5\1B\4A\9E\96
\86\C6\6C\B1\8D\99)
Объект с SID "S-1-5-21-73586283-152049171
-839522115-1111" (прим. 9)
(objectSID=S-1-5-21-73586283-152049171
-839522115-1111)
Объект с  SID "010500000000000515
0000006BD662041316100943170A3257040000"
(прим. 9)
(objectSID=\01\05\00\00\00\00\00\05\15
\00\00\00\6B\D6\62\04\13\16\10\09\43\17\0A\32
\57\04\00\00)
Компьютеры, не являющиеся контроллерами домена (прим. 4)(&(objectCategory=computer)
(!userAccountControl:1.2.840.113556.1.4.803:=8192))
Все контроллеры домена (прим. 4)(&(objectCategory=computer)
(userAccountControl:1.2.840.113556.1.4.803:=8192))
Все контроллеры домена (прим. 14)(primaryGroupID=516)
Все компьютеры с Windows Server(&(objectCategory=computer)
(operatingSystem=*server*))
Все с Windows Server, исключая контроллеры домена (прим. 4)(&(objectCategory=computer)
(operatingSystem=*server*)
(!userAccountControl:1.2.840.113556.1.4.803:=8192))
Прямые члены группы(memberOf=cn=Test,ou=East,dc=Domain,dc=com)
Пользователя - не прямые члены указанной группы(&(objectCategory=person)(objectClass=user)
(!memberOf=cn=Test,ou=East,dc=Domain,dc=com))
Группы с указанным прямым членом(member=cn=Jim Smith,ou=West,
dc=Domain,dc=com)
Все члены группы, включая вложенность групп (прим. 10)(memberOf:1.2.840.113556.1.4.1941:=
cn=Test,ou=East,dc=Domain,dc=com)
все группы, членом которых является указанный пользователь, учитывая вложенность групп (прим. 10)(member:1.2.840.113556.1.4.1941:=
cn=Jim Smith,ou=West,dc=Domain,dc=com)
Объекты с givenName "Василий*" и sn "Пупкин*", или cn "Василий Пупкин*" (прим. 11)(anr=Василий Пупкин*)
Атрибуты контейнера "Schema", реплицируемые в глобальный каталог (прим. 6, 12)(&(objectCategory=attributeSchema)
(isMemberOfPartialAttributeSet=TRUE))
Атрибуты схемы, не реплицируемые на другие контроллеры домена (прим. 4, 12)(&(objectCategory=attributeSchema)
(systemFlags:1.2.840.113556.1.4.803:=1))
Все связи сайтов в контейнере configuration (Прим. 13)(objectClass=siteLink)
Объекты nTDSDSA связаные с глобальными каталогами. Позволяет определить контроллеры домена с глобальным каталогом. (Прим. 4)(&(objectCategory=nTDSDSA)
(options:1.2.840.113556.1.4.803:=1))
Объект nTDSDSA связанный с ролью PDC-эмулятора. Позволяет определить контроллер домена с FSMO-ролью PDС-эмулятор (прим. 18).(&(objectClass=domainDNS)(fSMORoleOwner=*))
Объект nTDSDSA связанный с ролью Владелец относительных идентификаторов. Позволяет определить контроллер домена с FSMO-ролью Владелец относительных идентификаторов (прим. 18).(&(objectClass=rIDManager)(fSMORoleOwner=*))
Объект nTDSDSA связанный с ролью владелец инфраструктуры. Позволяет определить контроллер домена с FSMO-ролью владелец инфраструктуры (прим. 18).(&(objectClass=infrastructureUpdate)(fSMORoleOwner=*))
Объект nTDSDSA связанный с ролью владелец доменных имен. Позволяет определить контроллер домена с FSMO-ролью владелец доменных имен(прим. 18).(&(objectClass=crossRefContainer)(fSMORoleOwner=*))
 Объект nTDSDSA связанный с ролью владелец схемы. Позволяет определить контроллер домена с FSMO-ролью владелец схемы (прим. 18).(&(objectClass=dMD)(fSMORoleOwner=*))
Все серверы Exchange в контейнере Configuration
(прим. 13)
(objectCategory=msExchExchangeServer)
Объекты, защищенные AdminSDHolder(adminCount=1)
Все отношения доверия(objectClass=trustedDomain)
Все объекты групповой политики(objectCategory=groupPolicyContainer)
Все контроллеры домена, доступные только для чтения (прим. 4)(userAccountControl:1.2.840.113556.1.4.803:=67)

Примечания


1. Фильтр (sAMAccountType=805306368) более эффективен для объектов "пользователь" 
2. Обратный слеш должен быть заменен на \5C 
3. Астериск "*" должен быть заменена на \2A 
4. Строка 1.2.840.113556.1.4.803 указывает LDAP_MATCHING_RULE_BIT_AND. Обозначает побитовое "И" атрибута флага, например userAccounControl, groupType или systemFlags и битовая маска (2, 32, 65536). Условие возвращает "Истину", когда побитовое "И" значения атрибута и битовой маски не равно нулю, что указывает на установку бита. 
5. Атрибут accountExpires имеет тип Integer8, 64-битное значение, представляющее дату в UTC - количество интервалов в 100 наносекунд, начиная с 12:00 01.01.1601. Если срок действия учетной записи не ограничен, то атрибут accountExpires равен 0 или 2^63-1 (9,223,372,036,854,775,807 - наибольшее Interger64 число), оба значат "никогда". 
6. При фильтрации атрибутов типа Boolean (булевые), например msNPAllowDialin или isMemberOfPartialAttributeSet, значения TRUE и FALSE должны быть введены в верхнем регистре. 
7. Атрибут pwdLastSet имеет тип Integer8. 
8. Байтовые массивы, например objectGUID, могут быть представлены как последовательность исключаемых шестнадцатеричных байтов. GUID {b95f3990-b59a-4a1b-9e96-86c66cb18d99} имеет hex-представление 90395fb99ab51b4a9e9686c66cb18d99". Порядок первых восьми байтов изменен. 
9. objectSID хранится как байтовый массив. Можно указывать как десятичный формат S-1-5-21-73586283-152049171-839522115-1111 или шестнадцатеричное представление, где каждый байт исключен \01\05\00\00\00\00\00\05\15\00\00\00\6B\D6\62\04\13\16\10\09\43\17\0A\32\57\04\00\00", что позже можно использовать в VBScript. 
10. Строка 1.2.840.113556.1.4.1941 указывает LDAP_MATCHING_RULE_IN_CHAIN. Применимо только к DN-атрибутам. Это расширенный оператор совпадения, проходящий по цепи наследования к корню до тех пор, пока не найдет совпадение. Выявляет вложенность групп. Доступен на контроллерах домена с Windows Server 2003 SP2 и более поздних версий. 
11. Строка "anr" обозначает "неоднозначное разрешение имен" (Ambiguous Name Resolution). Подробнее здесь http://www.rlmueller.net/AmbiguousNameResolution.htm 
12. Для запросов к атрибутам схемы нужно использовать поиск по контейнеру Schema, например, cn=Schema,cn=Configuration,dc=MyDomain,dc=com. 
13. Для запросов к атрибутам конфигурации нужно использовать поиск по контейнеру Configuration, например cn=Configuration,dc=MyDomain,dc=com. 
14. Основной группой для контроллеров домена должна быть "Контроллеры домена" с известным RID, равным 516. 
15. Многие LDAP-фильтры различных типов групп AD могут использовать атрибут groupType и опускать условие (objectCategory=group), т.к. только группы имеют атрибут groupType. Например, фильтр (groupType=2) вернет все глобальные группы распространения. При использовании оператора "НЕТ", например (!groupType:1.2.840.113556.1.4.803:=2147483648) для групп распространения (группы, не являющиеся группами безопасности) вернет все объекты без атрибута groupType. Таким образом, нужно использовать дополнительное условие (objectCategory=group). 
16. Может показаться, что LDAP-фильтр для встроенных групп безопасности может быть (groupType=2147483649) или (groupType=-2147483643). т.к. побитовое "ИЛИ" между 2147483648 (маска групп безопасности) и 1 (маска встроенных групп) даст обозначенный результат. Однако результат фильтра будет пустым, т.к. встроенные группы являются локальными в домене.Нужно применить "ИЛИ" между полученными значениями и "4" (маска локальных в домене групп). Результат (2147483643 ИЛИ 1 ИЛИ 4) = 2147483653, после вычитания 2^32 станет -2147483643. Можно использовать как (groupType=2147483653), так и (groupType=-2147483643) для получения встроенных локальных в домене групп безопасности. Однако, проще использовать фильтр по условию (groupType:1.2.840.113556.1.4.803:=1). 
17. Атрибуты userAccountControl и groupType принимают целочисленные 32-битные значения, т.е. от -2^31 до 2^31 - 1 или от -2147483648 до 2147483647. Значения, назначенные этим атрибутам будут результатом побитового "ИЛИ" указанной маски для каждого значения. Например, значение groupType для для универсальной группы безопасности определяется применением "ИЛИ" к маске универсальной группы 8 и и группы безопасности 2147483648. Результат (8 ИЛИ 2147483648) равен 2147483656. Данное значение превышает допустимое для целочисленного 32-битного значения, поэтому оно обращается в отцательно число. 2147483656 становится -2147483640. Правило сделюущее - если целочисленное 32-битное поле превышает 2^31-1, то нужно вычесть из него 2^32 (4294967296). Таким образом groupType для универсальной грппы безопасности становится 2147967296 - 4294967296 = -2147483640. Это значение можно увидеть через "редактирование ADSI". Предпочтительно использование менно отрицательного значения, что является требованием для VBScript, т.к. его побитовые операторы могут обрабатывать только целочисленные 32-битные значения.
18. Существует 5 FSMO ролей. Для эмулятора PDC, владельца относительных эмуляторов и владельца инфраструктуры нужно опрашивать домен. Для владельца схемы нужно опрашивать контейнер schema, например cn=Schema,cn=Configuration,dc=MyDomain,dc=com. Для владельца доменных имен нужно опрашивать контейнер configuration, например cn=Configuration,dc=MyDomain,dc=com. В любом случае запрос вернет объекта типа nTDSDSA. Родитель данного объекта будет иметь относительное уникальное имя, указывающее на контроллер домена. Родительский объект имеет атрибут dnsHostName равный DNS-имени контроллера домена с требуемой FSMO-ролью. 

Список литературы:
Active Directory: Использование LDAP-фильтров (ru-RU)
Оригинал статьи о фильтрах LDAP: Active Directory: LDAP Syntax Filters (en-US)
Синтаксис фильтров: http://msdn.microsoft.com/en-us/library/aa746475%28v=VS.85%29.aspx 

Источник: https://bga68.livejournal.com/24636.html

Комментариев нет:

Отправить комментарий