Using useraccountcontrol flags to manipulate properties

Настройка атрибутов учетных записей пользователей

Список флагов свойств

Эти атрибуты можно просмотреть и изменить с помощью средства Ldp.exe или оснастки Adsiedit.msc.

В следующей таблице перечислены возможные флаги, которые можно назначить. Вы не можете задать некоторые значения для объекта пользователя или компьютера, так как эти значения могут быть заданы или сброшены только службой каталогов. Значения Ldp.exe отображаются в шестнадцатеричном формате. Значения Adsiedit.msc отображает в десятичном формате. Флаги являются накопительными. Чтобы отключить учетную запись пользователя, задайте для атрибута UserAccountControl значение 0x0202 (0x002 + 0x0200). В десятичном формате это 514 (2 + 512).

Примечание.

Active Directory можно редактировать непосредственно в Ldp.exe и Adsiedit.msc. Только опытные администраторы должны использовать эти средства для изменения Active Directory. Оба средства доступны после установки средств поддержки с исходного установщика Windows.

Флаг свойства Значение в шестнадцатеричном формате Значение в десятичном формате
SCRIPT 0x0001 1
ACCOUNTDISABLE 0x0002 2
HOMEDIR_REQUIRED 0x0008 8
LOCKOUT 0x0010 16
PASSWD_NOTREQD 0x0020 32
PASSWD_CANT_CHANGEЭто разрешение нельзя назначить путем непосредственного изменения атрибута UserAccountControl. Сведения о том, как задать разрешение программным способом, см. в разделе . 0x0040 64
ENCRYPTED_TEXT_PWD_ALLOWED 0x0080 128
TEMP_DUPLICATE_ACCOUNT 0x0100 256
NORMAL_ACCOUNT. 0x0200 512
INTERDOMAIN_TRUST_ACCOUNT 0x0800 2048
WORKSTATION_TRUST_ACCOUNT 0x1000 4096
SERVER_TRUST_ACCOUNT 0x2000 8192
DONT_EXPIRE_PASSWORD 0x10000 65536
MNS_LOGON_ACCOUNT 0x20000 131072
SMARTCARD_REQUIRED 0x40000 262144
TRUSTED_FOR_DELEGATION 0x80000 524288
NOT_DELEGATED 0x100000 1048576
USE_DES_KEY_ONLY 0x200000 2097152
DONT_REQ_PREAUTH 0x400000 4194304
PASSWORD_EXPIRED 0x800000 8388608
TRUSTED_TO_AUTH_FOR_DELEGATION 0x1000000 16777216
PARTIAL_SECRETS_ACCOUNT 0x04000000 67108864

Примечание.

В домене под управлением Windows Server 2003 LOCK_OUT и PASSWORD_EXPIRED были заменены новым атрибутом ms-DS-User-Account-Control-Computed. Дополнительные сведения об этом новом атрибуте см. в описании атрибута ms-DS-User-Account-Control-Computed.

LastLogon

    LastLogon is nothing but the latest time of a user logged on into AD based system, which is non replicable attribute. It means the value of this attribute is specific to Domain Controller. So we can’t say the user’s True LastLogon time by simply querying only one DC. To get an accurate value for the user’s last logon in the domain, the LastLogon attribute for the user must be retrieved from every domain controller in the domain. The largest value that is retrieved is the True LastLogon time for that user.

  Example

Consider the user User1and domain controllers DC1 and DC2.

  • User1 logs in to DC1 on the time T1
  • User1 logs in to DC2 on the time T2            

UserAccountControl 66048 – Enabled and Don’t Expire User Password

To set user password never expires on the enabled user account, we require user normal account flag and password don’t expired flag.

Refer to the above UserAccountControl flag table.

NORMAL_ACCOUNT property flag has hexadecimal value = 0x0200 and decimal = 512

DONT_EXPIRE_PASSWORD property flag has hexadecimal value = 0x10000 and decimal value = 65536

Property flag Value in hexadecimal Value in decimal
NORMAL_ACCOUNT 0x0200 512
DONT_EXPIRE_PASSWORD 0x10000 65536
Enabled, Don’t Expire Password 0x10200 66048

UserAccountControl 66048 – Enabled,don’t expire password

Let’s sum up flag values to get cumulative value.

Hexadecimal value = 0x200 + 0x10000 = 0x10200

