Если вы хоть когда-нибудь задумывались о безопасности в вашей сети, то наверняка вы задумывались о том, как организовать смену паролей локальных администраторов, на компьютерах под управление ОС Windows, в вашей сети. И если задумывались и вам всегда было лень заняться этой процедурой, или не знали как это сделать, то этот пост для вас =).
Если пароль необходимо менять для одной учетной записи, то лучше всего с задачей справится штатная штука от Microsoft – LAPS (Local Administrator Password Solution). Но, к сожалению, она бессильна, если учетных записей с правами админа на компьютерах должно быть несколько. Так же она не сможет вам помочь, если ваши компьютеры не заведены в домен.
Именно со случаем с несколькими администраторами я и столкнулся, в итоге после некоторых раздумий был написан скрипт для PowerShell, который добавляет необходимых администраторов и меняет им пароли.
Точнее скрипта 2 – один отвечает непосредственно за смену паролей и добавление пользователей. Второй нужен для запуска первого.
Тексты скриптов можно посмотреть на GitHub .
Для работы скриптов у вас должно быть создано 2 файла - !users.txt и !hosts.txt.
В первом должен быть список администраторов и пароли к ним в csvшном формате (имя и пароль должны разделяться запятой). Например, что-то вроде:
admin1,Passw0rd
admin2,Passw0rd
Во втором должен быть список компьютеров, на которых необходимо сменить пароли. Имя каждого компьютера с новой строки. Например:
Comp1
Comp2
Comp3
Файлы эти, как и папка, где они расположены, само собой должны быть доступны только пользователю или группе, от имени которой будет запускаться скрипт. У этого же пользователя должны быть права на компьютерах для добавления и изменения пользователей. Это не обязательно должна быть сетевая папка, вполне сгодится папка, где-нибудь на сервере, от куда запускается скрипт.
Так же на тех компьютерах, где необходимо сменить пароли должно быть разрешено удаленное управление через PowerShell. Если эти компьютеры находятся в домене, то самое простое – создать групповую политику, которая это разрешит. Для этого нужно будет создать новый объект групповой политики, и изменить в нем несколько параметров.
1 - Путь до параметра – Computer Configuration/Policies/Administrative Templates/Windows Components/Windows Remote Management (WinRM)/WinRM Service
Параметр - Allow remote server management through WinRM. Он должен быть в состоянии Enabled.
2 - Так же необходимо, что бы на компьютерах был запущен сервис WinRM. Перевести его в состояние Autostart можно так же при помощи групповых политик. Computer Configuration – Preferences – Control Panel Settings – Services. Тут создаем новый сервис, в Service Name жмем обзор и находим нужный. В startup указываем – Automatic, в service action – start service.
3 – Необходимо открыть необходимые для WinRM порты в фаерволле. Опять же, если используется встроенный в Windows фаерволл, можно открыть нужные порты при помощи групповой политики. Идем по пути – Computer configuration, Policies, Windows Settings, Security Settings, Windows Firewall with Advanced Security - Windows Firewall with Advanced Security – Inbound Rules. Тут жмем создать новое правило, и выбираем в Predefined – Windows Remote Management.
Когда групповая политика будет обновлена на компьютерах, на них будет разрешено удаленное управление через PowerShell.
После запуска скрипта runScript.ps1 будут считываться файлы !users.txt и !hosts.txt, и данные из !users.txt будут переданы скрипту add-local-admins.ps1, команды которого выполняются на удаленных компьютерах.
На текстах скриптов смысла заострять внимания не вижу, т.к. они в общем то просты, только пара моментов:
Я там целенаправленно использую команды net user и net localgroup, что бы скрипт нормально работал на старых версиях powershell.
А также если нужный пользователь отсутствует в системе – он добавится, существующие пользователи не удаляются.
По завершении работы результат выполнения будет записываться в папку с файлами !users и !hosts, что бы всегда знать на каком компьютере какие пароли заданы.
Надеюсь, этот скрипт окажется вам полезным.
Share the article with your friends in social networks, maybe it will be useful to them.
If the article helped you, you can >>thank the author<<