Системный администратор - секреты мастерства: централизованное управление паролями локальных админов
Здравствуйте, уважаемые коллеги!
Сегодня я предложить вашему вниманию простое
средство для управления паролями локального администратора на
компьютерах, входящих в домен.
Когда в сети 5-10 машин, тут захочешь забыть администраторский
пароль - и то не получится. Однако если машин хотя бы 50, то рано или
поздно может случиться ситуация, когда выяснится, что вы забыли пароль
локального администратора от какой-то машины или, что еще хуже,
какой-то злодей сменил этот пароль. Вот тут-то и придет на помощь
предлагаемое мной средство.
Так же материалы этой статьи могут оказаться полезными, тем, кто
приходит работать в компанию, где было не принято вести документацию по
сети (по моему скромному мнению, это 99,9% фирм), а потому локальные
пароли скорее всего будут неизвестны. Кроме того, предложенное средство
удобно для оперативной замены локальных паролей на компьютерах без
прямого доступа к консоли (иными словами, поменять пароль на машину в
Москве, не отрывая зад со стула, например, в Новосибирске).
Нашим волшебный свойством будет vbs-скрипт set_admin_passwd.vbs:
Option Explicit
Dim objComputer ‘ Экземпляр объекта Computer
Dim objUser ‘ Экземпляр объекта User
Dim strComputer ‘ Имя компьютера
Dim strUser ‘ Имя создаваемого пользователя
Dim strpass ‘ пароль пользователя
Dim objSysInfo ‘массив для хранения свойств компьютера, считанных из AD
Dim arrFULLNAME ‘служебный массив
Dim arrCN ‘служебный массив
Set objUser = GetObject(”WinNT://” & strComputer & “/” & strUser)
objUser.Description = “Пароль изменен при помощи скрипта”
objUser.SetPassword strpass
objUser.SetInfo
Поясню в двух словах, что он делает. Скрипт предназначен для запуска
на локальной машине при помощи GPO. Вы создаете объект групповой
политики и в разделе “Конфигурация компьютера” (важно!) и в его секции,
отвечающей за startup-сценарии, прописываете данный скрипт. Само собой,
GPO должна применяться к OU, в который так или иначе входят наши
компьютеры. Скрипт будет выполняться при запуске компьютера до момента
выдачи приглашения на ввод пароля (т.е. до появления картинки “Нажмите
Crtl+Alt+Del…”). Можно также также запускать этот скрипт и при
завершении сеанса пользователя (раздел сценариев в секции “Конфигурация
пользователя”), чтобы лишить потенциального злодея, каким-то образом
изменившего пароль, возможности перелогиниться.
Скрипт выполняется на каждом компьютере, входящем в OU, к которому
применяется политика, и вносит изменения в свойства локального
пользователя. Итак, собственно комментарии к скрипту:
Set objSysInfo = CreateObject(”ADSystemInfo”)
strComputer = objSysInfo.ComputerName
Эти строчки получают из AD полное имя компьютера, на котором запущен скрипт. Переменная strComputer содержит полное имя компьютера, взятое из AD в виде ldap://cn=computer,ou=department,dc=domain, dc=tld Далее нам предстоит разбить эту строку на составляющие, чтобы выудить из них имя компьютера:
Этот кусок кода позволяет выудить из переменной strComputer собственно имя компьютера (strComputer), на котором запущен скрипт. Теперь собственно укажем пользователя, чей пароль будем менять:
strUser = “admin”
strpass = “654321″
Заметьте, в качестве имени пользователя я указал admin.
Обычно для соблюдения единообразия и быстроты набора, я рекомендую
переименовывать локального администратора в admin при помощи
соответствующей опции в GPO. На самом деле, локального администратора
можно переименовать в кого угодно - вот это имя и используйте в
качестве значения переменной strUser. Главное, чтобы на всех машинах это имя было одним и тем же. Ну а переменной strpass присвоим значение пароля, который хотим задать нашему локальному администратору.
Завершим наше темное дело:
Set objUser = GetObject(”WinNT://” & strComputer & “/” & strUser)
objUser.Description = “Пароль изменен при помощи скрипта”
objUser.SetPassword strpass
objUser.SetInfo
Первой строчкой обратимся к свойству пользователя на нашем
компьютере. Запишем комментарий в описание пользователя. Установим
пользователю новый пароль и последней строчкой сохраним изменение.
Вуаля - все готово!
Немного модифицировав данный скрипт вы можете создать инструмент для
изменения пароля указываемого вручную локального пользователя на
указываемой вручную машине.
Теперь вы можете быть уверенными, что все машины, входящие в домен,
имеют одинаковый пароль локального администратора, причем вы можете по
своему желанию одномоментно поменять его. Ничто не мешает вам задавать
разные пароли для компьютеров, входящих в разные OU - для этого GPO для
каждого OU должна вызывать соответствующий скрипт. Впрочем, скрипт
может быть единым, но тогда нужно будет скорректировать блок присвоения
переменной strpass значения в зависимости от того, к какому OU принадлежит компьютер.
Как вы можете справедливо заметить, этот метод имеет некоторые изъяны с точки зрения безопасности. Самая главная проблема - это хранение пароля от учетной записи с правами администратора домена в теле скрипта в открытом виде. Это, мягко говоря, не очень хорошо. Однако, сам скрипт хранится вместе с другими файлами групповых политик и надежно защищен средствами ОС Windows от посягательств посторонних. От профессионального
хакера это все равно не спасет, но если уж такой доберется до вашей сети, то прятать от него что-либо бесполезно - все равно расковыряет. А вот от пионеров, начитавшихся журнала "Хакер" вы защищены надежно.
Удачи!
В феврале 2009 вышла моя книга "Обслуживание ИТ-инфраструктуры: бизнес с нуля", посвященная построению собственного бизнеса в сфере администрирования и технической поддержки. Вы можете можете уже сейчас заказать PDF-версию книги и немедленно получить ее .