Active Directory, Windows tabanlı kurumsal ortamların kimlik ve erişim yönetiminin merkezinde yer alır. Kullanıcı hesapları, grup üyelikleri, bilgisayar nesneleri, paylaşım izinleri ve grup ilkeleri AD üzerinden yönetilir. Bu yapının ele geçirilmesi, tüm ortamın tehlikeye girmesi anlamına gelir.
Çoğu saldırı senaryosunda hedef doğrudan AD'dir. Zayıf parolalar, aşırı yetkili hesaplar, unutulmuş servis hesapları ve denetlenmeyen GPO ayarları saldırganların yanal hareket etmesine ve yetki yükseltmesine zemin hazırlar. Bu rehberde AD ortamınızı pratik adımlarla nasıl sıkılaştıracağınızı ele alıyoruz. Daha kapsamlı bir yapılandırma gerekiyorsa Active Directory hizmetleri birlikte değerlendirilebilir.
1. Parola politikasını güçlendirin
Varsayılan Domain Password Policy çoğu ortamda yetersiz kalır. Minimum 8 karakter ve temel karmaşıklık gereksinimleri, modern saldırı araçları karşısında ciddi bir koruma sağlamaz. Parola politikasını güçlendirmek, AD sıkılaştırmanın ilk adımıdır.
Tüm domain kullanıcıları için geçerli olan Default Domain Policy üzerinden temel kuralları belirleyin. Ayrıcalıklı hesaplar, servis hesapları ve kritik kullanıcılar için Fine-Grained Password Policy (FGPP) ile daha katı kurallar tanımlayın.
# Fine-Grained Password Policy olusturma (PowerShell)
New-ADFineGrainedPasswordPolicy -Name "Admin-Parola-Politikasi" `
-Precedence 10 `
-MinPasswordLength 16 `
-PasswordHistoryCount 24 `
-ComplexityEnabled $true `
-MaxPasswordAge "90.00:00:00" `
-MinPasswordAge "1.00:00:00" `
-LockoutThreshold 5 `
-LockoutDuration "00:30:00" `
-LockoutObservationWindow "00:30:00"
# Politikayi Domain Admins grubuna ata
Add-ADFineGrainedPasswordPolicySubject `
-Identity "Admin-Parola-Politikasi" `
-Subjects "Domain Admins"
Standart kullanıcılar için minimum 14 karakter, yönetici hesapları için minimum 16 karakter önerilir. Parola geçmişi en az 24 önceki parola hatırlanacak şekilde ayarlanmalıdır. Hesap kilitleme eşiğini 5 başarısız denemeye düşürmek, kaba kuvvet saldırılarını önemli ölçüde yavaşlatır.
Mevcut parola politikalarınızı kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
# Mevcut domain parola politikasini goruntule
Get-ADDefaultDomainPasswordPolicy
# Fine-Grained politikalari listele
Get-ADFineGrainedPasswordPolicy -Filter *
2. Ayrıcalıklı hesapları denetleyin
Domain Admins, Enterprise Admins, Schema Admins ve Administrators grupları AD ortamındaki en kritik gruplardır. Bu gruplara üyelik düzenli olarak denetlenmeli ve gerçekten yönetici yetkisi gerektirmeyen hesaplar çıkarılmalıdır.
Her BT çalışanının günlük işlerini yürüttüğü standart bir hesabı ve yalnızca yönetim görevleri için kullandığı ayrı bir admin hesabı olmalıdır. Admin hesapları ile e-posta okunmamalı, internette gezinilmemeli ve günlük uygulamalar çalıştırılmamalıdır.
# Domain Admins grubundaki uyeleri listele
Get-ADGroupMember -Identity "Domain Admins" -Recursive |
Select-Object Name, SamAccountName, ObjectClass |
Format-Table -AutoSize
# Enterprise Admins grubunu kontrol et
Get-ADGroupMember -Identity "Enterprise Admins" -Recursive |
Select-Object Name, SamAccountName
# Son 90 gunde giris yapmamis admin hesaplarini bul
$threshold = (Get-Date).AddDays(-90)
Get-ADGroupMember -Identity "Domain Admins" | ForEach-Object {
Get-ADUser $_.SamAccountName -Properties LastLogonDate |
Where-Object { $_.LastLogonDate -lt $threshold }
} | Select-Object Name, LastLogonDate
AdminSDHolder mekanizmasını da göz ardı etmeyin. AD, korumalı gruplara eklenen nesnelere belirli izinleri otomatik olarak uygular. Ancak bir kullanıcı bu gruptan çıkarıldığında AdminSDHolder tarafından ayarlanan izinler otomatik temizlenmez. Bu durum, eski yönetici hesaplarının beklenenden fazla yetkiyle kalmasına neden olabilir.
Ayrıcalıklı erişim için Privileged Access Workstation (PAW) kullanımı ve yönetici hesaplarının yalnızca güvenli iş istasyonlarından oturum açması da değerlendirilmesi gereken uygulamalardır.
3. Pasif ve eski hesapları temizleyin
AD ortamlarında zaman içinde birikmiş eski kullanıcı hesapları, ayrılan çalışanlara ait hesaplar ve artık ağda olmayan bilgisayar nesneleri oluşur. Bu pasif nesneler hem güvenlik riski oluşturur hem de ortamın yönetilebilirliğini azaltır.
Saldırganlar genellikle unutulmuş servis hesapları ve pasif kullanıcı hesaplarını hedef alır. Bu hesaplar izlenmediği için ele geçirilmeleri fark edilmez.
# Son 180 gunde giris yapmamis kullanici hesaplarini bul
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan 180.00:00:00 |
Select-Object Name, SamAccountName, LastLogonDate, Enabled |
Sort-Object LastLogonDate |
Export-Csv -Path "C:\Reports\pasif-kullanicilar.csv" -NoTypeInformation
# Son 180 gunde giris yapmamis bilgisayar hesaplarini bul
Search-ADAccount -ComputersOnly -AccountInactive -TimeSpan 180.00:00:00 |
Select-Object Name, LastLogonDate, Enabled |
Export-Csv -Path "C:\Reports\pasif-bilgisayarlar.csv" -NoTypeInformation
# Suresi dolmus hesaplari bul
Search-ADAccount -AccountExpired |
Select-Object Name, SamAccountName, AccountExpirationDate
Pasif hesapları doğrudan silmek yerine önce devre dışı bırakın ve bir OU'ya (ör. "Devre Dışı Hesaplar") taşıyın. 30-60 gün bekleyin ve bu sürede herhangi bir bağımlılık sorunu çıkmazsa hesabı silin. Özellikle servis hesaplarını silmeden önce hangi uygulamaların bu hesapları kullandığını doğrulayın.
# Pasif hesaplari toplu devre disi birakma
Search-ADAccount -UsersOnly -AccountInactive -TimeSpan 180.00:00:00 |
Where-Object { $_.Enabled -eq $true } |
Disable-ADAccount -PassThru |
Move-ADObject -TargetPath "OU=Devre Disi Hesaplar,DC=firma,DC=local"
4. GPO güvenliğini gözden geçirin
Group Policy, AD ortamının yapılandırma omurgasıdır. Yanlış yapılandırılmış veya fazla sayıda GPO, hem güvenlik açıklarına hem de istemcilerde performans sorunlarına neden olabilir.
GPO delegasyonunu kontrol edin. Kimlerin GPO oluşturabildiği, düzenleyebildiği ve bağlayabildiği net olmalıdır. GPO düzenleme yetkisi yalnızca gerekli personele verilmeli ve bu yetki düzenli denetlenmelidir.
# Tum GPO'lari listele ve durumlarini goster
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime, ModificationTime |
Sort-Object ModificationTime -Descending |
Format-Table -AutoSize
# Baglantisi olmayan (orphan) GPO'lari bul
Get-GPO -All | ForEach-Object {
$gpo = $_
$links = (Get-GPOReport -Guid $gpo.Id -ReportType Xml) -match "SOM"
if (-not $links) {
[PSCustomObject]@{
Name = $gpo.DisplayName
Created = $gpo.CreationTime
Modified = $gpo.ModificationTime
}
}
}
# Belirli bir GPO'nun hangi OU'lara bagli oldugunu goster
(Get-GPOReport -Name "GPO-Adi" -ReportType Html) |
Out-File "C:\Reports\gpo-rapor.html"
Security Filtering ayarlarını gözden geçirin. Bir GPO'nun "Authenticated Users" yerine yalnızca ilgili gruba uygulandığından emin olun. WMI filtreleri karmaşıklık eklese de belirli işletim sistemi sürümleri veya donanım yapılandırmaları için hedefli politika uygulamak gerektiğinde kullanışlıdır.
GPO bağlantı sırasına (Link Order) da dikkat edin. Aynı OU'ya bağlı birden fazla GPO'da çakışan ayarlar varsa, bağlantı sırası hangi politikanın geçerli olacağını belirler. Bu durum beklenmeyen yapılandırmalara yol açabilir.
5. Hızlı kontrol listesi
- Parola minimum uzunluğu standart kullanıcılar için 14, yöneticiler için 16 karakter mi?
- Hesap kilitleme eşiği 5 veya daha düşük başarısız denemeye ayarlı mı?
- Domain Admins ve Enterprise Admins üyelikleri son 30 gün içinde gözden geçirildi mi?
- Her yöneticinin ayrı bir admin hesabı var mı ve günlük işlerini standart hesapla mı yapıyor?
- 180 günden eski pasif hesaplar devre dışı bırakıldı mı?
- Bağlantısız ve kullanılmayan GPO'lar temizlendi mi?
- GPO düzenleme ve bağlama yetkileri yalnızca gerekli personelde mi?
- Servis hesapları envanteri güncel mi ve parolaları düzenli değiştiriliyor mu?
- AdminSDHolder tarafından korunan nesneler kontrol edildi mi?
- AD denetim logları (Security Event Log) merkezi olarak toplanıyor mu?
6. Sık yapılan hatalar
En yaygın hata, tek bir admin hesabını birden fazla kişinin paylaşmasıdır. Bu durumda yapılan değişikliklerin kimin tarafından gerçekleştirildiği takip edilemez ve sorumluluk dağılır. Her yönetici kendi adına tanımlı bir admin hesabı kullanmalıdır.
İkinci sık karşılaşılan hata, AD denetim loglarını izlememektir. Hesap oluşturma, silme, grup üyeliği değişiklikleri ve başarısız oturum açma denemeleri mutlaka loglanmalı ve merkezi olarak toplanmalıdır. Loglar yalnızca domain controller üzerinde kalırsa, disk alanı dolduğunda veya sunucu yeniden başlatıldığında kritik veriler kaybedilebilir. Bu konuda merkezi log yönetimi çözümleri değerlendirilebilir.
Üçüncü hata ise pasif hesapları göz ardı etmektir. Ayrılan çalışanların hesapları kapatılmadığında veya eski test hesapları temizlenmediğinde, saldırganlar bu hesapları keşfedip kullanabilir. Düzenli hesap denetimi, güvenlik hijyeninin temel parçasıdır.
Active Directory güvenliği tek seferlik bir proje değil, sürekli denetim ve iyileştirme gerektiren bir süreçtir. Parola politikalarını sıkılaştırmak, ayrıcalıklı hesapları düzenli gözden geçirmek ve pasif nesneleri temizlemek bu sürecin temel adımlarıdır.
Sonuç
Bu rehberdeki adımlar, AD ortamınız için uygulanabilir bir sıkılaştırma temeli sağlar. Her ortam farklı gereksinimlere sahiptir; bu yüzden sıkılaştırma adımlarını kendi yapınıza uyarlayarak uygulamanız önemlidir.
Active Directory yapılandırması, bakımı ve güvenlik sıkılaştırması konusunda profesyonel destek almak isterseniz Active Directory hizmetlerimi inceleyebilir veya doğrudan benimle iletişime geçebilirsiniz.