Featured image of post Active Directory Ortamında Temel Sağlık Kontrolleri

Active Directory Ortamında Temel Sağlık Kontrolleri

AD ortamınızı periyodik olarak kontrol etmek için kullanabileceğiniz PowerShell komutları ve Best Practices.

Neden Periyodik Sağlık Kontrolü?

Active Directory, kurumsal kimlik altyapısının omurgasıdır. Domain Controller’ların replikasyon durumu, SYSVOL sağlığı, DNS tutarsızlıkları gibi sorunlar sessizce birikir ve en kötü zamanda kendini gösterir.

Bu yazıda hızlıca koşturabileceğiniz kontrolleri paylaşıyorum.

1. Domain Controller Replikasyon Durumu

1
2
3
4
5
# Tüm DC'ler arası replikasyon özetini göster
repadmin /replsummary

# Hataları filtrele
repadmin /showrepl * /errorsonly

repadmin /replsummary çıktısında Largest delta kolonuna dikkat edin. 60 dakikanın üzerindeyse replikasyon sağlıklı değildir.

2. SYSVOL ve NETLOGON Paylaşım Kontrolü

SYSVOL paylaşımı her DC’de erişilebilir olmalı:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
$DCs = (Get-ADDomainController -Filter *).Name
foreach ($dc in $DCs) {
    $sysvol = Test-Path "\\$dc\SYSVOL"
    $netlogon = Test-Path "\\$dc\NETLOGON"
    [PSCustomObject]@{
        DC       = $dc
        SYSVOL   = $sysvol
        NETLOGON = $netlogon
    }
}

3. FSMO Rolleri

1
2
3
4
5
6
# Domain FSMO rolleri
netdom query fsmo

# PowerShell ile daha detaylı
Get-ADForest | Select-Object SchemaMaster, DomainNamingMaster
Get-ADDomain | Select-Object PDCEmulator, RIDMaster, InfrastructureMaster

PDCEmulator rolü, şifre değişiklikleri ve zaman senkronizasyonu için kritiktir. Erişilebilir mi kontrol edin:

1
2
$pdc = (Get-ADDomain).PDCEmulator
Test-NetConnection -ComputerName $pdc -Port 389

4. DNS Sağlık Kontrolü

1
2
3
4
5
# DC'nin kendi DNS kayıtlarını doğrula
dcdiag /test:dns /v

# SRV kayıtları
nslookup -type=SRV _ldap._tcp.dc._msdcs.<DomainFQDN>

5. Event Log — Kritik Hatalar

1
2
3
4
5
6
# Son 24 saatte Directory Services hatalarını çek
Get-WinEvent -LogName "Directory Service" -ComputerName $env:COMPUTERNAME |
    Where-Object { $_.LevelDisplayName -in "Error","Critical" -and
                   $_.TimeCreated -gt (Get-Date).AddHours(-24) } |
    Select-Object TimeCreated, Id, Message |
    Format-Table -AutoSize

Özet Kontrol Listesi

KontrolAraçSıklık
Replikasyonrepadmin /replsummaryGünlük
SYSVOL paylaşımıTest-PathGünlük
FSMO rollerinetdom query fsmoHaftalık
DNS SRV kayıtlarıdcdiag /test:dnsHaftalık
Event Log hatalarıGet-WinEventGünlük

Bir sonraki yazıda bu kontrolleri otomasyona taşıyıp e-posta raporlama ekleyeceğiz.