Peringatan ketika pengguna ditambahkan ke grup direktori aktif

Mari kita lihat contoh proses pembuatan sistem sederhana untuk memberi tahu administrator tentang penambahan pengguna baru ke grup keamanan Direktori Aktif. Misalnya, kami ingin melacak perubahan sekelompok administrator domain, dan jika pengguna baru ditambahkan, kami akan menerima pemberitahuan (melalui surat atau jendela sembul).

Ada dua opsi untuk mengatur solusi semacam itu:

  • Anda dapat mengaktifkan audit acara pada pengontrol domain dan melacak terjadinya suatu peristiwa ketika pengguna ditambahkan ke grup keamanan (EventID 4728)
  • Simpan file teks lokal dengan daftar pengguna dalam grup tertentu dan bandingkan secara berkala dengan anggota grup domain saat ini

Konten:

  • Audit menambahkan pengguna ke grup pada pengontrol domain
  • Perbandingan komposisi grup domain saat ini dengan template

Audit menambahkan pengguna ke grup pada pengontrol domain

Jika Anda memiliki kebijakan audit yang diaktifkan di GPO Anda Konfigurasi Komputer -> Pengaturan Windows -> Pengaturan Keamanan -> Konfigurasi Audit Lanjut -> Manajemen Akun -> Manajemen Grup Keamanan Audit, kemudian ketika pengguna ditambahkan ke grup direktori aktif, acara EventId muncul di log keamanan 4728 (Seorang anggota ditambahkan ke grup global yang mengaktifkan keamanan).

Menggunakan PowerShell, Anda dapat melacak kejadian acara ini di log keamanan. Misalnya, kami menampilkan semua acara dengan kode ini dalam 24 jam pada pengontrol domain. Untuk kenyamanan, kami akan menampilkan nama grup AD, yang telah berubah, akun mana yang ditambahkan dan administrator mana yang menambahkan pengguna ke grup (skrip yang mengikuti contoh dari artikel. Mendapatkan daftar pengguna AD yang dibuat dalam 24 jam).

$ time = (get-date) - (new-timespan -jam 24)
Get-WinEvent -FilterHashtable @ LogName = "Security"; ID = 4728; StartTime = $ Time | Foreach
$ event = [xml] $ _. ToXml ()
if ($ event)

$ Time = Get-Date $ _. TimeCreated -UFormat "% Y-% m-% d% H:% M:% S"
$ NewUser = $ event.Event.EventData.Data [0]. "# Teks"
$ ADGroup = $ event.Event.EventData.Data [2]. "# Teks"
$ AdminUser = $ event.Event.EventData.Data [6]. "# Teks"
$ dc = $ event.Event.System.computer
$ dc + “|” + $ Waktu + “|” + "|" + $ ADGroup + “|” + $ Pengguna Baru + "|" + $ Admin Pengguna

Sekarang, pada pengontrol domain, Anda perlu membuat tugas baru untuk penjadwal dan mengikat peluncurannya ke acara 4728. Ketika acara ini terjadi, kirim pesan ke pengguna (cara mengikat skrip ke suatu acara dijelaskan dalam artikel Pemicu Peristiwa Windows dan Menjalankan skrip PowerShell ketika suatu peristiwa terjadi, saya tidak akan mengulanginya).

Namun, masalahnya adalah hanya satu log DC yang diperiksa. Jika pengguna ditambahkan ke grup pada pengontrol domain lain, Anda tidak akan melihat acara ini. Anda dapat, tentu saja, membuat berlangganan acara dari beberapa DC atau menyortir semua pengontrol dengan skrip, tetapi jika ada sejumlah besar DC dalam domain, semua ini tidak terlalu nyaman.

Kiat. Contoh loop dari penghitungan semua DC di domain menggunakan Get-ADDomainController dan mengumpulkan peristiwa dari mereka mungkin terlihat seperti ini (contoh dari artikel ini):

