Site Overlay

Domain Admin Grubuna Yeni Kullanıcı Eklendiğinde Otomatik Bildirim Alın: PowerShell Betiği ile Adım Adım Kılavuz

Bu makalede, Windows sunucularınızda Domain Admin grubuna yeni bir kullanıcı eklendiğinde otomatik bildirim almak için kullanabileceğiniz bir PowerShell betiği oluşturmayı öğrenin. Güvenliğinizi artırın ve izlemeyi kolaylaştırın! Domain Admin Grubuna Yeni Kullanıcı Eklendiğinde Otomatik Bildirim Alın: PowerShell Betiği ile Adım Adım Kılavuz.

Giriş

Active Directory’de bir kullanıcı Domain Admins grubuna eklendiğinde uyarı e-postası almak için birkaç yol izleyebilirsiniz. Bunlardan biri, Windows Event Log’ları izleyerek belirli bir olay gerçekleştiğinde e-posta göndermek için PowerShell ve Task Scheduler kullanmaktır. İşte bu işlemi nasıl yapabileceğinizi gösteren adımlar:

1. Active Directory Denetleyicisinde Denetim Günlüklerini Aktif Etme

İlk olarak, Active Directory Denetleyicinizde denetim günlüklerini etkinleştirmeniz gerekir. Bunu Group Policy Management Editor ile yapabilirsiniz:

  1. Group Policy Management Console (GPMC) açın.
  2. Etki alanınız için uygun GPO’yu düzenleyin veya yeni bir GPO oluşturun.
  3. Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration > Audit Policies > Account Management yolunu izleyin.
  4. Audit Security Group Management politikasını etkinleştirin ve hem Success hem de Failure olaylarını izlemek için ayarlayın.

2. PowerShell Scripti Oluşturma

Denetim günlüklerinden belirli bir olayı izlemek ve bu olay gerçekleştiğinde e-posta göndermek için bir PowerShell scripti oluşturabilirsiniz.

Örneğin, Event ID 4728 (bir kullanıcı grubuna eklendiğinde oluşturulan olay) veya Event ID 4756 (global bir gruba kullanıcı eklendiğinde oluşturulan olay) numaralı olayları izleyebilirsiniz. İşte örnek bir PowerShell scripti:

# Log dosyası yolu
$logFilePath = "C:\DomainAdminLogTakipArifaScript\arifa.log"

# E-posta ayarları
$smtpServer = "smtp.goolge.com"
$smtpFrom = "[email protected]"
$smtpTo = "[email protected]"
$smtpPort = 25
$smtpUsername = "[email protected]"
$smtpPassword = "Q9oyosdasdF[-"
$mailSubject = "Domain Admin Grubuna Yeni Bir Kullanıcı Eklendi"
$mailBody = "Uyarı! Domain Admin Grubuna yeni bir kullanıcı eklendi, güvenlik için grubu kontrol etmeniz gerekmektedir.`n`nBu PowerShell betiği sistem güvenliğini sağlamak adına Arif Akyüz tarafından oluşturulmuştur."

# Olay kimlikleri
$eventID = 4728

# Olayları kontrol etme
$events = Get-WinEvent -FilterHashtable @{LogName='Security'; Id=$eventID} -MaxEvents 50

$eventDetected = $false

foreach ($event in $events) {
    $user = $event.Properties[0].Value
    $groupName = $event.Properties[2].Value
    $groupDomain = $event.Properties[3].Value

    if ($groupName -eq "Domain Admins" -and $groupDomain -eq "ARIFAKYUZ.LOCAL") {
        $eventDetected = $true
        $message = "Domain Admin Grubuna yeni bir kullanıcı eklendi: $user"

        # Log dosyasına yazma
        Add-Content -Path $logFilePath -Value $message

        # E-posta gönderme
        $smtpClient = New-Object Net.Mail.SmtpClient($smtpServer, $smtpPort)
        $smtpClient.EnableSsl = $false
        $smtpClient.Credentials = New-Object System.Net.NetworkCredential($smtpFrom, $smtpPassword)
        $mailMessage = New-Object Net.Mail.MailMessage($smtpFrom, $smtpTo, $mailSubject, $mailBody)
        $smtpClient.Send($mailMessage)

        # Mesajları görüntüle
        Write-Output "E-posta gönderildi: $mailBody"
    }
}

