Bölümler:
- Giriş ve Temel Kavramlar – Neden bu izinler gerekli?
- Adım Adım Yapılandırma – Grup üyelikleri, WMI, Event Log, DCOM, WinRM
- Otomatikleştirme Script’leri – PowerShell ile tam otomatik yapılandırma
- Test ve Doğrulama – Kapsamlı kontrol süreçleri
- Sorun Giderme – Sık karşılaşılan problemler ve çözümleri
- 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ı:
wmimgmt.msc
çalıştırın- WMI Control (Local) → Properties → Security
- Root namespace’ini seçin → Security
- 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ı:
dcomcnfg.exe
çalıştırın- Component Services → Computers → My Computer → DCOM Config
- “Windows Management Instrumentation” bulun → Properties
- 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.