Windows’da SIEM Entegrasyonu

Bölümler:

  1. Giriş ve Temel Kavramlar – Neden bu izinler gerekli?
  2. Adım Adım Yapılandırma – Grup üyelikleri, WMI, Event Log, DCOM, WinRM
  3. Otomatikleştirme Script’leri – PowerShell ile tam otomatik yapılandırma
  4. Test ve Doğrulama – Kapsamlı kontrol süreçleri
  5. Sorun Giderme – Sık karşılaşılan problemler ve çözümleri
  6. Güvenlik Best Practices – Minimum yetki prensibi ve güvenlik önerileri

Özellikler:

  • Praktik odaklı – Her adım için çalışır kod örnekleri
  • Kapsamlı – Tüm gerekli izin türlerini kapsıyor
  • Test edilebilir – Doğrulama script’leri ile sonuçları kontrol edebilme
  • Güvenlik odaklı – Güvenlik best practices’i dahil
  • Sorun giderme rehberi – Yaygın problemler ve çözümleri

Kullanıcı İzinlerini Doğru Yapılandırma

SIEM (Security Information and Event Management) sistemleri, kurumsal güvenlik altyapısının temel taşlarından biridir. Ancak Windows sunuculardan log toplarken en sık karşılaşılan sorunlardan biri, izin ve erişim problemleridir. Bu yazıda, Windows’da SIEM kullanıcısı için gerekli tüm izinleri PowerShell ile nasıl yapılandıracağınızı ve doğrulayacağınızı detaylı olarak anlatacağım.

Neden Bu İzinler Gerekli?

SIEM sistemleri Windows sunuculardan veri toplarken şu kaynaklara erişim sağlamalıdır:

  • Event Logs: Güvenlik, Sistem ve Uygulama logları
  • WMI (Windows Management Instrumentation): Sistem bilgileri ve performans verileri
  • WinRM (Windows Remote Management): Uzak yönetim ve komut çalıştırma
  • DCOM (Distributed Component Object Model): Distributed uygulamalar arası iletişim

Bu erişimlerin her biri farklı izin seviyelerinde yapılandırma gerektirir.

Adım 1: Temel Grup Üyelikleri

SIEM kullanıcısının öncelikle belirli Windows gruplarında olması gerekir:

# Kullanıcıyı gerekli gruplara ekle
$Groups = @(
    "Performance Monitor Users",
    "Event Log Readers", 
    "Distributed COM Users"
)

foreach ($Group in $Groups) {
    Add-LocalGroupMember -Group $Group -Member "siem_user"
    Write-Host "✓ $Group grubuna eklendi"
}

Bu Grupların İşlevleri:

  • Performance Monitor Users: Performans sayaçlarına ve WMI verilerine erişim
  • Event Log Readers: Event Log’larını okuma yetkisi
  • Distributed COM Users: DCOM uygulamalarını kullanma yetkisi

Adım 2: WMI Namespace İzinleri

WMI, Windows sistem bilgilerine programatik erişim sağlar. SIEM sistemleri bu verilere ihtiyaç duyar:

# WMI namespace'lerine erişim izni ver
$WmiNamespaces = @("root\cimv2", "root\default", "root\wmi")

foreach ($Namespace in $WmiNamespaces) {
    # Manuel yapılandırma: wmimgmt.msc kullanılması önerilir
    Write-Host "WMI Namespace: $Namespace yapılandırılıyor..."
}

Manuel WMI Yapılandırması:

  1. wmimgmt.msc çalıştırın
  2. WMI Control (Local)PropertiesSecurity
  3. Root namespace’ini seçin → Security
  4. SIEM kullanıcısını ekleyip şu izinleri verin:
    • Execute Methods
    • Provider Write
    • Enable Account
    • Remote Enable

Adım 3: Event Log İzinleri

Event Log’larına erişim için registry seviyesinde izinler gereklidir:

# Event Log registry anahtarlarına erişim izni
$EventLogs = @("Application", "System", "Security")

foreach ($LogName in $EventLogs) {
    $RegPath = "HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\$LogName"
    
    $Acl = Get-Acl $RegPath
    $AccessRule = New-Object System.Security.AccessControl.RegistryAccessRule(
        "COMPUTERNAME\siem_user",
        "ReadKey",
        "ContainerInherit,ObjectInherit",
        "None",
        "Allow"
    )
    $Acl.SetAccessRule($AccessRule)
    Set-Acl -Path $RegPath -AclObject $Acl
    
    Write-Host "✓ $LogName Event Log izni verildi"
}