Decimal value = 512 + 65536 = 66048

Assign Active Directory UserAccountControl attribute to 66048 to set user password never expired.

UserAccountControl 66048 – Enabled User Account with Password never expires.

Cool Tip: How to remove a user from the group in PowerShell!

UserAccountControl 2080 – InterDomain Trust Account, Password not required

To set up a workstation trust account with a password not required, we need the WORKSTATION_TRUST_ACCOUNT flag and PASSWD_NOTREQD flag.

Property flag Value in hexadecimal Value in decimal
INTERDOMAIN_TRUST_ACCOUNT 0x0800 2048
PASSWD_NOTREQD 0x0020 32
InterDomain trust account with a password not required 0x0820 2080

UserAccountControl 2080- InterDomain Trust Account with password not required

In the above table, we have summed up all the property flags to get cumulative value for a disabled user account for password not required.

Modify the value of the UserAccountControl attribute to 2080 in adsiedit.msc tool.

UserAccountControl 2080 – InterDomain Trust Account with Password not required.

Find accounts with a certain flag

With this script, it is quite easy to output all active flags for single accounts. However, in practice, you often want to find all accounts that have a certain flag set.

In some cases, you don’t need to drill down into the value of UserAccountControl, because PowerShell provides simpler methods for querying certain flags. For example, this is true for:

  • Password never expires: Get-ADUser -Filter ‘PasswordNeverExpires -eq $TRUE’
  • Password not required: Get-ADUser -Filter ‘PasswordNotRequired -eq $TRUE’
  • Find disabled accounts in Active Directory: Search-ADAccount -AccountDisabled
  • Show locked accounts with PowerShell: Search-ADAccount -LockedOut

But if you want to find out which accounts allow passwords to be stored in a decryptable format, you could use the following query:

Get-ADUser -Filter * -Properties UserAccountControl |
Where { $_.UserAccountControl -band 128} | Select name

This call uses a bitwise and to determine if the ENCRYPTED_TEXT_PWD_ALLOWED flag is set.

As you can see from the table above, it represents the eighth digit of the binary number (2 ^ 7 = 128; counting starts at bit 0). If you apply to it a -band- operation with the value 128 and the result is $true, then you know that the flag is set.

Following the same pattern, you can use the values for the other flags in this query:

Get-ADComputer -Filter * -Properties UserAccountControl |
Where { $_.UserAccountControl -band 524288 } | Select name

This example would identify computer accounts that are trusted with Kerberos delegation.

UserAccountControl 4128 – WorkStation Trust Account, Password not required

To set up a workstation trust account with a password not required, we need the WORKSTATION_TRUST_ACCOUNT flag and PASSWD_NOTREQD flag.

Property flag Value in hexadecimal Value in decimal
WORKSTATION_TRUST_ACCOUNT 0x1000 4096
PASSWD_NOTREQD 0x0020 32
Workstation trust account with a password not required 0x1020 4128

UserAccountControl 4128- WorkStation Trust Account with password not required

In the above table, we have summed up all the property flags to get cumulative value for a disabled user account for password not required.

Modify the value of the UserAccountControl attribute to 4128 in adsiedit.msc tool.

UserAccountControl 4128 – Workstation Trust Account with Password not required.

UserAccountControl Flags or Attribute Values

All UserAccountrol flag values are shown in the table.

Property flag Value in hexadecimal Value in decimal
SCRIPT 0x0001 1
ACCOUNTDISABLE 0x0002 2
HOMEDIR_REQUIRED 0x0008 8
LOCKOUT 0x0010 16
PASSWD_NOTREQD 0x0020 32
PASSWD_CANT_CHANGE 0x0040 64
ENCRYPTED_TEXT_PWD_ALLOWED 0x0080 128
TEMP_DUPLICATE_ACCOUNT 0x0100 256
NORMAL_ACCOUNT 0x0200 512
INTERDOMAIN_TRUST_ACCOUNT 0x0800 2048
WORKSTATION_TRUST_ACCOUNT 0x1000 4096
SERVER_TRUST_ACCOUNT 0x2000 8192
DONT_EXPIRE_PASSWORD 0x10000 65536
MNS_LOGON_ACCOUNT 0x20000 131072
SMARTCARD_REQUIRED 0x40000 262144
TRUSTED_FOR_DELEGATION 0x80000 524288
NOT_DELEGATED 0x100000 1048576
USE_DES_KEY_ONLY 0x200000 2097152
DONT_REQ_PREAUTH 0x400000 4194304
PASSWORD_EXPIRED 0x800000 8388608
TRUSTED_TO_AUTH_FOR_DELEGATION 0x1000000 16777216
PARTIAL_SECRETS_ACCOUNT 0x04000000 67108864

