Nézzünk meg példákat egy egyszerű rendszer létrehozásának folyamatáról, mellyel értesítjük a rendszergazdát az új felhasználó hozzáadásáról az Active Directory biztonsági csoporthoz. Például nyomon szeretnénk követni a tartományi rendszergazdák egy csoportjának változását, és ha új felhasználót adunk hozzá, értesítést kapunk (levélben vagy felbukkanó ablakban)..
Kétféle lehetőség van egy ilyen megoldás megszervezésére:
- Engedélyezheti az események ellenőrzését a tartományvezérlőkön, és követheti az esemény előfordulását, amikor egy felhasználót hozzáadnak egy biztonsági csoporthoz (EventID 4728)
- Tárolja a helyi szöveges fájlt egy adott csoport felhasználói listájával, és rendszeresen hasonlítsa össze a domain csoport jelenlegi tagjaival
Tartalom:
- Ellenőrizze a felhasználó hozzáadását egy tartományvezérlő csoportjához
- A doméncsoport jelenlegi összetételének összehasonlítása a sablonnal
Ellenőrizze a felhasználó hozzáadását egy tartományvezérlő csoportjához
Abban az esetben, ha engedélyezte az ellenőrzési irányelveket a GPO-ban Számítógép konfigurálása -> Windows beállítások -> Biztonsági beállítások -> Speciális ellenőrzési beállítások -> Fiókkezelés -> A biztonsági csoport felügyelete, majd amikor egy felhasználót hozzáadnak az Active Directory csoporthoz, az EventId esemény megjelenik a biztonsági naplóban 4728 (Egy tagot hozzáadtak egy biztonsági kompatibilis globális csoporthoz).
A PowerShell használatával nyomon követheti az esemény előfordulását a biztonsági naplóban. Például az összes eseményt ezzel a kóddal 24 órán belül megjelenítjük egy tartományvezérlőn. A kényelem kedvéért megjelenítjük az AD csoport nevét, amely megváltozott, melyik fiókot adta hozzá, és melyik rendszergazdák adták hozzá a felhasználót a csoporthoz (szkript a 24 órán belül létrehozott AD felhasználók listájának megszerzése című cikk példáján alapul).
$ time = (get-date) - (új idõtartam - 24 óra)
Get-WinEvent -FilterHashtable @ LogName = "Biztonság"; ID = 4728; StartTime = $ Time | Foreach
$ esemény = [xml] $ _. ToXml ()
if ($ esemény)
$ Time = Get-Date $ _. TimeCreated -UFormat "% Y-% m-% d% H:% M:% S"
$ NewUser = $ event.Event.EventData.Data [0]. "# Szöveg"
$ ADGroup = $ event.Event.EventData.Data [2]. "# Szöveg"
$ AdminUser = $ event.Event.EventData.Data [6]. "# Szöveg"
$ dc = $ event.Event.System.computer
$ dc + “|” + $ Idő + “|” + “|” + $ ADGroup + “|” + $ NewUser + “|” + $ AdminUser
Most, a tartományvezérlőn, új feladatot kell létrehoznia az ütemezőhöz, és elindítását hozzá kell kötnie a 4728 eseményhez. Amikor ez az esemény bekövetkezik, küldjön egy üzenetet a felhasználónak (hogyan lehet egy parancsfájlt egy eseményhez kötni, a Windows eseményindítók és a PowerShell parancsfájl futtatása című cikkben olvasható, amikor egy esemény bekövetkezik, nem fogom megismételni)..
A probléma azonban az, hogy csak egy DC napló kerül ellenőrzésre. Ha a felhasználót egy másik tartományvezérlőn adták hozzá a csoporthoz, akkor nem fogja látni ezt az eseményt. Természetesen előfizetést hozhat létre az eseményekről több DC-ből, vagy sztrripttel rendezheti az összes vezérlőt, de ha a tartományban nagyszámú DC van, akkor ez nem túl kényelmes.
tanács. Példa egy hurokra, amely a tartomány összes DC-jének felsorolását a Get-ADDomainController használatával teszi, és eseményeket gyűjt be tőlük (például a cikkből):$ time = (get-date) - (új időidő -óra 124)
$ DCs = Get-ADDomainController-Szűrő *
foreach ($ DC dollárban DC)
Get-WinEvent -ComputerName $ DC -FilterHashtable @ LogName = "Biztonság"; ID = 4728; StartTime = $ Time | Foreach
$ esemény = [xml] $ _. ToXml ()
if ($ esemény)
$ Time = Get-Date $ _. TimeCreated -UFormat "% Y-% m-% d% H:% M:% S"
$ NewUser = $ event.Event.EventData.Data [0]. "# Szöveg"
$ ADGroup = $ event.Event.EventData.Data [2]. "# Szöveg"
$ AdminUser = $ event.Event.EventData.Data [6]. "# Szöveg"
$ dc = $ event.Event.System.computer
$ dc + “|” + $ Idő + “|” + “|” + $ ADGroup + “|” + $ NewUser + “|” + $ AdminUser
Vegyünk egy másik megközelítést.
A doméncsoport jelenlegi összetételének összehasonlítása a sablonnal
A Get-ADGroupMember parancsmag segítségével jelenítse meg a Tartománygazda csoport felhasználói listáját, és mentse a kapott listát egy szöveges fájlba (egy rekurzív felhasználói listát készítünk, figyelembe véve a beágyazott csoportokat).
(Get-ADGroupMember -Identity "Domain Admins" -rekurzív) .Name | C fájl kívül: \ PS \ DomainAdmins.txt
Most adjon hozzá új felhasználót a Tartománygazdák csoporthoz, és mentse újra a felhasználók listáját, de a második fájlba.
(Get-ADGroupMember -Identity "Domain Admins" -rekurzív) .Name | Kimenő fájl C: \ PS \ DomainAdminsCurrent.txt
Most hasonlítsa össze a két fájlt, és jelenítse meg a különbségeket a listákban:
$ oldadm = GC C: \ PS \ DomainAdmins.txt
$ newadm = GC C: \ PS \ DomainAdminsCurrent.txt
$ diff = Objektum összehasonlítása -ReferenceObject $ oldadm -DifferenceObject $ newadm | Select-Object -ExpandProperty InputObject
írási-host $ diff
Megjelenik az AD csoporthoz hozzáadott fiók..
Megjeleníthet egy üzenetet a konzolon:
$ eredmény = (Objektum összehasonlítása -ReferenceObject $ oldadm -DifferenceObject $ diff | Hol-Object $ _. SideIndicator -eq "=>" | Select-Object -ExpandProperty InputObject) -join ","
If (eredmény $)
msg * "A felhasználó hozzáadva a Tartománygazdák csoporthoz: $ eredmény"
Vagy küldjön e-mailt a Send-MailMessage parancsmag segítségével:
If (eredmény $)
Send-MailMessage -SmtpServer msg01 -From [email protected] -To [email protected] -Subject "A felhasználót hozzáadtuk a Domain Admins csoporthoz: $ eredmény" -Body "Üzenet létrehozva $ date" -Priority High
Ez a szkript menthető az admins_group_changes.ps1 fájlba, és rendszeresen futtatható az ütemező segítségével (hogyan lehet ütemező feladatot létrehozni a PowerShell használatával). Hozzunk létre egy új feladatot az ütemező számára, amely naponta egyszer futtatja a PowerShell szkriptünket, amely helyileg mentett listával ellenőrzi a tartományi rendszergazdák csoportjának összetételét.
$ Trigger = New-ScheduledTaskTrigger - 10:00 -ig
$ Felhasználó = "NT HATÓSÁG \ RENDSZER"
$ Művelet = New-ScheduledTaskAction -Execute "PowerShell.exe" --Argument "C: \ PS \ admins_group_changes.ps1"
Regisztráció-Ütemezett Feladat-FeladatNév "Rendszergazdai csoport ellenőrzése" -Trigger $ Trigger -User $ Felhasználó -Action $ Akció -RunLevel Legmagasabb -Force
Így a rendszergazdák csoportjának összetételét naponta egyszer ellenőrzik, és változások esetén az adminisztrátor értesítést kap (felugró üzenet vagy levél)..