İçeriğe geç

Active Directory’de Kilitlenen Kullanıcıları Tespit Etme ve Mail ile Bildirme (PowerShell)

Kurumsal ortamlarda en sık karşılaşılan durumlardan biri, Active Directory kullanıcı hesaplarının kilitlenmesidir. Kullanıcı parolasını yanlış girdiğinde veya bir uygulama eski parolayla oturum açmaya çalıştığında, Windows Event ID 4740 kaydı üretir.

Sistem yöneticileri için bu kilitlenme olaylarını anlık takip etmek oldukça önemlidir. PowerShell kullanarak bu eventleri yakalayıp, otomatik olarak e-posta bildirimi gönderebiliriz.

Event ID 4740 Nedir?

  • Olay Kodu: 4740
  • Açıklama: Kullanıcı hesabı kilitlendiğinde Windows Security Log altında oluşur.
  • Log Kaynağı: Security

Bu event sayesinde, hangi kullanıcının, hangi bilgisayardan kilitlendiğini öğrenebiliriz.

PowerShell Scripti

Aşağıdaki script, son 4740 eventini çeker, ilgili kullanıcı ve bilgisayar bilgisini ayıklar, ardından SMTP sunucusu üzerinden mail gönderir.

$event = Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4740} -MaxEvents 1

if ($event) {
    $xml = [xml]$event.ToXml()
    $lockedUser = $xml.Event.EventData.Data | Where-Object { $_.Name -eq "TargetUserName" } | Select-Object -ExpandProperty '#text'
    $computer   = $xml.Event.EventData.Data | Where-Object { $_.Name -eq "WorkstationName" } | Select-Object -ExpandProperty '#text'

    Write-Host "Kilitlenen kullanıcı: $lockedUser"
    Write-Host "İstek yapılan bilgisayar: $computer"

    # Mail parametreleri
    $to = "itdestek@domain.com"
    $from = "bildirim@domain.com"
    $subject = "$lockedUser kullanıcısı kilitlendi"
    $body = "Kullanıcı $lockedUser kilitlendi.`nBilgisayar adı: $computer"

    $smtpServer = "smtp.smtpserver.com"
    $smtpPort = 587

    $securePassword = ConvertTo-SecureString "ParolanızBuraya" -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential("bildirim@domain.com", $securePassword)

    try {
        Send-MailMessage -From $from -To $to -Subject $subject -Body $body `
            -SmtpServer $smtpServer -Port $smtpPort -UseSsl -Credential $credential -DeliveryNotificationOption OnFailure -ErrorAction Stop
        Write-Host "Mail başarıyla gönderildi."
    }
    catch {
        Write-Host "Mail gönderirken hata oluştu: $($_.Exception.Message)"
    }
}
else {
    Write-Host "4740 eventi bulunamadı."
}

Scriptin Yaptıkları

  1. Security Log’dan son 4740 eventini alır.
  2. XML formatında event içeriğini işler.
  3. TargetUserName (kilitlenen kullanıcı) ve WorkstationName (hangi bilgisayardan denendiği) bilgisini çeker.
  4. SMTP üzerinden ilgili e-posta adresine bilgi gönderir.

Bu script sayesinde Active Directory’de yaşanan hesap kilitlenmelerini anlık olarak tespit edip mail bildirimi alabilirsiniz. Böylece hem kullanıcı desteği hızlanır hem de güvenlik tarafında daha etkin bir takip yapılmış olur.

Kategori:PowerShell

İlk Yorumu Siz Yapın

Bir yanıt yazın

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