Riasztás, ha egy felhasználót hozzáadnak az Active Directory csoporthoz

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)..