Kurumsal ortamlarda yüzlerce, hatta binlerce Windows makinesini tek tek yönetmeye çalışmak, sysadmin’in kendi elleriyle mezarını kazması demektir. GPO (Group Policy Object) tam da bu noktada devreye giriyor: merkezi bir yerden tüm domain üyelerine güvenlik politikalarını dağıtmak, hem tutarlılık sağlıyor hem de insan hatasını minimuma indiriyor. Bu yazıda gerçek dünya senaryolarıyla GPO tabanlı güvenlik yönetimini baştan sona ele alacağız.
GPO Nedir ve Neden Önemlidir?
Group Policy, Active Directory altyapısında domain controller üzerinden yönetilen, kullanıcı ve bilgisayar yapılandırmalarını merkezi olarak dağıtan bir mekanizmadır. Tek bir GPO nesnesi oluşturup bunu bir OU’ya (Organizational Unit) bağladığınızda, o OU altındaki tüm makineler veya kullanıcılar bu politikayı otomatik olarak alır. Güncelleme gerektiğinde yine tek yerden değiştirirsiniz, her şey cascade şeklinde yayılır.
Pratik faydalarını sıralayalım:
- Tutarlılık: 500 makine aynı password policy’yi, aynı firewall kurallarını uygular.
- Denetlenebilirlik: Hangi politikanın nerede uygulandığını merkezi olarak görebilirsiniz.
- Hız: Yeni bir makine domain’e katıldığında politikalar otomatik uygulanır, elle yapılandırma gerekmez.
- Compliance: GDPR, ISO 27001, PCI-DSS gibi standartlara uyum için GPO tabanlı kontroller zorunludur.
Temel GPO Kavramları
Yazmaya başlamadan önce bazı terimleri netleştirelim.
GPMC (Group Policy Management Console): GPO’ları oluşturup yönettiğiniz ana araç. Domain controller veya herhangi bir yönetim makinesine RSAT araçlarıyla kurulur.
GPO Öncelik Sırası (LSDOU): Local, Site, Domain, Organizational Unit sırasıyla uygulanır. Çakışma durumunda OU en yüksek önceliğe sahiptir.
Enforcement (Zorla Uygula): Bir GPO’yu enforced olarak işaretlerseniz, alt OU’lar bu politikayı override edemez.
Block Inheritance: Bir OU’nun üstten gelen politikaları bloklamasını sağlar. Ancak Enforced GPO’lar bu bloğu aşar.
Security Filtering: GPO’yu sadece belirli grup veya kullanıcılara uygulamak için kullanılır. Varsayılan olarak “Authenticated Users” filtrelidir.
Ortamı Hazırlamak
RSAT ve GPMC Kurulumu
Yönetim workstation’ınıza GPMC’yi kurmak için:
# PowerShell ile RSAT GPMC bileşenini kur
Add-WindowsCapability -Online -Name Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0
# Veya Windows Server üzerinde Feature olarak ekle
Install-WindowsFeature -Name GPMC
PowerShell ile Temel GPO İşlemleri
GPMC GUI güzel ama otomasyon için PowerShell şart. GroupPolicy modülünü kontrol edin:
# GroupPolicy modülünü import et ve mevcut GPO'ları listele
Import-Module GroupPolicy
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime | Format-Table -AutoSize
Güvenlik GPO’larını Tasarlamak: Katmanlı Yaklaşım
Tek bir dev GPO yerine, amaca göre ayrılmış GPO’lar oluşturun. Bu yaklaşım troubleshooting’i kolaylaştırır ve hangi politikanın ne yaptığını netleştirir.
Önerilen GPO katmanlaması:
- Base Security GPO: Tüm makinelere uygulanacak temel güvenlik ayarları (Domain kök seviyesinde)
- Workstation Security GPO: Sadece workstation OU’suna özgü politikalar
- Server Security GPO: Sunuculara özgü kısıtlamalar
- DC Security GPO: Domain controller’lara özel sıkılaştırma
Temel Güvenlik GPO’su Oluşturmak
# Yeni bir GPO oluştur ve domain'e bağla
New-GPO -Name "Base-Security-Policy" -Comment "Tum makinelere uygulanan temel guvenlik politikasi"
New-GPLink -Name "Base-Security-Policy" -Target "DC=corp,DC=sirket,DC=com" -LinkEnabled Yes
# GPO'yu default domain'e bağladıktan sonra enforcement ekle
Set-GPLink -Name "Base-Security-Policy" -Target "DC=corp,DC=sirket,DC=com" -Enforced Yes
Parola Politikası Yapılandırması
Password policy GPO’nun en temel güvenlik ayarlarından biridir. Ancak dikkat: domain seviyesindeki Password Policy sadece Default Domain Policy’de veya aynı seviyedeki bir GPO’da geçerlidir. OU’larda tanımladığınız password policy bilgisayar hesaplarını değil, yerel hesapları etkiler. Kullanıcı şifre politikası için Fine-Grained Password Policy (FGPP) kullanmanız gerekir.
# PowerShell ile Fine-Grained Password Policy oluştur
# Yöneticiler için daha güçlü şifre politikası
New-ADFineGrainedPasswordPolicy `
-Name "Admins-Password-Policy" `
-Precedence 10 `
-MinPasswordLength 16 `
-PasswordHistoryCount 24 `
-MaxPasswordAge "60.00:00:00" `
-MinPasswordAge "1.00:00:00" `
-ComplexityEnabled $true `
-LockoutThreshold 5 `
-LockoutDuration "00:30:00" `
-LockoutObservationWindow "00:30:00" `
-ReversibleEncryptionEnabled $false
# Politikayı Domain Admins grubuna uygula
Add-ADFineGrainedPasswordPolicySubject -Identity "Admins-Password-Policy" -Subjects "Domain Admins"
GPO üzerinden Default Domain Policy’deki standart password ayarları için şu değerleri baz alın:
- Minimum password length: En az 12 karakter (günümüz standardı 14+)
- Password complexity: Enabled
- Maximum password age: 90 gün (NIST artık bunu önermese de compliance gerektirebilir)
- Password history: 24 şifre
- Account lockout threshold: 5 başarısız deneme
- Lockout duration: 30 dakika
Audit Policy: Kimin Ne Yaptığını Bilmek
Güvenlik olaylarını loglamadan güvenlik sağlayamazsınız. Advanced Audit Policy Configuration GPO üzerinden yapılandırılır.
# Mevcut audit policy durumunu kontrol et
auditpol /get /category:*
# GPO olmadan hızlı test için (production'da GPO kullanın)
auditpol /set /subcategory:"Logon" /success:enable /failure:enable
auditpol /set /subcategory:"Account Lockout" /success:enable /failure:enable
auditpol /set /subcategory:"Audit Policy Change" /success:enable /failure:enable
auditpol /set /subcategory:"Privilege Use" /success:enable /failure:enable
GPO üzerinden yapılandırmak için şu yolu takip edin: Computer Configuration > Policies > Windows Settings > Security Settings > Advanced Audit Policy Configuration
Mutlaka aktif etmeniz gereken kategoriler:
- Account Logon: Başarılı ve başarısız tüm oturum açma denemeleri
- Account Management: Kullanıcı/grup oluşturma, silme, değiştirme
- Logon/Logoff: Workstation’larda local oturum olayları
- Object Access: Kritik dosya ve klasörlere erişim (özellikle sunucularda)
- Policy Change: GPO dahil tüm güvenlik politikası değişiklikleri
- Privilege Use: Yönetici haklarının kullanımı
- System Events: Sistem açılış/kapanış, audit log temizleme
User Rights Assignment: Kimin Neye Erişeceğini Belirlemek
Bu bölüm genellikle göz ardı edilir ama kritiktir. Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > User Rights Assignment
Özellikle dikkat etmeniz gerekenler:
- Allow log on locally: Sadece yetkili kullanıcılar
- Allow log on through Remote Desktop Services: RDP erişimini kısıtlayın, tüm kullanıcılara açık bırakmayın
- Deny access to this computer from the network: Güvenlik açısından riskli hesapları buraya ekleyin
- Manage auditing and security log: Sadece Administrators
- Shut down the system: Sunucularda çok geniş tutmayın
# Mevcut user rights atamalarını kontrol et
secedit /export /cfg C:Tempcurrent_policy.cfg /areas USER_RIGHTS
Get-Content C:Tempcurrent_policy.cfg | Select-String "SeRemoteInteractiveLogonRight|SeInteractiveLogonRight"
Windows Defender Firewall GPO ile Yönetmek
Firewall kurallarını her makinede elle yönetmek yerine GPO’dan merkezi olarak dağıtın.
# PowerShell ile GPO üzerinden firewall kuralı eklemek için
# Önce GPO'yu oluştur
$GPO = New-GPO -Name "Firewall-Policy-Servers"
# Registry tabanlı ayarlar için (örnek: tüm profillerde firewall'u aktif et)
Set-GPRegistryValue -Name "Firewall-Policy-Servers" `
-Key "HKLMSOFTWAREPoliciesMicrosoftWindowsFirewallDomainProfile" `
-ValueName "EnableFirewall" `
-Type DWord `
-Value 1
Set-GPRegistryValue -Name "Firewall-Policy-Servers" `
-Key "HKLMSOFTWAREPoliciesMicrosoftWindowsFirewallDomainProfile" `
-ValueName "DefaultInboundAction" `
-Type DWord `
-Value 1
GPO üzerinden firewall yönetimi için şu yolu kullanın: Computer Configuration > Policies > Windows Settings > Security Settings > Windows Defender Firewall with Advanced Security
Burada inbound/outbound kuralları, connection security rules ve profil bazlı ayarlar (Domain, Private, Public) yapılandırılabilir.
AppLocker ile Uygulama Kontrolü
Yetkisiz yazılımların çalışmasını engellemek için AppLocker GPO üzerinden yönetilebilir. Özellikle ransomware saldırılarına karşı kritik bir katmandır.
# AppLocker servisinin çalıştığından emin ol
Get-Service AppIDSvc | Set-Service -StartupType Automatic
Start-Service AppIDSvc
# Mevcut ortamdan temel kuralları otomatik oluştur (test ortamında çalıştırın)
Get-AppLockerFileInformation -Directory "C:Program Files" -Recurse -FileType Exe |
New-AppLockerPolicy -RuleType Publisher, Hash -User Everyone -Optimize |
Set-AppLockerPolicy -PolicyDecision AuditOnly
# Mevcut AppLocker politikasını kontrol et
Get-AppLockerPolicy -Effective | Test-AppLockerPolicy -Path "C:WindowsSystem32cmd.exe" -User Everyone
AppLocker GPO yolu: Computer Configuration > Policies > Windows Settings > Security Settings > Application Control Policies > AppLocker
Önce Audit Only modunda çalıştırın, event log’lardan ne bloklanacağını görün, sonra Enforce moduna geçin. Aksi takdirde production’ı kırarsınız.
Security Baseline GPO’larını İndirmek ve Kullanmak
Microsoft, farklı Windows Server sürümleri için hazır Security Baseline GPO paketleri sunuyor. Bu paketler CIS Benchmark ve Microsoft’un en iyi pratiklerini içeriyor.
# Microsoft Security Compliance Toolkit'i indirdikten sonra
# Baseline'ları import et (PolicyAnalyzer ve LGPO.exe araçlarını kullanır)
# LGPO.exe ile yerel politikayı import et (test için)
.LGPO.exe /g ".GPOs{GUID-OF-BASELINE}"
# Baseline GPO'sunu mevcut domain'e aktarmak için
# GPMC üzerinden "Import Settings" özelliğini kullanın
# Veya PowerShell ile:
Import-GPO -BackupGpoName "MSFT Windows Server 2022 - Domain Security" `
-Path "C:SecurityBaselineGPOs" `
-TargetName "Server2022-Security-Baseline" `
-CreateIfNeeded
Microsoft Security Compliance Toolkit indirme linki: https://www.microsoft.com/en-us/download/details.aspx?id=55319
Bu baseline’lar 200’den fazla ayarı içeriyor. Tümünü olduğu gibi uygulamayın, önce test ortamında değerlendirin.
GPO Troubleshooting: Politika Neden Uygulanmıyor?
Sahada en çok karşılaşılan sorun budur. “GPO’yu oluşturdum ama makineye uygulanmıyor” şikayeti sık duyulur.
# Makinede politika uygulama durumunu kontrol et
gpresult /R
# Detaylı HTML rapor oluştur
gpresult /H C:Tempgpo-report.html /F
# Belirli bir kullanıcı için analiz
gpresult /R /USER corpahmet.yilmaz
# Politikayı zorla yenile (varsayılan 90 dakikada bir yenilenir)
gpupdate /force
# Sadece bilgisayar politikalarını yenile
gpupdate /target:computer /force
Sık karşılaşılan sorunlar ve çözümleri:
- Security Filtering sorunu: GPO’nun güvenlik filtresinde “Authenticated Users” veya hedef grup var mı kontrol edin. Sık yapılan hata: “Read” iznini kaldırıp sadece “Apply” bırakmak. Her ikisi de gerekli.
- WMI Filter sorunu: Yanlış yazılmış WMI filtresi GPO’nun hiç uygulanmamasına neden olur.
- Loopback Processing: Kullanıcı politikalarını bilgisayar OU’su üzerinden uygulamak istiyorsanız loopback mode gerekir.
- Replikasyon gecikmesi: Multi-site ortamlarda DC replikasyonu tamamlanmadan yeni GPO diğer sitelere ulaşmaz.
repadmin /showreplile kontrol edin.
# DC replikasyon durumunu kontrol et
repadmin /showrepl
repadmin /replsummary
# SYSVOL replikasyonunu kontrol et (GPO dosyaları burada tutuluyor)
dfsrdiag ReplicationState
Gerçek Dünya Senaryosu: Ransomware Sonrası Acil Sıkılaştırma
Bir müşteride ransomware saldırısı sonrası acil GPO bazlı sıkılaştırma yapmak gerekti. Uygulanan adımlar:
1. SMBv1’i Kapat:
# GPO üzerinden registry ile SMBv1'i devre dışı bırak
Set-GPRegistryValue -Name "Emergency-Hardening" `
-Key "HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters" `
-ValueName "SMB1" `
-Type DWord `
-Value 0
# SMB imzalamayı zorla
Set-GPRegistryValue -Name "Emergency-Hardening" `
-Key "HKLMSYSTEMCurrentControlSetServicesLanmanServerParameters" `
-ValueName "RequireSecuritySignature" `
-Type DWord `
-Value 1
2. LLMNR ve NetBIOS’u Kapat (MITM saldırılarına karşı):
# LLMNR'yi GPO ile devre dışı bırak
Set-GPRegistryValue -Name "Emergency-Hardening" `
-Key "HKLMSOFTWAREPoliciesMicrosoftWindows NTDNSClient" `
-ValueName "EnableMulticast" `
-Type DWord `
-Value 0
3. PowerShell Constrained Language Mode: AppLocker politikası aktifleştirildiğinde PowerShell otomatik olarak Constrained Language Mode’a geçer. Bu, obfuscated PowerShell payload’larının çalışmasını engeller.
GPO Yedekleme ve Dokümantasyon
Üretim GPO’larını düzenli olarak yedekleyin. “Bir şeyi bozarsam geri dönerim” diyemezseniz değişiklik yapmaktan çekinirsiniz.
# Tüm GPO'ları yedekle
$BackupPath = "\fileserverGPO-Backups$(Get-Date -Format 'yyyy-MM-dd')"
New-Item -ItemType Directory -Path $BackupPath -Force
Backup-GPO -All -Path $BackupPath
# Belirli bir GPO'yu yedekle
Backup-GPO -Name "Base-Security-Policy" -Path $BackupPath -Comment "Kritik degisiklik oncesi yedek"
# Yedeği geri yükle
Restore-GPO -Name "Base-Security-Policy" -Path $BackupPath
# GPO raporunu HTML olarak dışa aktar (dokümantasyon için)
Get-GPOReport -Name "Base-Security-Policy" -ReportType HTML -Path "C:DocsBase-Security-Policy.html"
Değişiklik yönetimi için şu alışkanlıkları edinin:
- Her GPO değişikliği öncesi backup alın, backup isminde tarih ve açıklama bulundurun.
- Test OU’su oluşturun, tüm değişiklikleri önce orada deneyin.
- GPO açıklamalarını (Comment) güncel tutun, 6 ay sonra neden o ayarı yaptığınızı hatırlamak istersiniz.
- Değişiklik kaydını tutun: hangi GPO, ne zaman, kim, neden.
GPO ile Compliance Raporlama
Düzenli audit için GPO ayarlarını raporlamak gerekir:
# Tüm GPO'ların XML raporunu al ve belirli ayarları filtrele
Get-GPO -All | ForEach-Object {
$report = Get-GPOReport -Guid $_.Id -ReportType XML
[xml]$xml = $report
[PSCustomObject]@{
Name = $_.DisplayName
Status = $_.GpoStatus
Modified = $_.ModificationTime
LinksTo = ($xml.GPO.LinksTo.SOMPath -join ", ")
}
} | Export-Csv -Path "C:ReportsGPO-Inventory.csv" -NoTypeInformation -Encoding UTF8
Write-Host "GPO envanteri GPO-Inventory.csv dosyasina kaydedildi."
Sonuç
GPO ile güvenlik yönetimi, sysadmin’in en güçlü silahlarından biridir. Ancak güç, sorumluluk getirir. Yanlış yapılandırılmış bir GPO, domain’deki tüm makineleri etkileyebilir. Bu yüzden her zaman test ortamında deneyin, değişiklikleri aşamalı olarak rollout edin ve geri dönüş planınız olsun.
Özetle iyi bir GPO stratejisi için şunları unutmayın:
- Amaca göre ayrılmış, anlamlı isimlendirilmiş GPO’lar oluşturun.
- Microsoft Security Baseline’larını başlangıç noktası olarak kullanın ama körü körüne uygulamayın.
- Audit policy’yi ihmal etmeyin, loglamadan güvenlik olmaz.
- Düzenli backup alın ve değişiklikleri belgeleyin.
gpresultversop.mscaraçlarını troubleshooting için içselleştirin.- Fine-Grained Password Policy’yi ihmal etmeyin, özellikle ayrıcalıklı hesaplar için.
GPO, kurumsal güvenliğin sadece bir parçasıdır. SIEM, EDR, network segmentasyonu ve insan faktörü (farkındalık eğitimi) ile birleştiğinde gerçek anlamda katmanlı bir güvenlik mimarisi oluşturursunuz. GPO olmadan bu mimarinin temelini atmak mümkün değildir.