$ time = (get-date) - (new -panpan -jam 124)
$ DCs = Dapatkan-ADDomainController -Filter *
foreach ($ DC dalam $ DCs)
Get-WinEvent -ComputerName $ DC -FilterHashtable @ LogName = "Security"; ID = 4728; StartTime = $ Time | Foreach
$ event = [xml] $ _. ToXml ()
if ($ event)

$ Time = Get-Date $ _. TimeCreated -UFormat "% Y-% m-% d% H:% M:% S"
$ NewUser = $ event.Event.EventData.Data [0]. "# Teks"
$ ADGroup = $ event.Event.EventData.Data [2]. "# Teks"
$ AdminUser = $ event.Event.EventData.Data [6]. "# Teks"
$ dc = $ event.Event.System.computer
$ dc + “|” + $ Waktu + “|” + "|" + $ ADGroup + “|” + $ Pengguna Baru + "|" + $ Admin Pengguna



Pertimbangkan pendekatan yang berbeda.

Perbandingan komposisi grup domain saat ini dengan template

Menggunakan cmdlet Get-ADGroupMember, tampilkan daftar pengguna di grup Admin Domain dan simpan daftar yang dihasilkan dalam file teks (kami membuat daftar rekursif pengguna, dengan mempertimbangkan grup yang tersarang).

(Dapatkan-ADGroupMember -Identitas "Admin Domain" -kursif) .Nama | File C: \ PS \ DomainAdmins.txt

Sekarang tambahkan pengguna baru ke grup Admin Domain dan simpan daftar pengguna lagi, tetapi ke file kedua.

(Dapatkan-ADGroupMember -Identitas "Admin Domain" -kursif) .Nama | File C: \ PS \ DomainAdminsCurrent.txt

Sekarang bandingkan dua file dan tampilkan perbedaan dalam daftar:

$ oldadm = GC C: \ PS \ DomainAdmins.txt
$ newadm = GC C: \ PS \ DomainAdminsCurrent.txt
$ diff = Bandingkan-Objek -ReferensiObject $ oldadm -DifferenceObject $ newadm | Select-Object -ExpandProperty InputObject
tulis-host $ diff

Akun yang ditambahkan ke grup AD ditampilkan..

Anda dapat menampilkan pesan di konsol:

$ result = (Bandingkan-Objek -ReferensiObject $ oldadm -DifferenceObject $ diff | Di mana-Objek $ _. SideIndicator -eq "=>" | Select-Object -ExpandProperty InputObject) -join ","
Jika ($ hasil)
msg * "Pengguna ditambahkan ke grup Admin Domain: $ result"

Atau kirim email menggunakan cmdlet Send-MailMessage:

Jika ($ hasil)
Send-MailMessage -SmtpServer msg01 -Dari [email protected] -Untuk [email protected] -Subject "Pengguna ditambahkan ke grup Admin Domain: $ result" -Body "Pesan dibuat $ date" -Tinggi Prioritas

Script ini dapat disimpan ke file admins_group_changes.ps1 dan dijalankan secara teratur menggunakan scheduler (cara membuat tugas scheduler menggunakan PowerShell). Mari kita buat tugas baru untuk penjadwal, yang menjalankan skrip PowerShell kami sekali sehari, yang memeriksa komposisi grup administrator domain dengan daftar yang disimpan secara lokal.

$ Trigger = New-ScheduledTaskTrigger -At 10:00 am -Daily
$ User = "NT AUTHORITY \ SYSTEM"
$ Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C: \ PS \ admins_group_changes.ps1"
Registrasi-ScheduledTask -TaskName "Periksa Admin Grup" -Trigger $ Trigger -User $ User -Action $ Action -RunLevel Tertinggi -Force

Dengan demikian, komposisi grup administrator akan diperiksa sekali sehari, dan jika terjadi perubahan, administrator akan menerima notifikasi (pesan sembulan atau surat).