Запрет смены пароля ОС для предотвращения устаревания снимков и неиспользуемых ВМ

Периодически я сталкиваюсь с ситуацией, когда пароль компьютера в локальном хранилище теряет синхронизацию с доменом. Это происходит как при восстановлении старого снимка (snapshot) виртуальной машины, так и просто при запуске тестовой машины, которая не включалась несколько месяцев. Результатом обычно бывает недоступность домена, что исправляется выводом ВМ из домена и повторным присоединением.

Технически данная проблема вообще не связана с виртуализацией. Если вы выключаете любой доменный компьютер более, чем на 60 дней, то при включении он может быть не принят контроллером в виду проблем с так называемы «безопасным каналом» (secure channel). Если же вы используете снимки в виртуальных машинах, то в течении 30 дней с момента создания снимка компьютер должен сменить свой пароль в домене, После чего, применив снимок, вы уже не сможете зайти в домен. Сегодня мы рассмотрим эту проблему и способы ее решения.

Каждый компьютер периодически меняет пароль своей системной учетной записи. Следует понимать, что политика паролей из доменной политики по умолчаниюне на пароли объектов типа «Компьютер» не действует. Компьютеры инициируют смену своего пароля сами (и только сами). По умолчанию это происходит раз в месяц, но этот срок можно изменить путем создания в реестре ключа MaximumPasswordAge или применением политики, которая находится по адресу:

Computer Configuration\windows Settings\Security settings\Local Policies\Security Options - Domain member: Disable machine account Password changes

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

Как же происходит процедура смены паролей? При старте службы NetLogon инициируется Workstation Scavenger. Если пароль системной учетной записи уже старее чем значение MaximumPasswordAge, то Scavenger инициирует обращение к контроллеру домена с запросом смены пароля. Если контроллер недоступен, или отвечает отказом на запрос о смене пароля, то Scavenger заново обратится к контроллеру через интервал времени (в минутах), указанный в ключе ScavengeInterval. Если на момент старта NetLogon пароль еще не устарел, то Scavenger обратится к контроллеру за сменой пароля как раз в момент его устаревания. По умолчанию для Windows NT 4.0 ScavengeInterval был равен 7 дням, а начиная с Windows 2000 увеличен до 30 дней. Этот интервал можно изменить следующей политикой:

Computer Configuration\Administrative Templates\System\Netlogon\Scavenge Interval

Если вы хотите запретить всем компьютерам домена менять пароли, то можно на контроллерах домена создать ключ RefusePasswordChange. Контроллеры перестанут отвечать на запросы Scavenger на смену пароля.

Наконец, на каждом конкретном компьютере можно создать ключ реестра DisablePasswordChange, выставив который в единицу, вы добьетесь того, что данный компьютер не будет менять пароль своей системной учетной записи. Соответственно, он не «вылетит» из домена, даже если вы его не включали несколько лет, или применили старый снимок состояния системы. Это также можно настроить доменной политикой:

Computer Configuration\windows Settings\Security settings\Local Policies\Security Options - Domain member: Disable machine account Password changes

Очевидно, что все вышесказанное относится к ОС Windows, — как на физическом оборудовании, так и в виртуализации, причём не только Hyper-V, но и сторонних поставщиков.