Een duidelijk beeld krijgen van wie beheerdersrechten heeft op je Windows-machines kan soms lastig zijn, vooral als je er veel beheert of machtigingen wilt controleren. Deze handleiding gaat over het samenstellen van een lijst met gebruikers en groepen die lid zijn van de lokale beheerdersgroep, of het nu gaat om één pc of een heel netwerk van servers en desktops. Handig om potentiële beveiligingslekken te vinden of gewoon om bij te houden wie beheerdersrechten heeft. En ja, het is verrassend eenvoudig als je de commando’s en tools eenmaal doorhebt. Het grootste voordeel? Je kunt het hele proces automatiseren als dat nodig is, dus geen handmatige controles meer die eeuwen duren. Zo weet je of een willekeurige gebruiker of groep zich in de beheerdersgroep heeft weten te wurmen en kun je actie ondernemen.
Hoe vind ik de leden van de lokale beheerdersgroep in Windows?
Zoek de lokale beheerders op de lokale computer.
Windows biedt een ingebouwde manier om te zien wie er in de beheerdersgroep zit: de module Computerbeheer ( compmgmt.msc).Je opent deze, gaat naar Lokale gebruikers en groepen, vervolgens naar Groepen en dubbelklikt op Beheerders. Kinderspel. Maar voor scripts of snelle controles is PowerShell onmisbaar. Je kunt het volgende uitvoeren:
Get-LocalGroupMember -Group "Administrators"
Dit geeft een overzicht van alle leden – gebruikers, groepen of serviceaccounts – die beheerdersrechten hebben. Het is handig om de volledige lijst te zien, vooral als je problemen oplost of machtigingen wilt opschonen. Soms wordt deze opdracht op sommige machines niet direct uitgevoerd – bijvoorbeeld omdat het account niet volledig is bijgewerkt of er een vreemd probleem is met het energiebeheer. Het opnieuw uitvoeren van de opdracht of het opnieuw opstarten van de computer helpt dan vaak.
Als u de toegang wilt beperken tot alleen lokale gebruikers (niet tot domein- of Azure AD-groepen), kunt u verder filteren:
Get-LocalGroupMember -Group "Administrators" | Where-Object { (Get-LocalUser $_. SID -ErrorAction SilentlyContinue).Enabled }
Op deze manier ziet u alleen de gebruikers met daadwerkelijk ingeschakelde accounts op het lokale systeem. Let op: als uw omgeving Active Directory gebruikt (wat waarschijnlijk het geval is als u op domein-gekoppelde machines werkt), zijn veel beheerdersrechten gekoppeld aan AD-groepen. Deze SID-filtering helpt om lokale gebruikers te scheiden van door AD beheerde gebruikers.
Windows maakt het leven natuurlijk onnodig ingewikkeld. Maar als je de RSAT-tools (Remote Server Administration Tools) installeert, krijg je wel wat betere opties, vooral als je vanuit een script AD-groepen en hun leden wilt bekijken. Je kunt AD ook rechtstreeks bevragen, maar dat is weer een heel ander verhaal.
Informatie opvragen over AD-gebruikers of -groepen in de lokale beheerders.
In sommige configuraties wilt u meer details over gebruikers in Active Directory die lid zijn van de lokale beheerdersgroep, zoals hun status of accountnaam. Daarvoor zijn de PowerShell-opdrachten Get-ADGroupMember en Get-ADUser handig. Hier is een lastig voorbeeld dat ik heb gebruikt:
$admins = Get-LocalGroupMember -Group "Administrators" | Where-Object { $_. PrincipalSource -eq "ActiveDirectory" } foreach ($admin in $admins) { if ($admin.objectclass -eq "User") { Get-ADUser $admin. SID | Select-Object SamAccountName, Enabled } elseif ($admin.objectclass -eq "Group") { Get-ADGroupMember $admin. SID | ForEach-Object { Get-ADUser $_ | Select-Object SamAccountName, Enabled } } }
Dit duikt in Active Directory en haalt gebruikersnamen op, evenals informatie over de activiteit van de bijbehorende accounts. Niet alle omgevingen hebben zoveel machtigingen, maar op sommige domeinen is dit de enige manier om te zien wie daadwerkelijk beheerdersrechten heeft.
Beheerdersleden ophalen vanaf een externe computer
Als je wilt zien wie er in de beheerdersgroep zit op een externe pc of server, maakt PowerShell het vrij eenvoudig zodra je remote toegang hebt ingesteld. Je moet WinRM inschakelen en ervoor zorgen dat TCP-poort 5985 openstaat in je firewall, wat soms wat lastig kan zijn. Zodra dat is gedaan, kun je opdrachten uitvoeren zoals:
Invoke-Command -ComputerName wsk-m2211 -ScriptBlock { Get-LocalGroupMember -Group "Administrators" | Select Name, ObjectClass, PrincipalSource }
Hiermee wordt de lijst rechtstreeks van de externe machine opgehaald. Om meerdere doelen tegelijk te controleren, kunt u eenvoudig een lijst doorgeven:
$computers = @("wsk-m2211", "srv-sql01", "srv-rds02") Invoke-Command -ComputerName $computers -ScriptBlock { Get-LocalGroupMember -Group "Administrators" | Where-Object { $_. Name -notlike "*Domain Admins*" } | Select-Object Name, ObjectClass, PrincipalSource }
Exporteer deze informatie naar een CSV-bestand door de uitvoer door te sturen naar Export-Csv. Bijvoorbeeld:
$results | Export-Csv -Path "C:\PS\admins.csv" -NoTypeInformation -Encoding UTF8
Als u een volledig domein beheert met Active Directory, kunt u zelfs alle Windows Server-machines targeten met Get-ADComputer om de servers weer te geven, vervolgens door hun namen te itereren en deze opdrachten op afstand uit te voeren. Houd er wel rekening mee dat er fouten kunnen optreden als sommige servers offline zijn of andere machtigingen hebben. Soms moet u dit in een foutafhandeling verwerken of fouten stilzwijgend negeren.
Gebruikers verwijderen uit de lokale beheerdersgroep
Het beperken van het aantal lokale beheerders is gunstig voor beveiligingsmedewerkers. Handmatig opruimen is prima als je het maar één keer hoeft te doen, maar voor regelmatige controles zijn Groepsbeleidvoorkeuren of Beperkte groepen je beste vrienden – deze beheren automatisch wie er in de beheerdersgroep zit. Als je het snel wilt doen, is PowerShell de oplossing:
Remove-LocalGroupMember -Group "Administrators" -Member "username"
En voor computers op afstand kunt u het gewoon in een Invoke-Command plaatsen. Bijvoorbeeld:
Invoke-Command -ComputerName wsk-m2211 -ScriptBlock { Remove-LocalGroupMember -Group "Administrators" -Member "username" }
Het is nogal omslachtig om handmatig de gebruikers te selecteren die je wilt verwijderen. Een slimmere manier is om alle huidige beheerders te verzamelen en vervolgens de ongewenste gebruikers visueel te selecteren. Je kunt de uitvoer doorsturen naar Out-GridView om uit een lijst te kiezen:
$results = Invoke-Command wsk-m2211, wsk-m2233 { Get-LocalGroupMember -Group "Administrators" | Where-Object { $_. Name -notlike "*Domain Admins*" } | Select-Object Name, ObjectClass, PrincipalSource, SID } $prinolsToRemove = $results | Out-GridView -Title "Select users to remove" -OutputMode Multiple foreach ($pr in $prinolsToRemove) { Invoke-Command -ComputerName $pr. PSComputerName -ScriptBlock { Remove-LocalGroupMember -Group "Administrators" -Member $using:pr. Name } }
Op deze manier kies je wie je wilt verwijderen en het script verwijdert ze vervolgens van alle externe servers. Niet perfect, maar beter dan dit steeds handmatig te doen. Vergeet niet dat $using:je met deze constructie lokale variabelen kunt doorgeven aan je externe sessies – een klein detail, maar het bespaart je een hoop gedoe.
Hopelijk biedt dit een goed uitgangspunt voor het beheren van lokale beheerdersrechten op verschillende machines. Het is niet waterdicht en soms werkt het niet meteen, dus verwacht wat uitproberen. Maar zodra de scripts eenmaal werken, bespaart het enorm veel tijd en helpt het de beveiliging te waarborgen.
Samenvatting
- Gebruik Get-LocalGroupMember om beheerders lokaal weer te geven.
- Active Directory-groepen opvragen met Get-ADGroupMember
- Voer controles op afstand uit met Invoke-Command nadat u WinRM hebt ingesteld.
- Automatiseer het opruimen met PowerShell-scripts en Out-GridView.
Samenvatting
Het achterhalen wie beheerdersrechten heeft, hoeft geen nachtmerrie te zijn. Zodra de scripts zijn geïnstalleerd, kunt u de machtigingen in de gaten houden, ongewenste gebruikers verwijderen en verrassingen voorkomen. Het is in eerste instantie wel even een gedoe om in te stellen, maar absoluut de moeite waard als beveiliging of compliance belangrijk voor u zijn. Probeer tijdens het instellen niets kapot te maken en onthoud dat Windows het leven soms onnodig ingewikkeld maakt. Ik hoop dat dit iemand een paar uur bespaart – het werkte in ieder geval voor mij.