Adım 4: DCOM Yapılandırması

DCOM izinleri, uzak WMI erişimi için kritiktir:

# DCOM Component Services yapılandırması
# Manuel yapılandırma gerekli: dcomcnfg.exe

Manuel DCOM Yapılandırması:

  1. dcomcnfg.exe çalıştırın
  2. Component ServicesComputersMy ComputerDCOM Config
  3. “Windows Management Instrumentation” bulun → Properties
  4. Security tab’ında:
    • Launch and Activation Permissions → Edit
    • Access Permissions → Edit
    • SIEM kullanıcısını ekleyip tüm izinleri verin

Adım 5: WinRM Yapılandırması

Uzak erişim için WinRM’in doğru yapılandırılması gerekir:

# WinRM temel yapılandırması
winrm quickconfig -y
winrm set winrm/config/service '@{AllowUnencrypted="true"}'
winrm set winrm/config/service/auth '@{Basic="true"}'

# Listener kontrolü
winrm enumerate winrm/config/listener

# Servis durumu kontrolü
Get-Service WinRM | Start-Service

Yapılandırma Script’i

Tüm bu işlemleri otomatikleştiren kapsamlı bir PowerShell script’i:

param([string]$SiemUsername)

$TestResults = @()

# Grup üyeliklerini test et
$Groups = @("Performance Monitor Users", "Event Log Readers", "Distributed COM Users")
foreach ($Group in $Groups) {
    $Members = Get-LocalGroupMember -Group $Group
    if ($Members.Name -contains "$env:COMPUTERNAME\$SiemUsername") {
        $TestResults += "✓ $Group: BAŞARILI"
    } else {
        $TestResults += "✗ $Group: BAŞARISIZ"
    }
}

# WMI erişim testi
try {
    Get-WmiObject -Class Win32_ComputerSystem | Out-Null
    $TestResults += "✓ WMI Erişim: BAŞARILI"
} catch {
    $TestResults += "✗ WMI Erişim: BAŞARISIZ"
}

# Event Log testi
try {
    Get-WinEvent -LogName Application -MaxEvents 1 | Out-Null
    $TestResults += "✓ Event Log: BAŞARILI"
} catch {
    $TestResults += "✗ Event Log: BAŞARISIZ"
}

# WinRM testi
$WinRMTest = Test-NetConnection -ComputerName localhost -Port 5985 -WarningAction SilentlyContinue
if ($WinRMTest.TcpTestSucceeded) {
    $TestResults += "✓ WinRM: BAŞARILI"
} else {
    $TestResults += "✗ WinRM: BAŞARISIZ"
}

# Sonuçları göster
Write-Host "Test Sonuçları:" -ForegroundColor Cyan
$TestResults | ForEach-Object { Write-Host $_ }

 


İzinleri Doğrulama ve Test Etme

Yapılandırma sonrası mutlaka test edilmelidir:

# 1. Grup üyeliklerini kontrol et
Get-LocalGroupMember -Group "Performance Monitor Users"
Get-LocalGroupMember -Group "Event Log Readers"
Get-LocalGroupMember -Group "Distributed COM Users"

# 2. WMI erişim testi
Get-WmiObject -Class Win32_ComputerSystem
Get-WmiObject -Class Win32_Service | Select-Object -First 5

# 3. Event Log erişim testi
Get-WinEvent -LogName Application -MaxEvents 5
Get-WinEvent -LogName System -MaxEvents 5

# 4. WinRM bağlantı testi
Test-NetConnection -ComputerName localhost -Port 5985
winrs -r:localhost -u:siem_user cmd

# 5. Credential ile test
$Credential = Get-Credential "COMPUTERNAME\siem_user"
Get-WmiObject -Class Win32_ComputerSystem -Credential $Credential

Doğrulama Script’i

Test sürecini otomatikleştiren doğrulama script’i:

param([string]$SiemUsername)

$TestResults = @()