UserAccountControl Attribute Table

UserAccountControl 514 – Disable User Account

To disable a user account, we require a user’s normal account flag value and the Disabled account flag value.

Refer to the above UserAccountControl table,

NORMAL_ACCOUNT property flag has hexadecimal value = 0x0200 and decimal = 512

ACCOUNTDISABLE property flag has hexadecimal value = 0x0002 and decimal = 2

Property flag Value in hexadecimal Value in decimal
NORMAL_ACCOUNT 0x0200 512
ACCOUNTDISABLE 0x0002 2
Disabled, Don’t Expire Password 0x0202 514

UserAccountControl 514 – Disabled User Account

UserAccountControl flags are cumulative. Sum up the hexadecimal value ( 0x0200 + 0x0002 = 0x0202) and decimal value ( 512+2 = 514)

ldp.exe tool shows the value in hexadecimal hence set UserAccountControl 0x0202 value to disable user account.

adsiedit.msc snap-in tool shows the value in decimal, hence setting UserAccountControl 514 value to disable a user account.

UserAccountControl 514 – Disabled User Account.

Cool Tip: How to get aduser samaccountname in PowerShell!

Get-ADComputer — синтаксис использования командлета

Чтобы получать информацию из AD с помощью командлетов из модуля AD для PowerShell, вам не нужны права администратора домена. Достаточно, чтобы учётная запись, под которой запускается командлет, была членом группы «Domain Users / Authenticated Users».

Чтобы получить информацию о конкретной учётной записи компьютера в домене, укажите её имя в качестве аргумента параметра -Identity:

Get-ADComputer -Identity hackware-server

Пример вывода:

DistinguishedName : CN=HACKWARE-SERVER,OU=Domain Controllers,DC=ds,DC=hackware,DC=ru
DNSHostName       : HackWare-Server-2022.ds.hackware.ru
Enabled           : True
Name              : HACKWARE-SERVER
ObjectClass       : computer
ObjectGUID        : 77e65141-ebec-4728-a1cc-563199d86bf8
SamAccountName    : HACKWARE-SERVER$
SID               : S-1-5-21-670420343-3848213752-1643348011-1000
Get-ADComputer -Identity hackware-server -Properties *

Используя Get-Member, вы можете получить список всех свойств объекта ADComputer:

Get-ADComputer -Filter * -Properties * | Get-Member

Дата последнего входа компьютеров в сеть указана в атрибуте LastLogonDate.

Командлет Get-ADComputer позволяет отображать любые свойства компьютера в результатах выполнения команды. Удалите всю ненужную информацию, оставив только значения атрибутов Name и LastLogonDate.

Get-ADComputer -identity hackware-win -Properties * | Format-Table Name,LastLogonDate -Autosize

Итак, мы получили данные о последней регистрации в домене для отдельного компьютера. Затем вам нужно изменить команду, чтобы она отображала информацию о времени последней сетевой регистрации для всех компьютеров в домене. Для этого замените -Identity на -Filter *:

Get-ADComputer -Filter * -Properties * | Format-Table Name,LastLogonDate -Autosize

У нас получилась простая таблица, которая содержит всего 2 поля: имя компьютера и дата LastLogonData. Вы можете добавить в эту таблицу другие поля объекта ADComputer.

Чтобы отобразить информацию об объектах компьютеров в определённом OU (организационном подразделении), используйте параметр -SearchBase:

Get-ADComputer -SearchBase 'OU=Paris,DC=woshub,DC=loc' -Filter * -Properties * | Format-Table Name,LastLogonDate -Autosize

Отсортируйте результаты запроса по дате последнего входа в систему с помощью командлета Sort-Object:

Get-ADComputer -Filter * -Properties * | Sort-Object LastLogonDate | Format-Table Name,LastLogonDate -Autosize

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

Используя Get-Date, мы можем получить значение текущей даты в переменной и уменьшить его до 120 дней:

