Domänen Benutzer zum Lokalen Administrator – GPO
In großen Firmen und Unternehmen haben Standard Benutzer keine Administrator Berechtigungen. Das macht natürlich auch sinn, da es ein Sicherheitsrisiko (Viren) ist und da sonst manchen Benutzer ihr System zum schlechteren verändern könnten. In manchen wenigen Ausnahmefällen ist es aber nötig, dass ein Domänen Benutzer ein lokaler Administrator auf dem Client ist. Hierzu möchte man aber keinesfalls Userdaten herausgeben, die auf jedem Client funktionieren. Wir brauchen eine Lokaler Administrator Gruppenrichtlinie / GPO!
Domänen Benutzer zum lokalen Administrator Gruppenrichtlinie / GPO
Ablösung schafft hier eine Lokaler Administrator Gruppenrichtlinie / GPO. Es wird hier für jedes Computerobjekt im Active Directory (AD) eine Gruppe erzeugt, die den lokalen Administratoren des Computers hinzugefügt wird. Benötigt nun ein Benutzer lokale Adminrechte auf seinem Client, muss der User lediglich in die Gruppe aufgenommen werden.
Active Directory Gruppen erzeugen
Im Ersten Schritt müssen wir für jedes Client Computer Objekt im Active Directory (AD) eine eigene Gruppe erzeugen. Das ist mit PowerShell sehr einfach zu realisieren. Hierzu muss folgendes Script ausgeführt werden:
$computerlist = Get-ADComputer -Filter “Name -like '*N*'“ | Select -Expand Name #our namespace is N000123 (notebook) foreach ($computer in $computerlist) { NEW-ADGroup –name “Grp-Locad-$computer” –groupscope Global –path “OU=LocalAdminGroups,OU=your,DC=your,DC=domain” }
(Dieses Script ließt alle Computerobjekte aus, welche ein “N” im Namen haben und legt unter der OU “LocalAdminGroups” eine Gruppe für dieses Objekt an. Das PowerShell Script muss natürlich an die jeweilige AD Struktur und Namensgebung angepasst werden.)
Natürlich kommen – je nach Struktur und Größe des Netzwerks und des Unternehmens – oft neue Clients hinzu. Deswegen ist es sinnvoll dieses Script ein mal am Tag per Aufgabenplanung ausführen zu lassen. Wenn nun ein neues Computerobjekt angelegt wurde, erstellt das Script eine weitere “lokale Admin Gruppe”.
AD Gruppe den lokalen Administratoren hinzufügen
Nun kommt die eigentliche Lokaler Administrator Gruppenrichtlinie / GPO. Hierzu verwenden wir ebenfalls ein PowerShell Script. Folgendes Script versucht am lokalen Client / Computer die passende erzeugte Active Directory Gruppe zur “Administratoren” Gruppe hinzuzufügen.
$ComputerName = [system.environment]::MachineName #Import-Module ActiveDirectory try { $AdminGroup = [ADSI]("WinNT://$ComputerName/Administratoren,Group") #on english OS -> AdministratorS $AdminGroup.Add("WinNT://your.domain/Grp-Locad-$ComputerName,Group") } catch { }
(Achtung! Auf Englischen Betriebssystemen heißt die Admin Gruppe am Client (Zeile 6) nicht “Administratoren” sondern “Administrators”.)
Dieses Script (“addlocaladmingroup.ps1“) muss nun als GPO (Computerrichtlinie) beim Logon ausgeführt werden. Damit wird auf jedem Client die richtige Active Directory Gruppe in den lokalen Administratoren hinterlegt. Die Gruppenrichtlinie muss natürlich den Computerobjekten im AD zugewiesen werden. 😉
Anwendung
Nunja, ich hoffe es ist selbsterklärend. Wenn nun ein “normaler” User lokale Administrator Rechte auf seinem Client benötigt, muss lediglich in der passenden Active Directory Gruppe der Benutzer hinzugefügt werden.
Nach einem Neustart des Computers hat der User lokale Adminrechte. 🙂
Auswertung / Report per Mail
Je nach Struktur gibt es natürlich sehr viele Computerobjekte und deswegen auch viele Gruppen. Hier verliert man sehr schnell den Überblick. Deswegen gibt es die Möglichkeit sich eine Auswertung, beziehungsweise einen Report der Lokaler Administrator Gruppenrichtlinie senden zu lassen. Dazu gehen wir folgendermaßen vor.
Wie immer nutzen wir wieder ein PowerShell Script, das wir ebenfalls per Aufgabenplanung ausführen lassen. Einmal im Monat sollte reichen:
################################################################################################################## $smtpServer="10.10.10.10" #yourmailserver $from = "Monatsauswertung <[email protected]>" $to = "[email protected]" $subject = "Monatsbericht - Lokale User" $textEncoding = [System.Text.Encoding]::UTF8 $body = "" $inhalt = "" ################################################################################################################### $OU1 = "OU=LocalAdminGroups,OU=yourou,DC=your,DC=domain" $OU1Title = "Administrator: " ################################################################################################################### $groups1 = Get-ADGroup -Properties * -Filter * -SearchBase $OU1 Foreach($G1 In $Groups1) { $user = Get-ADGroupMember -identity $G1 -Recursive | foreach{ get-aduser $_} | select SamAccountName | ft -HideTableHeaders | Out-String if($user) { $inhalt = $inhalt + "<br>" + $OU1Title + $user + "<br>" + $G1.Name + "<br>" } #Write-Host $G1.Name #$G.Members } #Get-ADGroupMember -identity "GROUPNAME" -Recursive | foreach{ get-aduser $_} | select SamAccountName,objectclass,name $body =" <p style=""font-family:'Segoe UI', Segoe UI;""> Monatsaufstellung der lokalen Benutzer (lokale Administratoren)<br><br> $inhalt </P>" Send-Mailmessage -smtpServer $smtpServer -from $from -to $to -subject $subject -body $body -bodyasHTML -priority High -Encoding $textEncoding
Nach ausführen des PowerShell Scripts werden alle Gruppen ausgelesen und eine Mail generiert. Die Zeilen 1-12 müssen natürlich eurer Struktur angepasst werden.
Ich hoffe wir konnten euch zum Thema Lokaler Administrator Gruppenrichtlinie / GPO weiterhelfen. 🙂