# Grup üyeliklerini test et
$Groups = @("Performance Monitor Users", "Event Log Readers", "Distributed COM Users")
foreach ($Group in $Groups) {
    $Members = Get-LocalGroupMember -Group $Group
    if ($Members.Name -contains "$env:COMPUTERNAME\$SiemUsername") {
        $TestResults += "✓ $Group: BAŞARILI"
    } else {
        $TestResults += "✗ $Group: BAŞARISIZ"
    }
}

# WMI erişim testi
try {
    Get-WmiObject -Class Win32_ComputerSystem | Out-Null
    $TestResults += "✓ WMI Erişim: BAŞARILI"
} catch {
    $TestResults += "✗ WMI Erişim: BAŞARISIZ"
}

# Event Log testi
try {
    Get-WinEvent -LogName Application -MaxEvents 1 | Out-Null
    $TestResults += "✓ Event Log: BAŞARILI"
} catch {
    $TestResults += "✗ Event Log: BAŞARISIZ"
}

# WinRM testi
$WinRMTest = Test-NetConnection -ComputerName localhost -Port 5985 -WarningAction SilentlyContinue
if ($WinRMTest.TcpTestSucceeded) {
    $TestResults += "✓ WinRM: BAŞARILI"
} else {
    $TestResults += "✗ WinRM: BAŞARISIZ"
}

# Sonuçları göster
Write-Host "Test Sonuçları:" -ForegroundColor Cyan
$TestResults | ForEach-Object { Write-Host $_ }

Sık Karşılaşılan Sorunlar ve Çözümleri

1. WMI Access Denied Hatası

Çözüm: DCOM izinlerini manuel kontrol edin

dcomcnfg.exe
# Windows Management Instrumentation → Security → Launch and Activation Permissions

2. Event Log Erişim Reddi

Çözüm: Registry izinlerini kontrol edin

$RegPath = "HKLM:\SYSTEM\CurrentControlSet\Services\EventLog\Security"
Get-Acl $RegPath | Format-List

3. WinRM Bağlantı Sorunları

Çözüm: Güvenlik duvarı ve servis durumunu kontrol edin

Get-Service WinRM
Get-NetFirewallRule -DisplayName "*WinRM*"
netstat -an | findstr :5985

4. DCOM Timeout Hataları

Çözüm: DCOM timeout değerlerini artırın

# Registry: HKEY_LOCAL_MACHINE\SOFTWARE\Classes\AppID\{APPID}
# RemoteServerName ve AuthenticationLevel değerlerini kontrol edin

Güvenlik Konuları

SIEM kullanıcısı için güvenlik best practices:

1. Minimum Yetki Prensibi

# Sadece gerekli izinleri verin
# Administrator grubuna eklemeyin
# Gerekli olmayan servislere erişim vermeyin

2. Güçlü Parola Politikası

# Karmaşık parola kullanın
# Düzenli parola değişimi
# Service account olarak işaretleyin

3. Audit ve İzleme

# SIEM kullanıcısının aktivitelerini izleyin
# Başarısız giriş denemelerini loglanın
# Yetkisiz erişim girişimlerini tespit edin

4. Network Güvenliği

# HTTPS/SSL kullanın (Port 5986)
winrm create winrm/config/Listener?Address=*+Transport=HTTPS

# Unencrypted bağlantıları sınırlandırın
winrm set winrm/config/service '@{AllowUnencrypted="false"}'

Sonuç

Windows’da SIEM entegrasyonu için kullanıcı izinlerini doğru yapılandırmak kritiktir. Bu rehberde:

  • Grup üyelikleri ile temel izinler
  • WMI namespace erişimi için detaylı yapılandırma
  • Event Log okuma izinleri
  • DCOM yapılandırması
  • WinRM uzak erişim ayarları
  • Kapsamlı test ve doğrulama süreçleri

Bu adımları takip ederek, SIEM sisteminizin Windows sunuculardan güvenilir ve kesintisiz veri toplamasını sağlayabilirsiniz.

Önemli Hatırlatma: Yapılandırma sonrası mutlaka sistemi yeniden başlatın ve tüm testleri tekrarlayın. SIEM entegrasyonunda güvenlik ve işlevsellik dengesini korumak için düzenli olarak izinleri gözden geçirin.


Bu rehber, Windows Server 2016/2019/2022 ve Windows 10/11 işletim sistemleri için geçerlidir. Farklı SIEM çözümlerinin kendine özgü gereksinimleri olabileceğini unutmayın.

Yorum Yazın