Follow
Follow

Active Directory Yetki Denetimi: Domain Admin ve Kritik Grup Değişikliklerini Anlık İzleyen PowerShell Scripti

Domain Admins gibi kritik AD gruplarındaki üyelik değişikliklerini PowerShell ile nasıl anlık izleyip uyarı ürettiğimi anlatıyorum.

Domain Admins grubuna yetkisiz veya fark edilmeyen bir üye eklenmesi, kurumsal güvenlik açısından en kritik risklerden biridir. Bu değişiklikleri manuel kontrol yerine otomatik izlemek, saldırı yüzeyini önemli ölçüde daraltır.

Kritik Grupların Mevcut Üyelerini Alma

$kritikGruplar = @("Domain Admins", "Enterprise Admins", "Schema Admins", "Backup Operators")

foreach ($grup in $kritikGruplar) {
    Write-Host "`n=== $grup ===" -ForegroundColor Cyan
    Get-ADGroupMember -Identity $grup | Select-Object Name, SamAccountName
}

Değişiklik Tespiti: Anlık Snapshot Karşılaştırması

Bir değişikliğin “yeni mi eski mi” olduğunu anlamak için, önceki durumu bir dosyada saklayıp her çalıştırmada karşılaştırıyorum:

$grup = "Domain Admins"
$onceki = if (Test-Path "C:\Durum\domain_admins_onceki.json") {
    Get-Content "C:\Durum\domain_admins_onceki.json" | ConvertFrom-Json
} else { @() }

$guncel = Get-ADGroupMember -Identity $grup | Select-Object -ExpandProperty SamAccountName

$yeniEklenen = Compare-Object -ReferenceObject $onceki -DifferenceObject $guncel |
    Where-Object {$_.SideIndicator -eq "=>"} | Select-Object -ExpandProperty InputObject

if ($yeniEklenen) {
    $mesaj = "UYARI: $grup grubuna yeni üye(ler) eklendi: $($yeniEklenen -join ', ')"
    Send-MailMessage -From "[email protected]" -To "[email protected]" `
        -Subject "GÜVENLİK UYARISI: $grup Değişikliği" -Body $mesaj -SmtpServer "smtp.sirket.com" -Priority High
}

$guncel | ConvertTo-Json | Set-Content "C:\Durum\domain_admins_onceki.json"

Daha Gerçek Zamanlı Çözüm: Event Log Tabanlı İzleme

Snapshot karşılaştırması periyodik çalışırken (örn. 15 dakikada bir), gerçek zamanlı bildirim için Security Event Log’daki Event ID 4728 (bir kullanıcı güvenlik grubuna eklendi) olayını izlemek daha hızlı sonuç verir:

Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4728} -MaxEvents 10 |
    Where-Object {$_.Message -match "Domain Admins"} |
    Select-Object TimeCreated, Message

Zamanlanmış Görev ile Sürekli İzleme

$tetikleyici = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 15) -RepetitionDuration ([TimeSpan]::MaxValue)
$eylem = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scriptler\YetkiDenetimi.ps1"
Register-ScheduledTask -TaskName "KritikGrupIzleme" -Trigger $tetikleyici -Action $eylem -RunLevel Highest

Sahadan Bir Not: PAM ile Tamamlayın

Bu tür izleme scriptleri değerli bir tespit katmanıdır, ancak asıl güçlü savunma PAM (Ayrıcalıklı Erişim Yönetimi) ile kalıcı yönetici yetkilerini tamamen ortadan kaldırmaktan geçer. İzleme scriptleri, PAM gibi önleyici kontrollerin yanında ikinci bir güvenlik katmanı olarak düşünülmeli.

Sonuç

Kritik AD gruplarındaki değişiklikleri otomatik izlemek, düşük maliyetli ama yüksek etkili bir güvenlik pratiğidir. Bir saldırganın veya yanlışlıkla yapılan bir değişikliğin fark edilme süresini saatlerden dakikalara indirir.

Comments
Join the Discussion and Share Your Opinion
Add a Comment

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir


Newsletter
Join Design Community
Get the latest updates, creative tips, and exclusive resources straight to your inbox. Let’s explore the future of design and innovation together.