# Olay yoksa log dosyasına mesaj yazma
if (-not $eventDetected) {
    $noEventMessage = "$(Get-Date): 'Domain Admin Grubuna yeni bir kullanıcı eklenmedi.'"
    Add-Content -Path $logFilePath -Value $noEventMessage

    # Mesajları görüntüle
    Write-Output $noEventMessage
}

Task Scheduler’ı, Domain Admins grubuna bir kullanıcı eklendiğinde otomatik olarak tetiklenecek şekilde yapılandırmak, doğrudan bir olayla tetikleme yapmayı gerektirir. Ancak, Windows Task Scheduler, doğrudan Active Directory gruplarındaki değişiklikleri izleyen bir tetikleyici sunmaz. Bunun yerine, bir olayın tetiklenmesini izlemek için Event Viewer’daki belirli olayları kullanarak görev oluşturabilirsiniz.

Aşağıda, bu işlemi nasıl yapılandırabileceğinizi adım adım açıklayacağım:

3. Olayı Tespit Etme

Önce, Domain Admins grubuna bir kullanıcı eklendiğinde oluşan olayların Event Viewer’da doğru bir şekilde kaydedildiğinden emin olun. Genellikle bu olaylar Event ID 4728 (bir kullanıcı bir gruba eklendiğinde) veya Event ID 4756 (bir kullanıcı global bir gruba eklendiğinde) ile ilişkilidir.

  1. Event Viewer‘ı açın (Başlat menüsünden “eventvwr.msc” yazın).
  2. Windows Logs > Security yolunu izleyin.
  3. Domain Admins grubuna bir kullanıcı eklendiğinde oluşan olayları bulup not edin. Olay detaylarını inceleyin ve olayın Event ID’sini doğrulayın.

4. Task Scheduler ile Görev Oluşturma

  1. Task Scheduler‘ı açın (Başlat menüsünden “Task Scheduler” yazın).
  2. Create Task seçeneğini tıklayın. Bu, daha ayrıntılı bir görev oluşturmanıza olanak tanır.
  3. General sekmesinde:
    • Göreve bir isim verin, örneğin: Monitor Domain Admins Group Changes.
    • Run whether user is logged on or not seçeneğini işaretleyin.
    • Run with highest privileges seçeneğini işaretleyin.
  4. Triggers sekmesinde:
    • New butonuna tıklayın.
    • Begin the task kısmında On an event seçeneğini seçin.
    • Log olarak Security seçin.
    • Source olarak Microsoft Windows security auditing seçin.
    • Event ID kısmına Domain Admins grubuna üye eklenmesiyle ilişkili olay ID’lerini girin (4728 ve 4756 gibi).
    • OK butonuna tıklayın.
  5. Actions sekmesinde:
    • New butonuna tıklayın.
    • Action olarak Start a program seçeneğini seçin.
    • Program/script kısmına powershell.exe yazın.
    • Add arguments kısmına betiğinizin tam yolunu ve dosya adını girin, örneğin: -File "C:\Path\To\Check-DomainAdminsMembership.ps1".
    • OK butonuna tıklayın.
  6. Conditions ve Settings sekmelerinde gerekli ayarları yapın. Genellikle varsayılan ayarlar yeterlidir.
  7. OK butonuna tıklayarak görevi oluşturun.
  8. Görevinizin çalışmasını istediğiniz şekilde yapılandırmak için Conditions ve Settings sekmelerinde yapılacak ayarları aşağıda detaylandırıyorum. Bu ayarlar, görevinizin doğru zamanlarda ve koşullarda çalışmasını sağlayacaktır.
  9. 1. Conditions Sekmesi
  10. Conditions sekmesindeki ayarlar, görevinizin ne zaman çalışacağını belirler. Bu ayarları şu şekilde yapılandırabilirsiniz:
  11. Start the task only if the computer is on AC power: Eğer bu bilgisayarın dizüstü bilgisayar olduğundan emin değilseniz veya görevin sürekli çalışması gerekiyorsa, bu seçeneği işaretlemeyin. Bu seçenek, görev yalnızca bilgisayar AC güçle bağlıysa çalışır. Sunucular için genellikle bu seçenek işaretlenmez.
  12. Start the task only if the computer is idle for: Bu seçeneği işaretlemeyin, çünkü göreviniz hemen çalışmalı ve bilgisayarın boşta olmasını beklememelisiniz.
  13. Stop if the computer ceases to be idle: Bu seçeneği işaretlemeyin, çünkü göreviniz bilgisayarın belirli bir durumunu beklememeli.
  14. Restart if the task fails: Eğer görev başarısız olursa görevi yeniden başlatmak isteyebilirsiniz. Ancak, görevinizin ne kadar süreyle yeniden denenmesi gerektiğini ve kaç kez yeniden deneneceğini belirleyebilirsiniz. Varsayılan ayarları kullanabilirsiniz, ancak sürekli bir yeniden deneme gerekmediği sürece, bunu işaretlemeniz gerekmez.
  15. 2. Settings Sekmesi
  16. Settings sekmesindeki ayarlar, görevinizle ilgili genel yönetim seçeneklerini belirler. Şu ayarları yapılandırabilirsiniz:
  17. Allow task to be run on demand: Bu seçeneği işaretleyin. Bu, görevinizi manuel olarak çalıştırmanıza olanak tanır, bu da test yaparken kullanışlı olabilir.
  18. Run task as soon as possible after a scheduled start is missed: Bu seçeneği işaretleyin. Görev zamanında çalışmazsa, bir sonraki fırsatta çalıştırılmasını sağlar.
  19. If the task fails, restart every: Göreviniz başarısız olursa belirli bir süre sonra yeniden başlamasını sağlayabilirsiniz. Bu seçenek genellikle görevin sürekli çalışması gerekmeyen durumlarda kullanılır.
  20. Stop the task if it runs longer than: Görevinizin belirli bir süre çalışmasını sınırlandırabilirsiniz. Eğer betiğiniz uzun süre çalışıyorsa, bu ayarı belirlemek isteyebilirsiniz. Ancak, genellikle bu tür görevler için varsayılan ayar yeterlidir.
  21. If the task is already running, then the following rule applies: Görev zaten çalışıyorsa nasıl davranılacağını seçebilirsiniz. Do nothing seçeneğini seçmek, görevin birden fazla örneğinin çalışmasını engeller.
  22. Özetle
  23. Conditions Sekmesinde:
    • Start the task only if the computer is on AC power seçeneğini işaretlemeyin (Varsayılan ayar).
    • Start the task only if the computer is idle for ve Stop if the computer ceases to be idle seçeneklerini işaretlemeyin.
    • Restart if the task fails seçeneğini ihtiyaca göre işaretleyebilirsiniz.
  24. Settings Sekmesinde:
    • Allow task to be run on demand seçeneğini işaretleyin.
    • Run task as soon as possible after a scheduled start is missed seçeneğini işaretleyin.
    • Stop the task if it runs longer than ve If the task is already running, then the following rule applies ayarlarını ihtiyaca göre yapılandırın.
  25. Bu ayarlar, görevlerinizin doğru şekilde çalışmasını ve Domain Admins grubuna kullanıcı eklenir eklenmez e-posta bildirimi almanızı sağlayacaktır.

Arif Akyüz Sistem Network Yöneticisi ve Siber Güvenlik Uzmanı
Arif Akyüz Sistem Network Yöneticisi ve Siber Güvenlik Uzmanı

Arif Akyüz
Bilgi Teknolojileri
Sistem Network Yöneticisi
ve Siber Güvenlik Uzmanı
[email protected]

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
© 2024 Arif Akyüz. Tüm Hakları Saklıdır. Gizlilik politikası
Yasal Uyarı: Bu sitede yer alan makaleler bilgi amaçlıdır ve hatalar içerebilir. Site sahibi, bu bilgilerin kullanımı sonucunda oluşabilecek zararlardan sorumlu tutulamaz.