Weboldal keresés

Az adminisztrátor figyelmeztetése, ha új felhasználók kerülnek az AD-csoportba


Nézzük meg, hogyan hozhatunk létre egy egyszerű rendszergazdai értesítési rendszert, amikor valaki új felhasználót ad hozzá a fontos Active Directory biztonsági csoporthoz. Például nyomon szeretné követni a domain rendszergazdai csoport változásait, és ha új felhasználó kerül be, akkor a megfelelő értesítést szeretné megkapni (e-mailben vagy felugró figyelmeztető üzenetben).

A megvalósítás módjai vannak:

  1. Engedélyezheti az eseménynaplózást a tartományvezérlőkön, és nyomon követheti azt az eseményt, amikor új felhasználót adnak a biztonsági csoporthoz (EventID 4728);

  2. Tárolhat egy helyi szövegfájlt egy bizonyos csoport felhasználóinak listájával, és rendszeresen összehasonlíthatja a tartománycsoport jelenlegi taglistájával.

Felhasználó hozzáadása a tartományvezérlőn lévő csoporthoz

Ha a naplózási házirend engedélyezve van a csoportházirend-objektum Számítógép-konfiguráció -> Windows-beállítások -> Biztonsági beállítások -> Speciális naplóbeállítások -> Fiókkezelés -> Biztonsági csoportok ellenőrzése szakaszban, az esemény az eseményazonosítóval A >4732 (Egy tag hozzáadva egy biztonsági funkcióval rendelkező globális csoporthoz) megjelenik a Biztonsági naplóban, miután új felhasználót vett fel bármely Active Directory-csoporthoz.

A PowerShell használatával nyomon követheti ezt az eseményt a biztonsági naplóban. Például jelenítse meg az összes eseményt ezzel az azonosítóval a tartományvezérlőn az elmúlt 24 órában. A kényelmesebb használat érdekében megjelenítjük a megváltozott AD-csoport nevét, a hozzáadott fiók nevét és a felhasználót a csoporthoz felvett rendszergazdát. A szkript hasonló a Hogyan hozzuk létre az Active Directory összes felhasználóját az elmúlt 24 órában című cikkben megadotthoz.


$CurrTime = (get-date) - (new-timespan -hour 24)
Get-WinEvent -FilterHashtable @{LogName="Security";ID=4732;StartTime=$CurrTime}| Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$CurrTime = Get-Date $_.TimeCreated -UFormat "%Y-%d-%m %H:%M:%S"
$New_GrpUser = $event.Event.EventData.Data[0]."#text"
$AD_Group = $event.Event.EventData.Data[2]."#text"
$AdminWhoAdded = $event.Event.EventData.Data[6]."#text"
$dc = $event.Event.System.computer
$dc + “|” + $CurrTime + “|” + “|” + $AD_Group + “|” + $New_GrpUser + “|” + $AdminWhoAdded
}
}

Ezután hozzon létre egy új ütemező feladatot a tartományvezérlőn, amelyet a 4732-es azonosítójú esemény indít el. Amikor ez az esemény bekövetkezik, a rendszer üzenetet küld a felhasználónak. (Használja a Windows eseményindítóit, hogy szkriptet csatoljon az eseményhez).

A probléma azonban az, hogy csak egy DC biztonsági naplóját ellenőrzik. Ha egy felhasználót hozzáadtak egy csoporthoz egy másik tartományvezérlőn, akkor ez az esemény nem jelenik meg. Természetesen előfizethet több DC eseményeire, vagy futtathatja a scriptet minden vezérlőn, de ha sok DC van a tartományban, akkor ez nem túl kényelmes.

Tipp. A példa a tartományban lévő összes DC-nek egy hurokban történő ellenőrzésére és az események begyűjtésére a következőképpen néz ki (a kódpélda a Felhasználó jelszavának visszaállításának nyomon követése az Active Directoryban című cikkből származik):

$time = (get-date) - (new-timespan -hour 124)
$DCs = Get-ADDomainController -Filter *
foreach ($DC in $DCs){
Get-WinEvent -ComputerName $DC -FilterHashtable @{LogName="Security";ID=4732;StartTime=$Time}| Foreach {
$event = [xml]$_.ToXml()
if($event)
{
CurrTime = Get-Date $_.TimeCreated -UFormat "%Y-%d-%m %H:%M:%S"
$New_GrpUser = $event.Event.EventData.Data[0]."#text"
$AD_Group = $event.Event.EventData.Data[2]."#text"
$AdminWhoAdded = $event.Event.EventData.Data[6]."#text"
$dc = $event.Event.System.computer
$dc + “|” + $CurrTime + “|” + “|” + $AD_Group + “|” + $New_GrpUser + “|” + $AdminWhoAdded
}
}
}

Nézzünk egy másik megközelítést.

A tartománycsoport jelenlegi tagjainak összehasonlítása a mentett sablonnal

Jelenítsük meg a felhasználók listáját a „Domain Admin” csoportban a Get-ADGroupMember parancsmag segítségével, és mentsük az eredményül kapott listát egy szöveges fájlba (rekurzív listát készítünk a felhasználókról, beleértve a beágyazott csoportokat):

(Get-ADGroupMember -Identity "Domain Admins" -recursive).Name | Out-File C:\PS\DomainAdmins.txt

Ezután adjon hozzá egy új felhasználót a „Domain Admins” csoporthoz, és mentse újra a felhasználók listáját egy másik fájlba:

(Get-ADGroupMember -Identity "Domain Admins" -recursive).Name | Out-File C:\PS\DomainAdminsActual.txt

Most hasonlítson össze két fájlt, és jelenítse meg a különbséget a listákban:

$old_adgroup_members=GC C:\PS\DomainAdmins.txt
$new_adgroup_members=GC C:\PS\DomainAdminsActual.txt
$diff=Compare-Object -ReferenceObject $old_adgroup_members -DifferenceObject $new_adgroup_members | Select-Object -ExpandProperty InputObject
write-host $diff

Megjelenik az AD csoporthoz hozzáadott új fiók.

Az üzenetet a konzolon is megjelenítheti:

$result=(Compare-Object -ReferenceObject $old_adgroup_members -DifferenceObject $diff | Where-Object {$_.SideIndicator -eq "=>"} | Select-Object -ExpandProperty InputObject) -join ", "
If ($result)
{msg * "A user $result has been added to Domain the Admins group"}

Vagy küldjön e-mailt a Send-MailMessage parancsmag használatával:


If ($result)
{Send-MailMessage -SmtpServer war-msg01 -From ADGroupChanges@a-d.site -To admin@a-d.site -Subject "A user $result has been added to the Domain Admins group" -Body "Created on $date" -Priority High}

Ezt a szkriptet elmentheti egy admins_group_changes.ps1 fájlba, és rendszeresen futtathatja a Feladatütemező segítségével (ütemezett feladatokat a PowerShell segítségével hozhat létre). Hozzon létre egy új ütemező feladatot, amely 24 óránként futtatja a PowerShell-szkriptet. Összehasonlítja a Domain Admins csoport tagjait a helyileg mentett listával.

$Trigger= New-ScheduledTaskTrigger -At 17:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\admins_group_changes.ps1 "
Register-ScheduledTask -TaskName "Check Domain Group Changes" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force

Így a Domain adminisztrátor csoport tagjait naponta egyszer ellenőrizzük, és ha változás történik, egy rendszergazda értesítést kap (felugró ablakban vagy e-mailben).

Kapcsolódó cikkek