вторник, 16 апреля 2013 г.

ACTIVE DIRECTORY DOMAIN SERVICES - вспоминаем некоторые интересные факты (Total Recall part #3): Группа Everyone имеет право Change Password в свойствах любой учётной записи Active Directory

Почему Everyone имеет право Change Password в свойствах любой учётной записи Active Directory?

Если включить в оснастке ADUC функцию Advanced View и открыть вкладку Security любой учётной записи, вы с удивлением обнаружите, что группа  Everyone имеет право Change Password.

Неужели любой человек сможет сбросить пароль любому человеку?


На самом деле нет.

Данное разрешение необходимо для работы механизма смены пароля в Active Directory, как для пользовательских учётных записей, так и для учётных записей компьютеров.

Давайте рассмотрим как работает этот механизм  на примере (некоторые шаги подробно не описаны, так как это не входит в материал данной статьи):

1. Пользователь на экране входа вводит логин и пароль;
2. Рабочая станция передаёт хеш данных пользователя  на контроллер домена;
3. Контроллер домена в свойствах учётной записи пользователя обнаруживает включенную опцию "сменить пароль при первом входе" или "срок действия пароля истёк" и предлагает сменить пароль, введя старый пароль и новый (с подтверждением).
4. Пользователь вводит старый пароль (тем самым подтверждая, что это действительно он) и новый пароль, который будет использовать в дальнейшем.
5. Контроллер домена обрабатывает эти данные и на основе их формирует TGT.



На этапе 2 и  3 по сути своей происходит анонимное подключение, так как пароль пользователя больше недействителей и его необходимо сменить.  Именно поэтому группа Everyone имеет явные разрешения Change Password.

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

Если же мы включим опцию "User cannot change password" мы увидем, что разрешение Change Password для группы Everyone  сменилось на явное Deny (аналогично у группы SELF).

Если убрать разрешение Change Password для группы Everyone, то механизм смены пароля в Active Directory перестанет работать и по истечению срока действия пароля пользователи или компьютеры не смогут войти в домен.

ACTIVE DIRECTORY DOMAIN SERVICES - вспоминаем некоторые интересные факты (Total Recall part #2): Infrastructure Masters

Вспоминаем про InfrastructureMaster и ForestDNSZones (и DomainDNSZones).
Можно обнаружить в некоторых развёрнутых службах каталога Microsoft Active Directory Domain Services интересную вещь:
если выполнить команду NETDOM /QUERY:FSMO, и с помощью ADSI (или dsquery) подключиться к контексту наименования леса или домена (к примеру: DC=ForestDnsZones,DC=<domain>,DC=<suffix> или DC=DomainDnsZones,DC=<domain>,DC=<suffix>)  и исследовать раздел, мы увидим в атрибутах объекта CN=Infrastructure имя сервера, которое может отличаться от имени FSMO Domain Infrastructure Master, полученного с помощью NETDOM

Связанно это с тем, что для создания reference-link'ов в разделе Application нужен свой Infrastructure Master. Domain Infrastructure Master не может содержать раздел Application, имеющий свою собственную область репликации.

Более того, количество мастеров инфраструктуры зависит от количества доменов в лесу.То есть будут существовать:
  • один мастер инфраструктуры для раздела ForestDNSZones;
  • один для каждого нового домена в лесу;
  • один для каждой зоны DomainDNSZones, в разделе службы каталога Application в лесу WS 2003 или выше (при этом они могут находиться на одном и том же сервере c Domain Infrastructure Master);

К примеру, у Вас в инфраструктуре 3 домена, итого количество FSMO ролей будет следующим:

  • 1 Schema Master
  • 1 Domain Naming Master
  • 3 PDC-Emulators
  • 3 RID-Masters
  • 7 Infrastructure Masters (3 для Domain Infrastructure Masters + 1 for the ForestDnsZones + 3 для DomainDnsZones для каждого домена)
И так, в чём подвох? В целом, хозяин Infrastructure ForestDNSZones или DomainDNSZones не является критичным и используется только DNS. Но необходимо владеть этой информацией, если вы получаете ошибки при попытке подготовить домен (к примеру: для использования RODC, командой adprep /rodcprep), чтобы понять, как исправить проблему. 

В этом случае, если открыть свойства fSMORoleOwner объекта CN=Infrastructure в разделе DomainDNSZones или ForestDNSZones можно увидеть следующее:
“CN=NTDS Settings\0ADEL:b6bc57e7-dbbf-41e5-82d2-7bc4b166af3f,CN=<OLDServername>\0ADEL:ae93f586-9bd8-4ec3-af7f-53afaf612beb,CN=Servers,CN=<SiteName>,CN=Sites,CN=Configuration,DC=DOMAIN,DC=RU”.
Это говорит о том, что сервер был когда то некорректо удалён или произошел другой сбой, а роль не была передана. Данную проблему можно исправить скриптом http://support.microsoft.com/kb/949257, либо подключившись в серверу, который держит роль Infrastructure Master, зайти в ADSI и прописать корректный сервер.

Формат записи:

CN=NTDS Settings,CN=<hostname>,CN=Servers,CN=<sitename>,CN=Sites, CN=Configuration,DC=DOMAIN,DC=RU

Если не подключиться к Infrastructure Master, то при изменении атрибута fSMORoleOwner можно получить ошибку: 

"000020Ae: svcErr:DSID-031524F1, problem 5003 (WILL_NOT_PERFORM), data 0"

четверг, 11 апреля 2013 г.

ACTIVE DIRECTORY DOMAIN SERVICES - вспоминаем некоторые интересные факты (Total Recall part #1): Настройка отображения DisplayName в порядке "фамилия, имя" при создании нового пользователя в Active Directory.

Привет всем.
Данный цикл статей посвящён Active Directory Domain Services.
Я предлагаю вспомнить некоторые особенности, которые могут пригодиться в работе. Хотя в большинстве своём данная информация пылится на полках нашей памяти без применения.


Настройка отображения DisplayName  в порядке "фамилия, имя" при создании нового пользователя в Active Directory.


  1. Подключитесь к контексту наименования Configuration через консоль ADSI;
  2. Разверите узел контейнера Configuration;
  3. Найдите и разверните узел cn=DisplaySpecifiers и дважды щелкните контейнер CN=419 (419 – это код русского языка,  код английского языка (США) – 409).
  4. В правой панели раскройте Properties элемента CN=user-Display и перейдите к свойству createDialog.
  5. Установите атрибут: %<sn>.%<givenName>.
  6. Нажмите OK.
  7. Нажмите кнопку ОК, чтобы закрыть диалоговое окно.

ПРИМЕЧАНИЕ! Код языка можно узнать в данной ветке реестра

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ContentIndex\Language\YOUR LANGUAGE\Locale