Pozrime sa na príklady procesu vytvorenia jednoduchého systému informovania správcu o pridaní nového používateľa do skupiny zabezpečenia Active Directory. Chceme napríklad sledovať zmenu skupiny správcov domén a ak k nej bude pridaný nový používateľ, dostaneme upozornenie (listom alebo vyskakovacím oknom).
Na usporiadanie takéhoto riešenia existujú dve možnosti:
- Môžete povoliť auditovanie udalostí na radičoch domény a sledovať výskyt udalosti, keď je používateľ pridaný do bezpečnostnej skupiny (EventID 4728)
- Uložte lokálny textový súbor so zoznamom používateľov v konkrétnej skupine a pravidelne ho porovnávajte s aktuálnymi členmi skupiny domén
obsah:
- Audit pridávania používateľa do skupiny v radiči domény
- Porovnanie súčasného zloženia skupiny domén so šablónou
Audit pridávania používateľa do skupiny v radiči domény
V prípade, že máte v GPO povolenú politiku auditu Konfigurácia počítača -> Nastavenia systému Windows -> Nastavenia zabezpečenia -> Pokročilá konfigurácia auditu -> Správa účtu -> Správa skupiny zabezpečenia auditu, potom, keď je používateľ pridaný do skupiny Active Directory, udalosť EventId sa objaví v protokole zabezpečenia 4728 (Člen bol pridaný do globálnej skupiny s povoleným zabezpečením).
Pomocou programu PowerShell môžete sledovať výskyt tejto udalosti v protokole zabezpečenia. Napríklad všetky udalosti s týmto kódom zobrazujeme do 24 hodín na radiči domény. Kvôli prehľadnosti zobrazíme názov skupiny AD, ktorá sa zmenila, ktorý účet bol pridaný a ktorý z administrátorov pridal používateľa do skupiny (skript podľa príkladu z článku Získanie zoznamu používateľov služby AD vytvoreného do 24 hodín).
$ time = (get-date) - (new-timespan -h 24)
Get-WinEvent -FilterHashtable @ LogName = "Security"; ID = 4728; StartTime = $ Time | Foreach
$ event = [xml] $ _. ToXml ()
ak ($ udalosť)
$ Time = Get-Date $ _. TimeCreated -UFormat "% Y-% m-% d% H:% M:% S"
$ NewUser = $ event.Event.EventData.Data [0]. "# Text"
$ ADGroup = $ event.Event.EventData.Data [2]. "# Text"
$ AdminUser = $ event.Event.EventData.Data [6]. "# Text"
$ dc = $ event.Event.System.computer
$ dc + „|“ + $ Čas + „|“ + „|“ + $ ADGroup + „|“ + $ NewUser + „|“ + $ AdminUser
Teraz v radiči domény musíte vytvoriť novú úlohu pre plánovača a spojiť jej spustenie s udalosťou 4728. Keď sa vyskytne táto udalosť, odošlite správu používateľovi (ako je potrebné priložiť skript k udalosti v článku Spúšťače udalostí systému Windows a spustenie skriptu PowerShell, keď dôjde k udalosti, nebudem ju opakovať)..
Problém je však v tom, že je skontrolovaný iba jeden protokol DC. Ak bol používateľ pridaný do skupiny na inom radiči domény, táto udalosť sa nezobrazí. Môžete si samozrejme vytvoriť predplatné na udalosti z niekoľkých DC alebo ich triediť cez všetky radiče pomocou skriptu, ale ak je v doméne veľké množstvo DC, nie je to všetko veľmi pohodlné.
rada. Príklad cyklu na výpočet všetkých DC v doméne pomocou Get-ADDomainController a zhromažďovanie udalostí z nich môže vyzerať takto (príklad z tohto článku):$ time = (get-date) - (new-timespan -hour 124)
$ DCs = Get-ADDomainController -Filter *
foreach ($ DC v $ DCs)
Get-WinEvent -ComputerName $ DC -FilterHashtable @ LogName = "Security"; ID = 4728; StartTime = $ Time | Foreach
$ event = [xml] $ _. ToXml ()
ak ($ udalosť)
$ Time = Get-Date $ _. TimeCreated -UFormat "% Y-% m-% d% H:% M:% S"
$ NewUser = $ event.Event.EventData.Data [0]. "# Text"
$ ADGroup = $ event.Event.EventData.Data [2]. "# Text"
$ AdminUser = $ event.Event.EventData.Data [6]. "# Text"
$ dc = $ event.Event.System.computer
$ dc + „|“ + $ Čas + „|“ + „|“ + $ ADGroup + „|“ + $ NewUser + „|“ + $ AdminUser
Zvážte iný prístup.
Porovnanie súčasného zloženia skupiny domén so šablónou
Pomocou rutiny Get-ADGroupMember zobrazte zoznam používateľov v skupine Domain Admin a uložte výsledný zoznam do textového súboru (zostavujeme rekurzívny zoznam používateľov, berúc do úvahy vnorené skupiny).
(Get-ADGroupMember --Identity "Domain Admins" -recursive) .Name | Out-File C: \ PS \ DomainAdmins.txt
Teraz pridajte nového používateľa do skupiny Domain Admins a znova uložte zoznam používateľov, ale do druhého súboru.
(Get-ADGroupMember --Identity "Domain Admins" -recursive) .Name | Out-File C: \ PS \ DomainAdminsCurrent.txt
Teraz porovnajte dva súbory a zobrazte rozdiely v zoznamoch:
$ oldadm = GC C: \ PS \ DomainAdmins.txt
$ newadm = GC C: \ PS \ DomainAdminsCurrent.txt
$ diff = Compare-Object -ReferenceObject $ oldadm -DifferenceObject $ newadm | Select-Object -ExpandProperty InputObject
write-host $ diff
Zobrazí sa účet, ktorý bol pridaný do skupiny AD..
Na konzole môžete zobraziť správu:
$ result = (Compare-Object -ReferenceObject $ oldadm -DifferenceObject $ diff | Where-Object $ _. SideIndicator -eq "=>" | | Select-Object -ExpandProperty InputObject) -join ","
Ak (výsledok $)
msg * "Používateľ bol pridaný do skupiny Domain Admins: $ result"
Alebo pošlite e-mail pomocou rutiny Send-MailMessage:
Ak (výsledok $)
Send-MailMessage -SmtpServer msg01 -Z [email protected] -To [email protected] -Subject "Používateľ bol pridaný do skupiny Domain Admins: $ result" -Body "Správa bola vytvorená $ date" -Priority High
Tento skript je možné uložiť do súboru admins_group_changes.ps1 a pravidelne ho spúšťať pomocou plánovača (ako vytvoriť plánovaciu úlohu pomocou PowerShell). Vytvorme novú úlohu pre plánovač, ktorý spúšťa náš skript PowerShell raz denne, ktorý kontroluje zloženie skupiny správcov domén s lokálne uloženým zoznamom.
$ Trigger = New-ScheduledTaskTrigger -At 10:00 - Denne
$ User = "NT AUTHORITY \ SYSTEM"
$ Action = New-ScheduledTaskAction - Execute "PowerShell.exe" -Argument "C: \ PS \ admins_group_changes.ps1"
Register-ScheduledTask -TaskName "Check Admins Group" -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Highest -Force
Zloženie skupiny správcov sa teda bude kontrolovať raz za deň av prípade zmien bude správcovi doručené oznámenie (kontextová správa alebo list).