$date_with_offset = (Get-Date).AddDays(-120)

Полученную переменную даты можно использовать как фильтр запроса Get-ADComputer в поле LastLogonDate:

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort-Object LastLogonDate | Format-Table Name,LastLogonDate -Autosize

Итак, мы создали список неактивных учётных записей компьютеров, которые не регистрировались в сети более 120 дней. Используйте команду Disable-ADAccount или Set-ADComputer, чтобы отключить их.

Совет. В первый раз лучше проверить результаты выполнения команды с помощью переключателя -WhatIf, который позволяет увидеть, что произойдёт, если бы команда была запущена, но при этом в системе ничего изменено не будет.

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -WhatIf

Теперь вы можете отключить все неактивные учётные записи компьютеров:

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false

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

Breaking down the attribute value

As a result, you get the decimal value of the attribute, which you then have to interpret yourself. One way to do this is to convert it to a binary number, and then rattle through each of its digits to see if it is set to 1. If it is, then print the corresponding flag.

$UACFlags = @("SCRIPT", "ACCOUNTDISABLE", "RESERVED", "HOMEDIR_REQUIRED", "LOCKOUT", "PASSWD_NOTREQD", "PASSWD_CANT_CHANGE", "ENCRYPTED_TEXT_PWD_ALLOWED", "TEMP_DUPLICATE_ACCOUNT", "NORMAL_ACCOUNT", "RESERVED", "INTERDOMAIN_TRUST_ACCOUNT", "WORKSTATION_TRUST_ACCOUNT", "SERVER_TRUST_ACCOUNT", "RESERVED", "RESERVED", "DONT_EXPIRE_PASSWORD", "MNS_LOGON_ACCOUNT", "SMARTCARD_REQUIRED", "TRUSTED_FOR_DELEGATION", "NOT_DELEGATED", "USE_DES_KEY_ONLY", "DONT_REQ_PREAUTH", "PASSWORD_EXPIRED", "TRUSTED_TO_AUTH_FOR_DELEGATION", "RESERVED", "PARTIAL_SECRETS_ACCOUNT", "RESERVED", "RESERVED", "RESERVED", "RESERVED", "RESERVED"
)
#read the attribute value of UserAccountControl
$UAC = Get-ADUser <username> -properties UserAccountControl |
select UserAccountControl
#convert it to a binary representation and reverse the array
$a = (::ToString($UAC.UserAccountControl,2)).ToCharArray()
::Reverse($a)
#iterate though the array to see which flag is set
0 .. $a.Length | foreach {
    if( $a -eq "1" ) { $UACFlags }
}

The above script converts the binary representation of the attribute value into a character array and reverses its order because the check must start with the lowest digit, i.e., from the back.

Идентификатор события блокировки учётной записи 4740

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

Если ближайший к пользователю контроллер домена определяет, что пользователь пытается войти в систему с недопустимыми учётными данными, он перенаправляет запрос проверки подлинности на контроллер домена с эмулятора основного контроллера домена (этот конкретный контроллер домена отвечает за обработку блокировок учётных записей). Если аутентификация на PDC завершается неудачно, он отвечает на первый DC, что аутентификация невозможна. Если количество неудачных проверок подлинности превышает значение, установленное для домена в политике Account Lockout Threshold (Пороговое значение блокировки), учётная запись пользователя временно блокируется.

В этом случае событие с EventID 4740 записывается в журнал безопасности обоих контроллеров домена. Событие содержит DNS-имя (IP-адрес) компьютера, с которого пришел первоначальный запрос на авторизацию пользователя. Чтобы не анализировать журналы на всех контроллерах домена, проще всего искать события блокировки в журнале безопасности на PDC контроллера домена. Вы можете найти PDC в своём домене следующим образом:

(Get-AdDomain).PDCEmulator

События блокировки учётной записи домена можно найти в журнале безопасности на контроллере домена. Чтобы его увидеть, запустите Event Viewer («Просмотр событий»), его можно открыть в командной строке:

eventvwr.msc

В окне Event Viewer («Просмотр событий») перейдите по пути Event Viewer (Local) → Windows Logs → Security (в русскоязычной версии это Просмотр событий (локальный) → Журналы Windows → Безопасность).

