Главная

Sunday, 29 August 2021

Аудит членства локальных групп.


Всем привет.

По причинам удаленной работы и популярности VPN время от времени наблюдаем как ряд локальных(или доменных) учетных записей вносятся в члены локальных групп администраторов или пользователей удаленного стола конкретного хоста. Со временем они забываются и там остаются, даже если необходимость в них отпадает. Это небезопасно. Поэтому, как минимум, надо провести аудит их наличия на хостах.

Используем для этого Powershell. Итак, выберем членов соответствующих групп у которых PrincipalSource указано Local, что говорит от том учетная запись именно локальная.

Get-LocalGroupMember -Name Administrators | where -Property PrincipalSource -eq Local

Get-LocalGroupMember -Name "Remote Desktop Users"  

или так:

Get-LocalGroupMember -Name Администраторы | where -Property PrincipalSource -eq Local

Get-LocalGroupMember -Name "Пользователи удаленного рабочего стола" 


Get-LocalUser | Select -Property Name,Enabled,LastLogon,Description


Если в выводе Get-LocalGroupMember мы получаем в поле PrincipalSource значение ActiveDirectory то уточняем учетные записи пользователей как, например, для группы WS-Local-Admins:

Get-ADGroupMember 'WS-Local-Admins' | Select name | Sort name

Такой запрос хорошо работает локально. Для аудита локальных пользователей на удаленном компьютере нужно сначала подключится к нему через WinRM командлетами Invoke-Command или Enter-PSSession. Например, так можно собрать список учетных записей в локальной группе на удаленных хостах:

$UserCredential = Get-Credential

$S = New-PSSession -CN pc01,pc02,pc03 -Credential $UserCredential

Invoke-Command -scriptblock {Get-LocalGroupMember -Name "Remote Desktop Users"} -session $s -hidecomputername |

 select * -exclude RunspaceID | Out-Gridview -title "Remote Desktop Users"

или так:

Invoke-Command -FilePath .\list.ps1 -session $s -hidecomputername | select * -exclude RunspaceID | Out-Gridview -title "Local Admins"

где list.ps1 содержит:

Get-LocalGroupMember -Name Administrators | where -Property PrincipalSource -eq Local

Get-LocalGroupMember -Name "Remote Desktop Users"  

Get-LocalUser | Select -Property Name,Enabled,LastLogon,Description

Успехов.

No comments:

Post a Comment

А что вы думаете по этому поводу?