Иногда возникает ситуация, при которой необходимо контролировать число доменных администраторов. Например, в суматохе дали права какому-то пользователю и забыли про это. Да и хакеры теоретически могут пролезть. Поэтому очень хочется чтобы программа мониторинга оповещала о увеличении количества пользователей с правами доменных админов. В качестве мониторинга у нас используется Zabbix. Это мощная система с огромным набором шаблонов, но также у нее есть возможность подключать пользовательские скрипты.
В нашем случае воспользуемся powershell, точнее, командой Get-ADGroupMember. Эта команда выводит данные по конкретной группе.
Команда (Get-ADGroupMember “Domain admins”).count возвращает количество пользователей в группе “Domain admins”
Создадим скрипт domain_admins.ps1 с одной строкой
(2 - (Get-ADGroupMember "Domain admins").count)
и разместим в c:\zabbix\
где 2 – количество доменных администраторов, которое должно быть в этом домене, а (Get-ADGroupMember “Domain admins”).count – их количество по факту.
Проверяем так:
powershell.exe -executionpolicy bypass -file c:\zabbix\domain_admins.ps1
Если не удается загрузить файл так как выполнение скриптов запрещено для данной системы необходимо разрешить выполнение сценариев.
Запускаем PowerShell с правами администратора и выполняем команду
Set-ExecutionPolicy Unrestricted
Если при запуске мы получаем вот такую ошибку:
“Имя “Get-ADGroupMember” не распознано как имя командлета, функции, файла скрипта или выполняемой программы Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.”
предварительно загружаем модуль ActiveDirectory.
В файл c:\zabbix\domain_admins.ps1 добавляем строку. Должно получиться вот так:
Import-Module ActiveDirectory (2 - (Get-ADGroupMember "Domain admins").count)
В конце фала c:\zabbix\zabbix_agentd.win.conf добавляем:
UserParameter=domain_admins[*],powershell.exe -executionpolicy bypass -file c:\zabbix\domain_admins.ps1