В Event Viewer («Просмотр событий») отфильтруйте журнал безопасности по Event ID («Код события») указав значение 4740, для этого нажмите Filter Current Log («Фильтр текущего журнала») и введите в поле <All Event Ids> («Все коды событий») значение 4740.

Вы должны увидеть список последних событий блокировки учётной записи. Найдите событие с нужной вам учётной записью пользователя (имя пользователя указано в значении поля Account Name («Имя учётной записи»). В описании события вы увидите строку A user account was locked out («Учетная запись пользователя была заблокирована»).

Подсказка: в большой среде AD в журнал безопасности на контроллерах домена записывается большое количество событий, которые постепенно перезаписываются новыми. Поэтому рекомендуется увеличить максимальный размер журнала на контроллерах домена и как можно скорее приступить к поиску источника блокировки.

Откройте найденное событие. Имя компьютера (сервера), с которого была произведена блокировка, указывается в поле Caller Computer Name. В моём случае имя компьютера — HACKWARE-WIN.

Устранение неполадок определенных сценариев

Перепроцес для неправильного сопоставления между хост и IP, из-за этого контроллер домена назначения будет извлекаться из неправильного источника.

Продвижение \ \ dc1 + \ \ DC2 + \ \ DC3 в домене. End-to-end replication occurs without errors.

Остановите KDC на DC1 и DC2 для принудительного трафика Kerberos, который можно наблюдать в \ \ \ \ сетевом следе. End-to-end replication occurs without errors.

Создайте запись файла Host для DC2, которая указывает на \ \ IP-адрес dc в удаленном лесу. Это имитация ненадежного сопоставления между хост-ip в записи A/AAAA или, возможно, устаревший объект Параметры NTDS в копии каталога Active Directory контроллера домена назначения.

Запустите сайты и службы Active Directory на консоли \ \ DC1

Щелкните правой кнопкой \ \ мыши входящий объект подключения DC1 из DC2 и обратите внимание, что целевое имя учетной записи является \ \ неправильной ошибкой репликации. Перепроцес для несоответствия пароля контроллера исходных доменов между KDC и контроллером исходных доменов

Перепроцес для несоответствия пароля контроллера исходных доменов между KDC и контроллером исходных доменов.

Продвижение \ \ dc1 + \ \ DC2 + \ \ DC3 в домене. Репликация с концами происходит без ошибок.

Остановите KDC на DC1 и DC2 для принудительного трафика Kerberos, который можно наблюдать \ \ \ \ в сетевом следе

Репликация с концами происходит без ошибок.

Отключение входящие репликации на KDC DC3 для имитации сбоя \ \ репликации на KDC.

Сброс пароля учетной записи компьютера на DC2 три или более раз, чтобы у DC1 и DC2 был текущий пароль \ \ \ \ \ \ для \ \ DC2.

Запустите сайты и службы Active Directory на консоли \ \ DC1

Щелкните правой кнопкой мыши на входящий объект подключения DC1 из DC2 и обратите внимание, что целевое имя учетной записи является \ \ \ \ неправильной ошибкой репликации

Ведение журнала клиента DS RPC
Установите NTDS\Diagnostics Loggings\DS RPC Client = 3. Репликация триггера. Найди событие категории задач 1962 + 1963

Обратите внимание на полностью квалифицированные кадры, указанные в поле службы каталогов. Контроллер домена назначения должен иметь возможность фиксировать эту запись и иметь возвращенную адресную карту на текущий IP-адрес источника dc

Рабочий процесс Kerberos
Рабочий процесс Kerberos включает следующие действия:

Клиентский компьютер вызывает функцию IntializeSecurityContext и указывает поставщика поддержки безопасности Negotiate (SSP).

Клиент обращается к KDC с TGT и запрашивает TGS-билет для целевого контроллера домена.

KDC ищет глобальный каталог для источника (e351 или имени хост-кодов) в области контроллера домена назначения.

Если контроллер целевого домена находится в области контроллера домена назначения, KDC предоставляет клиенту билет на обслуживание.

Если целевой контроллер домена находится в другой области, KDC предоставляет клиенту билет на направление.

Клиент контактов KDC в домене целевого контроллера домена и запрашивает билет на обслуживание.

Если SPN контроллера домена источника не существует в области, вы получите KDC_ERR_S_PRINCIPAL_UNKNOWN ошибку.

Контроллер домена назначения связался с объектом и представил свой билет.

Если целевой контроллер домена владеет именем в билете и может расшифровать его, проверка подлинности работает.

Если в целевом контроллере домена размещен UUID-службы сервера RPC, ошибка Kerberos KRB_AP_ERR_NOT_US или KRB_AP_ERR_MODIFIED перенаправляется в следующее:

Отключить срок действия пароля для учетной записи

Если вам нужно сделать срок действия пароля определенной учетной записи неограниченным, нужно включить опцию Password Never Expires в свойствах пользователя в AD (это одно из битовых значений атрибута UserAccountControl).

Либо вы можете включить эту опцию через PowerShell:

Можно установить флаг Password Never Expires сразу для нескольких пользователей, список которых содержится в текстовом файле:РЕКЛАМА•MEDIASNIPERhttps://yastatic.net/safeframe-bundles/0.83/1-1-0/render.html

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

0x02 пользователь машины

По умолчанию машина, присоединяющаяся к домену, по умолчанию находится в контейнере CN = Computer, а контроллер домена по умолчанию находится в Контроллерах домена OU. Некоторые домены будут изменены через redircmp

1. Отношения между пользователями машины и пользователями системы

Рассматривая такой сценарий, если вы получаете машину с доменом, вы обнаруживаете, что пользователей домена нет. В то время многие люди использовали mimikatz, чтобы поймать его, но они были беспомощны, если не поймали пользователя домена.

Мы просто нажимаем на компьютер домена, здесь мы берем WIN7 в качестве теста.

Смотрим на его объектный класс.

Выяснилось, что он является представителем компьютерного класса.

А компьютерный класс является подклассом пользовательского класса. Пользователи домена являются экземплярами класса пользователей. Ранее мы говорили, что класс — это набор атрибутов. Подкласс наследует все атрибуты родительского класса, поэтому атрибуты, которые должен иметь пользователь домена, есть у пользователя вычислений, даже мы можем сказать, что пользователь машины является своего рода пользователем домена.

Возвращаясь к предыдущему вопросу, если вы получаете машину в домене, вы обнаруживаете, что в домене нет пользователя. Как мы уже говорили выше, пользователь машины на самом деле является пользователем домена, так как же нам использовать этого пользователя машины? Фактически, локальный пользователь SYSTEM соответствует пользователю машины в домене. Имя пользователя в домене — это имя машины + $. Например, для win7 его имя машины — WIN7, затем его имя для входа в домен — win7 $. О sAMAccountName мы находимся в предыдущем Раздел уже пройден.

Таким образом, мы можем направить текущего пользователя в систему (неадминистраторам необходимо взаимодействовать с уязвимостью повышения привилегий, неадминистраторам в группе администраторов требуется bypassuac, а администраторы обращаются к системе. В Интернете существует множество методов, таких как psexec, mimikatz и т. Д.). Вы можете действовать как пользователь компьютера в домене.

Или возьмите хеш напрямую.

2. Найдите все машины в домене

Вы можете найти все машины в домене через objectclass = Computer или objectcategory = Computer

adfind предоставляет несколько быстрых клавиш для запросов к компьютерам.

Все контроллеры домена в домене находятся в подразделении контроллера домена. Вы можете найти все контроллеры домена в домене, проверив машины в этом подразделении.

adfind также предоставляет несколько быстрых клавиш для запроса управления доменом.

Изменение пароля пользователя Windows Active Directory и LDS с помощью LDAP

В этой статье описывается изменение пароля пользователя active Directory Windows LDS с помощью LDAP.

Применяется к: Windows Active Directory Исходный номер КБ: 269190

Сводка

Вы можете установить Windows Active Directory и пароль пользователя LDS с помощью протокола доступа к облегченным каталогам (LDAP) с учетом определенных ограничений. В этой статье описывается настройка или изменение атрибута пароля.

Эти действия также применяются к пользователям ADAM и LDS и объектам userProxy так же, как это делается с пользователями AD.

Эта статья применяется к Windows 2000. Поддержка Windows 2000 заканчивается 13 июля 2010 г. Центр Windows 2000 года является отправной точкой для планирования стратегии миграции с 2000 г. Windows 2000 г. Дополнительные сведения см. в политике жизненного цикла поддержки Майкрософт.

Дополнительные сведения

Пароль хранится в базе данных AD и LDS на объекте пользователя в атрибуте unicodePwd. Этот атрибут можно написать в ограниченных условиях, но его невозможно прочитать. Атрибут можно изменить только; она не может быть добавлена при создании объекта или запрашивается поиском.

Чтобы изменить этот атрибут, клиент должен иметь 128-битную связь с безопасностью транспортного слоя (TLS)/Secure Socket Layer (SSL) на сервере. Зашифрованный сеанс с помощью созданных SSP-ключей сеанса с использованием NTLM или Kerberos также приемлем до тех пор, пока не будет удовлетворены минимальные длины ключей.

Чтобы это подключение было возможным с помощью TLS/SSL:

  • Сервер должен обладать сертификатом сервера для 128-битного подключения RSA.
  • Клиент должен доверять органу сертификации (CA), сгенерированию сертификата сервера.
  • Клиент и сервер должны быть способны к 128-битной шифрованию.

Синтаксис атрибута unicodePwd — octet-string; однако служба каталогов ожидает, что в строке octet-string будет содержаться строка UNICODE (как указывает имя атрибута). Это означает, что любые значения для этого атрибута, переданные в LDAP, должны быть строками UNICODE, кодируемыми BER (Основные правила кодирования) в качестве октета-строки. Кроме того, строка UNICODE должна начинаться и заканчивается кавычками, которые не являются частью нужного пароля.

Существует два возможных способа изменения атрибута unicodePwd. Первый похож на обычную операцию по смене пароля пользователя. В этом случае запрос на изменение должен содержать как операцию удаления, так и операцию добавления. Операция удаления должна содержать текущий пароль с кавычками вокруг него. Операция добавления должна содержать нужный новый пароль с кавычками вокруг него.

Второй способ изменения этого атрибута аналогичен администратору, сбросив пароль для пользователя. Для этого клиент должен связаться как пользователь с достаточными разрешениями, чтобы изменить пароль другого пользователя. Этот запрос на изменение должен содержать одну операцию замены новым нужным паролем, окруженным кавычками. Если у клиента достаточно разрешений, этот пароль становится новым паролем независимо от старого пароля.

Управление политикой

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

Необходимость перезапуска

Нет. Изменения в этой политике становятся эффективными без перезапуска устройства при локальном сбережении или распространении через групповую политику.

Групповая политика

Этот параметр политики можно настроить с помощью консоли управления групповой политикой (GPMC), которая будет распространяться через объекты групповой политики (GPOs). Если эта политика не содержится в распределенной GPO, эту политику можно настроить на локальном компьютере с помощью привязки к локальной политике безопасности.

Исключение намеренных нарушений или сбоев оборудования

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

Намеренные отключения

Если контроллер домена, который попытается выполнить репликацию с помощью контроллера домена, который был создан на промежуточном сайте и в настоящее время ожидает развертывания на окончательном рабочем сайте (удаленном сайте, таком как филиал), сообщает об ошибках репликации, можно учитывать эти ошибки репликации. Чтобы не разделять контроллер домена от топологии репликации для расширенных периодов, что вызывает непрерывные ошибки до повторного подключения контроллера домена, рассмотрите возможность добавления таких компьютеров изначально в качестве рядовых серверов и использования метода установки с носителя для установки служб домен Active Directory Services (AD DS). Программу командной строки Ntdsutil можно использовать для создания установочного носителя, который можно хранить на съемных носителях (компакт-диск, DVD-диск или другой носитель) и поставлять на конечный сайт. Затем можно использовать установочный носитель для установки AD DS на контроллерах домена на сайте без использования репликации.

Сбои оборудования или обновления

Если проблемы с репликацией возникают в результате сбоя оборудования (например, из-за сбоя материнской платы, дисковой подсистемы или жесткого диска), сообщите владельцу сервера о том, что проблему с оборудованием можно устранить.

Периодическое обновление оборудования также может привести к невозможности обслуживания контроллеров домена. Убедитесь, что владельцы сервера имеют хорошую систему связи с такими простоями заранее.

Настройка брандмауэра

По умолчанию Active Directory репликация удаленных вызовов процедур (RPC) выполняется динамически через доступный порт через сопоставитель конечных точек RPC (RPCSS) через порт 135. убедитесь, что Windows брандмауэр с расширенной безопасностью и другими брандмауэрами настроены правильно, чтобы разрешить репликацию. Сведения об указании порта для параметров репликации Active Directory и портов см. в статье 224196 базы знаний Майкрософт.

сведения о портах, которые Active Directory репликации, см. в разделе Active Directory средства репликации и Параметры.

Сведения об управлении репликацией Active Directory через брандмауэры см. в разделе Active Directory репликация через брандмауэры.

Свойства и методы интерфейса IADsPropertyList:

PropertyCount Это свойство интерфейса IADsPropertyList возвращает информацию о количестве свойств, предусмотренных для данного объекта.
GetPropertyItem() Этот метод позволяет вернуть свойство по его имени. В качестве параметров этот метод принимает имя свойства и его тип в виде значения перечисления ADSTYPEENUM (в нём предусмотрено 28 значений). Если тип свойства вам не известен, можно передать специальное значение ADSTYPE_UNKNOWN (26). Этот метод возвращает информацию в виде ссылки на объект IADsPropertyEntry, который можно использовать для получения информации о значении свойства.
Item() Этот метод отличается от метода GetPropertyItem() тем, что позволяет получить свойство (то есть объект IADsPropertyEntry) по имени или номеру. Тип свойства передавать при этом не надо.
Next() Этот метод позволяет вернуть следующее свойство в виде объекта IADsPropertyEntry. Обычно он используется для перебора всех свойств какого-либо объекта.
PurgePropertyList() Этот метод можно считать обратным методу IADs.GetInfo() — он очищает кэш свойств, удаляя из него информацию для всех свойств данного объекта. При этом сам объект Active Directory никак не затрагивается — этот метод работает только с представлением данного объекта в памяти. Обычно он используется, чтобы высвободить память на компьютере, на котором производятся операции с объектами Active Directory средствами ADSI.
PutPropertyItem() Этот метод позволяет присвоить новое значение свойству объекта Active Directory. По своим возможностям этот метод очень похож на метод Put() интерфейса IADs, и после его вызова необходимо вызвать метод IADs.SetInfo(). В качестве параметра метод PutPropertyInfo() принимает объект PropertyEntry, в котором должно быть задано новое значение для свойства.
Reset() Этот метод позволяет вернутся на начало списка свойств после вызова метода Next(), чтобы вернуться к исходному состоянию.
ResetPropertyItem() Этот метод позволяет удалить указанное свойство из кэша свойств. Этому методу можно передать как имя свойства, так и его номер. Этот метод используется только для экономии оперативной памяти, на сам объект Active Directory он никак не влияет.
Skip() Этот метод позволяет переместить курсор для списка свойств на указанное количество позиций. В качестве параметра этот метод принимает количество позиций, на которое следует переместиться. Обычно этот метод используется вместо метода Next() или вместе с ним для сокращения количества выполняемых операций.

Интерфейс IADsPropertyEntry предназначен для работы со значением (или значениями) свойства объекта Active Directory. Он может использоваться как для получения информации о значении свойства, так и для назначения свойству нового значения или значений. Свойства и методы:

Name Имя свойства, которое всегда соответствует наименованию соответствующего атрибута для объекта Active Directory согласно схеме.
ADsType Тип свойства в соответствии со значением перечисления ADSTYPEENUM.
ControlCode Позволяет определить тип операции, выполняемой со свойством. Возможные значения (перечисление ADS_PROPERTY_OPERATION_ENUM):
  • ADS_PROPERTY_CLEAR (1) — очистить объект свойства, убрав все настроенные для него ранее значения свойств;
  • ADS_PROPERTY_UPDATE (2) — заменить существующее значение свойства другим значением;
  • ADS_PROPERTY_APPEND (3) — добавить указанное значение к уже существующим;
  • ADS_PROPERTY_DELETE (4) — убрать ранее настроенное конкретное значение.
Values Определяет значения для свойства. Свойство Values работает с массивом объектов типа Variant. Любой из объектов типа Variant, который находится в данном массиве, должен обязательно реализовывать интерфейс IADsPropertyValue.

Интерфейсы IADsPropertyValue и IADsPropertyValue2 используются непосредственно для работы со значениями свойств. Каждому объекту IADsPropertyValue соответствует конкретное значение свойства. Массив значений (то есть массив объектов IADsPropertyValue) передаётся при помощи свойства Values объекта IADsPropertyEntry.

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: