Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Узнать список доменных пользователей с админскими правами (http://forum.oszone.net/showthread.php?t=344065)

Ololosh 14-02-2020 16:24 2909564

Узнать список доменных пользователей с админскими правами
 
День добрый знатоки.

Необходимо удалённо, на множестве компов (около 100) узнать, если ли у локальных и доменных пользователя админские права (входит ли они в группу локальных админов или доменных).

нашёл некий скрипт:
Код:


    $ExportFile = "C:\папка_для_лога\remotes.txt"
    $SearchBase = "OU=ALL_Users,DC=contoso,DC=com"
    $AdminList = @{}
    $ToCSV = ""
   
    function Get-LocalAdmin {
        param ($strcomputer)
        try {
          $users = Gwmi win32_groupuser –computer $strcomputer -ErrorAction Stop
        } catch {
            Write-Host $strcomputer
        }
        if ($users) {
            $admins = $users |? { ($_.groupcomponent –match 'Администраторы') -or ($_.groupcomponent –match 'Administrators') }
            $return = $admins |% {
                $_.partcomponent –match “.+Domain\=(.+)\,Name\=(.+)$” > $nul
                $matches[1].trim('"') + “\” + $matches[2].trim('"')
            }
            return $return
        }
    }
   
    $ServersList = Get-ADComputer -SearchBase $SearchBase -Filter * -Properties OperatingSystem | Where { $_.OperatingSystem -match "Windows" }
    $ServersList | Select-Object Name | ForEach-Object {
        $UserList = Get-LocalAdmin $_.Name
        if ($UserList) {
            $AdminList[$_.Name] = $UserList
        }
    }
   
    $AdminList.Keys | % {
        $ServerName = $_
        $AdminUsers = $AdminList[$ServerName]
        $ToCSV += "$ServerName;$AdminUsers`r`n"
    }
   
    if (Test-Path $ExportFile) {
        Remove-Item $ExportFile
    }
   
    $ToCSV >> $ExportFile

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

Как можно добавить проверку на группу локальных админов, а также добавить проверку локальных юзеров на админские права?

DJ Mogarych 14-02-2020 16:44 2909569

Примерно так:
Код:

foreach ($comp in (Get-ADComputer -filter 'enabled -eq "True"' -Properties OperatingSystem |? OperatingSystem -match "Windows").name) {
$comp
(Gwmi win32_groupuser -ComputerName $comp |? {$_.groupcomponent -match "Администраторы|Administrators" -and $_.partcomponent -notmatch "Administrator|Администратор|Администраторы домена|Domain admins"}).partcomponent -replace "^.*=" -replace '"'
""
}


Ololosh 14-02-2020 18:37 2909590

что-то ругается что прав нету:


Gwmi : Отказано в доступе. (Исключение из HRESULT: 0x80070005 (E_ACCESSDENIED))
строка:34 знак:2
+ (Gwmi win32_groupuser -ComputerName $comp |? {$_.groupcomponent -matc ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Get-WmiObject], UnauthorizedA
ccessException
+ FullyQualifiedErrorId : System.UnauthorizedAccessException,Microsoft.Pow
erShell.Commands.GetWmiObjectCommand

DJ Mogarych 14-02-2020 18:50 2909593

Ну так надо запускать от того, у кого есть права на все компьютеры, обычно это администратор домена.

Elven 17-02-2020 09:40 2909836

Цитата:

Цитата DJ Mogarych
обычно это администратор домена. »

DJ Mogarych, как раз если так - то это не очень хорошо (вроде по бестпрактис весьма хорошо когда доменный администратор не имеет прав локального админа на не контроллерах, лучше для этого делать отдельную группу).
Ololosh, для этого можно завести отдельную учетку, запретить ей вход как локальный так и по RDP и запустить от ее имени, если так уж хочется запускать именно вручную, но это не оптимальный вариант (держать такую учетку - не есть хорошо, кроме того не факт что на момент запуска все компьютеры будут включены и в сети). Если нужно собрать такую информацию наверняка, то можно например так:
1. Создать шару
2. Дать на эту шару права на запись для Domain Computers (достаточно на запись, чтение не обязательно, без удаления тоже обойдемся)
3. Научить скрипт складывать результат на эту шару (есть много способов, в т.ч. много вариантов именования файлов. лично мне нравится в качестве имени файла использовать дату, а файл складывать в папку имени компьютера)
4. Создать через групповые политики таск запускающийся, ну например через минут десять после старта включения компьютера (чтобы гарантированно всё нормально запустилось и могло достучаться туда куда нужно). Таск должен запускаться от имени NT AUTHORITY\SYSTEM
5. На несколько дней, а то и недель забыть об этом.
6. Проверить получившийся результат и сделать с ним то что хочется ;)

Ну и наконец совсем классный вариант это использовать для этого то, что специально для этого предназначено, здесь тоже видится два варианта (как минимум):
1. Жестко вычищать группу локальных админов добавляя туда только доменную группу с правами локальных админов и/или избранные учетки. (имеет свои минусы, например т.о. нельзя добавить человеку права локального админа даже если это нужно, т.к. при ближайшем обновлении политик группа вычистится).
2. Использовать для мониторинга админских учеток специализированный софт (емнип SCCM это умеет)

DJ Mogarych 17-02-2020 13:37 2909854

Цитата:

Цитата Elven
вроде по бестпрактис весьма хорошо когда доменный администратор не имеет прав локального админа на не контроллерах, лучше для этого делать отдельную группу »

У кого такие бестпрактис? Дайте ссылку почитать.

Elven 17-02-2020 15:23 2909864

DJ Mogarych, ссылка почитать.
Пожалуй я выразлися не совсем корректно: не то чтобы это были именно бестпрактис, но рекомендации в эту сторону есть. Когда-то я еще напарывался на весьма хорошую статью на русском, с довольно неплохими аргументами, но вспомнить их формулировки я пожалуй не осилю, а статья, к сожалению, не нашлась.

Iska 17-02-2020 18:31 2909883

Цитата:

Цитата Elven
3. Научить скрипт складывать результат на эту шару (есть много способов, в т.ч. много вариантов именования файлов. лично мне нравится в качестве имени файла использовать дату, а файл складывать в папку имени компьютера) »

Удалённая база данных. Плюсом будет накапливание по датам.

DJ Mogarych 17-02-2020 19:43 2909890

Elven, это рекомендации по вложенности групп, при чём здесь права доменного админа на локальных тачках?

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

Charg 17-02-2020 19:44 2909891

Цитата:

Цитата Elven
2. Использовать для мониторинга админских учеток специализированный софт »

Никогда не устану рекомендовать PDQ Inventory для этих целей.
Базовый функционал (которого для этой задачи с головой хватает) вообще бесплатен.

Elven 17-02-2020 20:05 2909892

Цитата:

Цитата DJ Mogarych
это рекомендации по вложенности групп, при чём здесь права доменного админа на локальных тачках? »

Не только. В блоке Local Group Usage Best Practice это вкратце упоминается, и далее дается ссылка на статью как это настроить.
Цитата:

Цитата DJ Mogarych
Так или иначе, скрипт надо запускать от той учётки, которая имеет права на локальных машинах. »

И для этого NT AUTHORITY\SYSTEM - выше крыши.
DJ Mogarych, я понимаю, что бывает неприятно, когда поправляют, но я оскорбить не пытался. Опять же поправился что это не то чтобы бестпрактис, а просто разумные рекомендации, да даже если бестпрактис - нет же никаких требований к использованию оных. Посему я не понимаю сути наезда. Если есть конкретные претензии, или я ошибаюсь и так как я рекомендую делать нельзя от слова вообще - аргументы в студию, т.к. голословные утверждения, что это не так не менее оскорбительны.

DJ Mogarych 18-02-2020 08:59 2909930

Elven, мне не неприятно. Просто я не нашёл там упоминания о том, что
Цитата:

Цитата Elven
весьма хорошо когда доменный администратор не имеет прав локального админа на не контроллерах »

То, что нужно контролировать членов группы локальных администраторов, с этим глупо спорить. Но учётка, имеющая права доменного админа, должна иметь права на локальных машинах, это стандарт. Учётка, таких прав не имеющая, но тоже привилегированная, называется "Администратор предприятия".

Хотя, каждый может изобретать какие угодно схемы, никто не мешает.

NT AUTHORITY\SYSTEM - это учётка локальной системы. Как вы будете от неё скрипт запускать, который должен отработать на куче компьютеров домена?

Elven 18-02-2020 09:38 2909934

Цитата:

Цитата DJ Mogarych
NT AUTHORITY\SYSTEM - это учётка локальной системы. Как вы будете от неё скрипт запускать, который должен отработать на куче компьютеров домена? »

элементарно:
Цитата:

Цитата Elven
4. Создать через групповые политики таск запускающийся, ну например через минут десять после включения компьютера (чтобы гарантированно всё нормально запустилось и могло достучаться туда куда нужно). Таск должен запускаться от имени NT AUTHORITY\SYSTEM »

Когда-то большую часть скриптов на такой запуск и перевел, и всё работает как часики - локально эта учетка не уступает по правам ни одному админу, а если нужно чтобы она куда-то логи складывала или наоборот что-то забирала, то здесь работает
Цитата:

Цитата Elven
2. Дать на эту шару права на запись для Domain Computers »

(если нужно чтение - добавить права на чтение)
Насчет того, что доменным админам нужно ограничивать права на не контроллерах - согласен, это не бестпрактис, и даже в рекомендациях этого не было. Однако если есть десяток админов, каждый из которых имеет учетку и доменного админа и доменную учетку локального админа, то в лучшем случае восемь из них будут ВЕЗДЕ пользоваться только учеткой доменного админа. Я думал что две работы назад решил этот вопрос радикально - отобрал на не контроллерах права админа у domain admins. Но аккурат работу назад напоролся на еще более радикальное решение - доменным администраторам был запрещен логин на не контроллерах. Вот так это работает, хоть и не бестпрактис но жиза.

DJ Mogarych 18-02-2020 09:51 2909935

Ну это несколько другой подход, скрипт тогда надо немножко переделать, чтобы каждый комп добавлял свои данные в общую кучу.

А разве у учётки "система" есть сетевой доступ?

Цитата:

Цитата Elven
отобрал на не контроллерах права админа у domain admins »

Ну если десяток человек имеет права доменного админа - это, конечно, неправильно само по себе. Но тут дело не в самой роли доменного админа, а не совсем правильном её использовании.
В данном случае я бы просто убрал этих людей из доменных админов и сделал бы отдельную группу с правами на локальные компы, куда их и включил бы.

YuS_2 18-02-2020 11:02 2909941

Цитата:

Цитата DJ Mogarych
А разве у учётки "система" есть сетевой доступ? »

Цитата:

По умолчанию СИСТЕМной учетной записи предоставлены разрешения на полный доступ ко всем файлам на томе NTFS. Здесь у учетной записи SYSTEM есть те же функциональные права и разрешения, что и для учетной записи администратора.
Это можно проверить:
Код:

# Создание простой задачи, исполняемой от имени СИСТЕМА
$a = new-scheduledtaskaction -execute "powershell.exe" -argument {-exe bypass -f "d:\get-curuser.ps1"}
$t = new-scheduledtasktrigger -once -at (get-date)
$p = new-scheduledtaskprincipal "System"
$s = new-scheduledtasksettingsset
$task = new-scheduledtask -action $a -principal $p -trigger $t -settings $s
register-scheduledtask -taskname 'Run_PS_System' -taskpath '\' -inputobject $task

в аргументы можно записать что угодно для проверки, здесь записан запуск скрипта с диска d:\

Charg 18-02-2020 11:43 2909943

YuS_2, речь о сетевом доступе шла. Учётка "система" же локальная для компьютера, она не сможет (насколько я знаю) пойти и взять файл с \\другойкомпьютер\шара

Busla 18-02-2020 12:15 2909948

Charg, она не "локальная для компьютера", она учётка компьютера - почти такой же доменный пользователь, как и "человеческие пользователи".

Цитата:

Цитата Charg
она не сможет (насколько я знаю) пойти и взять файл с \\другойкомпьютер\шара »

значит, вы вообще не знаете как AD работает

Charg 18-02-2020 12:32 2909951

Цитата:

Цитата Busla
она не "локальная для компьютера", она учётка компьютера »

Этого не знал.
Цитата:

Цитата Busla
значит, вы вообще не знаете как AD работает »

Выходит да, пойду завтра искать вакансию дворника.

Elven 18-02-2020 12:44 2909953

Charg, как-нибудь можете полюбопытствовать от чьего имени происходит установка софта при раздаче оного групповыми политиками, заодно имеет смысл посмотреть почему сие не работает, если папка из которой берется софт, не имеет разрешения на чтение для Domain Computers. А еще (и это мое любимое) от чъего имени вообще читаются политики применяющиеся на компьютеры. Коллега Busla правильно говорит, NT AUTHORITY\SYSTEM - по сути учетка компьютера, она имеет те права, что определены для него.
Busla, не будьте так критичны, я догадываюсь откуда растут ноги у заблуждения Charg. В этом определенно виноваты MS ибо именно им в голову пришло наплодить такое количество учеток. Полагаю Charg рассуждает о другой встроенной учетной записи - Local Service. тык

Charg 18-02-2020 13:20 2909956

Цитата:

Цитата Elven
Полагаю Charg рассуждает о другой встроенной учетной записи - Local Service. »

Да нет, я действительно не сопоставлял учётку SYSTEM c учёткой компьютера. Не знаю почему, не задумывался никогда а само в голову не приходило.
Я думал что SYSTEM это нечто вроде root - учётка операционки с правами на всё (ну, почти) но только локально. Собственно нигде никогда об этом не читал и не интересовался подробностями.

Цитата:

Цитата Elven
А еще (и это мое любимое) от чъего имени вообще читаются политики применяющиеся на компьютеры. »

Раз уж вопрос судя по всему с подвохом - видимо не от имени учётки компьютера?

Elven 18-02-2020 13:54 2909958

Цитата:

Цитата Charg
Раз уж вопрос судя по всему с подвохом - видимо не от имени учётки компьютера? »

Лет несколько назад, вроде бы в мае-июне 2016 года, это было после очередного затыкания дыр в групповых политиках (кстати после этого пользовательские политики тоже начали читаться от имени компьютера), пришлось изучить этот вопрос более подробно чем знал до того. Применяется от имени учетки компьютера, но при этом в списке тех кому доступны полтики на чтение компьтеров-то и нет (точнее группы Domain Computers). Но политика читается (это при правах по умолчанию, разумеется). Но мы не таковы! Зачем оставлять на чтение Authenticated Users те политики, которые применяются на Domain Users? Тогда было много статей на тему "обновления сломали групповые политики"...
Однако мы далеко уши от темы топика, поэтому вернемся к нашим баранам.

YuS_2 18-02-2020 15:00 2909964

Цитата:

Цитата Charg
Учётка "система" же локальная для компьютера, она не сможет (насколько я знаю) пойти и взять файл с \\другойкомпьютер\шара »

Собственно, уже тут объяснили...
В дополнение:

Charg 18-02-2020 15:51 2909969

Цитата:

Цитата Elven
Однако мы далеко уши от темы топика, »

Зато познавательно получилось :)


Время: 21:34.

Время: 21:34.
© OSzone.net 2001-