Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Системный администратор - секреты мастерства: централизованное управление паролями локальных админов


Здравствуйте, уважаемые коллеги!

Сегодня я предложить вашему вниманию простое средство для управления паролями локального администратора на компьютерах, входящих в домен.

Когда в сети 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 objSysInfo = CreateObject(”ADSystemInfo”)
strComputer = objSysInfo.ComputerName
arrFULLNAME = Split(strComputer, “,”)
arrCN = Split(arrFULLNAME(0), “=”)

strComputer=arrCN(1)

strUser = “admin”
strpass = “654321″

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 Далее нам предстоит разбить эту строку на составляющие, чтобы выудить из них имя компьютера:

arrFULLNAME = Split(strComputer, “,”)
arrCN = Split(arrFULLNAME(0), “=”)
strComputer=arrCN(1)

Этот кусок кода позволяет выудить из переменной 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-версию книги и немедленно получить ее .

*ЩЕЛКНИТЕ ЗДЕСЬ, ЧТОБЫ ПОЛУЧИТЬ КНИГУ ПРЯМО СЕЙЧАС*

 


В избранное