Group Policy ile Merkezi Güvenlik Politikası Yönetimi
Kurumsal ortamlarda yüzlerce, hatta binlerce Windows makinesini tek tek yapılandırmaya çalışmak hem zaman kaybı hem de tutarsız güvenlik politikalarına davetiye çıkarmak demektir. Group Policy, bu kaosa son veren ve Windows ekosisteminin belki de en güçlü merkezi yönetim aracıdır. Doğru kullanıldığında sadece masa başı ayarlarını değil, güvenlik duvarı kurallarından yazılım kısıtlamalarına, şifre politikalarından USB engellemeye kadar onlarca kritik güvenlik kontrolünü merkezi olarak yönetmenizi sağlar. Bu yazıda Group Policy’yi gerçek anlamda bir güvenlik silahına dönüştürmek için bilmeniz gereken her şeyi ele alacağız.
Group Policy Nedir ve Neden Önemlidir?
Group Policy Objects (GPO), Active Directory ortamlarında kullanıcı ve bilgisayar ayarlarını merkezi olarak yönetmenizi sağlayan yapılardır. Bir GPO’yu bir kez oluşturup doğru OU’ya (Organizational Unit) bağladığınızda, o OU altındaki tüm makineler veya kullanıcılar belirlediğiniz politikalarla otomatik olarak yapılandırılır.
Güvenlik açısından Group Policy’nin önemi şuradan geliyor: İnsan hatası kurumsal güvenliğin en büyük düşmanıdır. Bir sistem yöneticisi 500 makineyi elle yapılandırırken mutlaka bir yerde hata yapar, bir yerde adım atlar. GPO bu tutarsızlığı ortadan kaldırır.
Şimdi pratik tarafa geçelim.
Temel GPO Yönetimi: PowerShell ile Başlayalım
Group Policy yönetimini GUI üzerinden yapabilirsiniz ama otomasyon ve tekrarlanabilirlik için PowerShell şart. Önce gerekli modülü yükleyelim:
# RSAT Group Policy Management modülünü yükle
Install-WindowsFeature -Name GPMC
Import-Module GroupPolicy
# Mevcut GPO'ları listele
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime
# Belirli bir GPO'nun detaylarını gör
Get-GPO -Name "Security Baseline Policy" | Format-List *
# Yeni GPO oluştur
New-GPO -Name "Workstation Security Policy" -Comment "Temel is istasyonu guvenlik politikasi"
GPO oluşturduktan sonra bir OU’ya bağlamanız gerekiyor:
# GPO'yu belirli bir OU'ya bagla
New-GPLink -Name "Workstation Security Policy" `
-Target "OU=Workstations,DC=sirket,DC=local" `
-LinkEnabled Yes `
-Enforced No
# Bagli GPO'lari goster
Get-GPInheritance -Target "OU=Workstations,DC=sirket,DC=local"
# GPO uygulama sirasini kontrol et (dusuk sayi = yuksek oncelik)
Set-GPLink -Name "Workstation Security Policy" `
-Target "OU=Workstations,DC=sirket,DC=local" `
-Order 1
Şifre ve Hesap Politikaları
Güvenlik politikalarının temeli şifre yönetimidir. Ancak burada kritik bir noktayı vurgulamak gerekiyor: Şifre politikaları yalnızca domain seviyesindeki GPO’dan alınır. OU seviyesinde tanımladığınız şifre politikaları bilgisayar yerel hesaplarını etkiler, domain hesaplarını değil. Domain hesapları için Fine-Grained Password Policy veya default domain policy kullanmalısınız.
# Fine-Grained Password Policy olustur (Windows Server 2008+)
New-ADFineGrainedPasswordPolicy `
-Name "AdminPasswordPolicy" `
-Precedence 10 `
-MinPasswordLength 16 `
-PasswordHistoryCount 24 `
-MaxPasswordAge "60.00:00:00" `
-MinPasswordAge "1.00:00:00" `
-LockoutThreshold 5 `
-LockoutDuration "00:30:00" `
-LockoutObservationWindow "00:30:00" `
-ComplexityEnabled $true `
-ReversibleEncryptionEnabled $false
# Politikayi Admin grubuna uygula
Add-ADFineGrainedPasswordPolicySubject `
-Identity "AdminPasswordPolicy" `
-Subjects "Domain Admins"
# Politikayi kontrol et
Get-ADFineGrainedPasswordPolicy -Identity "AdminPasswordPolicy"
Gerçek dünyadan bir senaryo: Bir müşteri firmasında penetrasyon testi sırasında birçok kullanıcının hala Sifre123! gibi şifreler kullandığını gördüm. Fine-Grained Password Policy ile farklı gruplar için farklı karmaşıklık gereksinimleri tanımlayarak bu sorunu köklü çözdük. IT departmanı için minimum 16 karakter, normal kullanıcılar için minimum 12 karakter zorunlu hale geldi.
Kullanıcı Hakları ve Kısıtlamalar
GPO’nun en güçlü taraflarından biri kullanıcı haklarını granüler şekilde kontrol edebilmektir:
# GPO Registry ayarlarini PowerShell ile yapilandir
# Ornek: USB depolama aygitlarini engelle
Set-GPRegistryValue `
-Name "Workstation Security Policy" `
-Key "HKLMSYSTEMCurrentControlSetServicesUsbStor" `
-ValueName "Start" `
-Type DWord `
-Value 4
# Kayit defteri editoru erisimini engelle
Set-GPRegistryValue `
-Name "Workstation Security Policy" `
-Key "HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem" `
-ValueName "DisableRegistryTools" `
-Type DWord `
-Value 1
# Cmd.exe erisimini engelle (standart kullanicilar icin)
Set-GPRegistryValue `
-Name "Workstation Security Policy" `
-Key "HKCUSoftwarePoliciesMicrosoftWindowsSystem" `
-ValueName "DisableCMD" `
-Type DWord `
-Value 2
DisableCMD değerleri:
- 0: Komut istemi etkin
- 1: Komut istemi ve batch dosyaları devre disi
- 2: Sadece komut istemi devre disi, batch dosyalari calisir
Windows Defender ve Güvenlik Duvarı Yapılandırması
Merkezi güvenlik yönetiminin olmazsa olmazı, tüm endpoint’lerde tutarlı antivirüs ve firewall yapılandırmasıdır:
# Windows Defender ayarlarini GPO ile yapilandir
# Gercek zamanli korumayı zorla
Set-GPRegistryValue `
-Name "Endpoint Security Policy" `
-Key "HKLMSoftwarePoliciesMicrosoftWindows DefenderReal-Time Protection" `
-ValueName "DisableRealtimeMonitoring" `
-Type DWord `
-Value 0
# Bulut tabanli korumayı etkinlestir
Set-GPRegistryValue `
-Name "Endpoint Security Policy" `
-Key "HKLMSoftwarePoliciesMicrosoftWindows DefenderSpynet" `
-ValueName "SpynetReporting" `
-Type DWord `
-Value 2
# Windows Defender'i kullanicinin kapatmasini engelle
Set-GPRegistryValue `
-Name "Endpoint Security Policy" `
-Key "HKLMSoftwarePoliciesMicrosoftWindows Defender" `
-ValueName "DisableAntiSpyware" `
-Type DWord `
-Value 0
# Tarama zamanlamasini ayarla (her gun saat 02:00)
Set-GPRegistryValue `
-Name "Endpoint Security Policy" `
-Key "HKLMSoftwarePoliciesMicrosoftWindows DefenderScan" `
-ValueName "ScheduleDay" `
-Type DWord `
-Value 0
Set-GPRegistryValue `
-Name "Endpoint Security Policy" `
-Key "HKLMSoftwarePoliciesMicrosoftWindows DefenderScan" `
-ValueName "ScheduleTime" `
-Type DWord `
-Value 120
AppLocker ile Uygulama Kısıtlaması
AppLocker, GPO ile entegre çalışan ve hangi uygulamaların çalışabileceğini merkezi olarak kontrol etmenizi sağlayan güçlü bir araçtır. Ransomware saldırılarının büyük çoğunluğu yetkisiz uygulama çalıştırma üzerine kuruludur. AppLocker bu vektörü kapatır.
# AppLocker politika olusturma - PowerShell ile
# Once mevcut politikalari disa aktar
Get-AppLockerPolicy -Effective | Set-AppLockerPolicy -XMLPolicy C:Policiescurrent_policy.xml
# Yayinci kuralina dayali politika olustur
# Sadece Microsoft imzali exe dosyalarina izin ver
$policy = Get-AppLockerPolicy -Local
$rule = New-AppLockerPolicy `
-RuleType Publisher `
-User Everyone `
-FileInformation "C:WindowsSystem32*.exe" `
-RuleName "Allow Microsoft Signed Executables"
# AppLocker XML politikasini GPO'ya aktar
# Once XML dosyasini olustur
$applockerXml = @"
<AppLockerPolicy Version="1">
<RuleCollection Type="Exe" EnforcementMode="Enabled">
<FilePublisherRule Id="a9e18c21-ff8f-43cf-b9fc-db40eed693ba"
Name="Allow Microsoft Corporation"
Description="Microsoft imzali tum uygulamalara izin ver"
UserOrGroupSid="S-1-1-0"
Action="Allow">
<Conditions>
<FilePublisherCondition PublisherName="O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US"
ProductName="*"
BinaryName="*">
<BinaryVersionRange LowSection="*" HighSection="*" />
</FilePublisherCondition>
</Conditions>
</FilePublisherRule>
</RuleCollection>
</AppLockerPolicy>
"@
$applockerXml | Out-File -FilePath "C:Policiesapplocker_policy.xml" -Encoding UTF8
# XML'i GPO'ya uygula
Set-AppLockerPolicy -XMLPolicy "C:Policiesapplocker_policy.xml" -Merge
Audit Policy: Kim Ne Yaptı?
Güvenlik olaylarını tespit etmek için kapsamlı loglama şarttır. GPO ile merkezi audit politikası tanımlamak, SIEM entegrasyonunun temelidir:
# Gelismis Audit Policy GPO uzerinden yapilandir
# auditpol komutu ile mevcut durumu kontrol et
auditpol /get /category:*
# GPO ile Audit Policy ayarlari
# Bu komutlar GPO startup script olarak veya dogrudan calistirilab
auditpol /set /subcategory:"Logon" /success:enable /failure:enable
auditpol /set /subcategory:"Account Lockout" /success:enable /failure:enable
auditpol /set /subcategory:"Privilege Use" /success:enable /failure:enable
auditpol /set /subcategory:"Process Creation" /success:enable /failure:enable
auditpol /set /subcategory:"Object Access" /success:enable /failure:enable
auditpol /set /subcategory:"Policy Change" /success:enable /failure:enable
auditpol /set /subcategory:"Account Management" /success:enable /failure:enable
auditpol /set /subcategory:"Directory Service Changes" /success:enable /failure:enable
# PowerShell ile GPO uzerinden audit policy
# Computer Configuration > Windows Settings > Security Settings > Advanced Audit Policy
# Bu ayarlar GPMC uzerinden veya secenek olarak dogrudan registry ile yapilabilir
Set-GPRegistryValue `
-Name "Audit Policy GPO" `
-Key "HKLMSOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystemAudit" `
-ValueName "ProcessCreationIncludeCmdLine_Enabled" `
-Type DWord `
-Value 1
Kritik audit kategorileri:
- Logon/Logoff: Basarili ve basarisiz oturum acma girisimlerini kayit altina alir
- Account Lockout: Hesap kilitleme olaylarini izler, brute force saldirilarini tespitte kritik
- Privilege Use: Yonetici haklarinin kullanim detaylarini gosterir
- Process Creation: Hangi islemin kim tarafindan baslatildigini loglar, malware analizinde hayat kurtarir
- Object Access: Dosya ve klasorlere erisim kayitlarini tutar
- Policy Change: GPO dahil tum politika degisikliklerini kayit altina alir
- Account Management: Kullanici hesabi olusturma, silme, degistirme islemlerini izler
GPO Sorun Giderme: Gerçek Hayatta En Çok Karşılaşılan Problemler
GPO uygulamak kolay, neden uygulanmadığını bulmak zordur. İşte temel sorun giderme araçları:
# Hedef makinede GPO durumunu kontrol et
gpresult /R
gpresult /H C:Reportsgpo_report.html
# Hangi GPO'larin uygulandigini goster
gpresult /Scope Computer /v
gpresult /Scope User /v
# GPO'yu zorla yenile (makine basinda)
gpupdate /force
# Sadece bilgisayar politikalarini yenile
gpupdate /Target:Computer /force
# Sadece kullanici politikalarini yenile
gpupdate /Target:User /force
# Uzak makinede GPO guncelleme (PowerShell Remoting gerekli)
Invoke-GPUpdate -Computer "WORKSTATION01" -Force -RandomDelayInMinutes 0
# Tum OU'daki makineleri guncelle
$computers = Get-ADComputer -Filter * -SearchBase "OU=Workstations,DC=sirket,DC=local"
foreach ($computer in $computers) {
try {
Invoke-GPUpdate -Computer $computer.Name -Force -RandomDelayInMinutes 0
Write-Host "$($computer.Name) - Guncellendi" -ForegroundColor Green
} catch {
Write-Host "$($computer.Name) - HATA: $_" -ForegroundColor Red
}
}
Gerçek dünyadan bir senaryo: Bir GPO oluşturdum, OU’ya bağladım ama hiçbir makinede uygulanmadı. Saatlerce uğraştıktan sonra sorunun GPO Status ayarında yattığını fark ettim. GPO oluşturulurken yanlışlıkla “All settings disabled” olarak bırakılmıştı. gpresult /R çıktısı bana “Applied GPOs” listesinde GPO’nun göründüğünü ama hiçbir ayarının işlenmediğini gösterdi. Her zaman gpresult /H ile detaylı rapor alın ve “Denied GPOs” bölümünü kontrol edin.
Security Compliance Toolkit ile GPO Baseline
Microsoft’un Security Compliance Toolkit (SCT), hazır güvenlik baseline’ları sunar. Bu baseline’ları kendi ortamınıza adapte etmek, sıfırdan politika yazmaktan çok daha hızlı ve güvenlidir:
# SCT baseline'larini indirdikten sonra import et
# PolicyAnalyzer ile karsilastirma yap
# Baseline GPO'yu import et
Import-GPO -BackupId "{GUID}" `
-Path "C:SCTWindows10GPOs" `
-TargetName "Win10 Security Baseline" `
-CreateIfNeeded
# Mevcut GPO ile baseline'i karsilastir
# PolicyAnalyzer.exe arayuzu ile yapilir ama raporlari PowerShell ile isleyebilirsiniz
# GPO'yu yedekle
Backup-GPO -Name "Win10 Security Baseline" `
-Path "C:GPO_Backups" `
-Comment "$(Get-Date -Format 'yyyy-MM-dd') baseline backup"
# Tum GPO'lari yedekle
Backup-GPO -All -Path "C:GPO_Backups$(Get-Date -Format 'yyyy-MM-dd')"
# Yedekten geri yukle
Restore-GPO -Name "Win10 Security Baseline" `
-Path "C:GPO_Backups"
SCT ile gelen hazir baseline kategorileri:
- Windows 10/11 Security Baseline: Is istasyonlari icin temel sertlestirme
- Windows Server Security Baseline: Sunucu ortamlari icin optimize edilmis
- Microsoft 365 Apps Security Baseline: Office uygulama guvenlik politikalari
- Microsoft Edge Security Baseline: Tarayici guvenlik ayarlari
- Defender for Endpoint Security Baseline: EDR entegrasyonu icin
GPO ile LAPS Entegrasyonu
Local Administrator Password Solution (LAPS), her makinenin yerel yönetici şifresini otomatik olarak değiştirip Active Directory’de güvenli şekilde saklayan bir sistemdir. Pass-the-Hash saldırılarına karşı kritik bir savunmadır:
# LAPS sema uzantisini Active Directory'e yukle
Update-AdmPwdADSchema
# OU'lara LAPS izinleri ver
Set-AdmPwdComputerSelfPermission -OrgUnit "OU=Workstations,DC=sirket,DC=local"
# IT ekibine sifre okuma izni ver
Set-AdmPwdReadPasswordPermission `
-OrgUnit "OU=Workstations,DC=sirket,DC=local" `
-AllowedPrincipals "IT_HelpDesk"
# Makine sifresini oku
Get-AdmPwdPassword -ComputerName "WORKSTATION01"
# LAPS GPO ayarlari - Registry degerleri
Set-GPRegistryValue `
-Name "LAPS Policy" `
-Key "HKLMSoftwarePoliciesMicrosoft ServicesAdmPwd" `
-ValueName "AdmPwdEnabled" `
-Type DWord `
-Value 1
Set-GPRegistryValue `
-Name "LAPS Policy" `
-Key "HKLMSoftwarePoliciesMicrosoft ServicesAdmPwd" `
-ValueName "PasswordLength" `
-Type DWord `
-Value 20
Set-GPRegistryValue `
-Name "LAPS Policy" `
-Key "HKLMSoftwarePoliciesMicrosoft ServicesAdmPwd" `
-ValueName "PasswordAgeDays" `
-Type DWord `
-Value 30
GPO Güvenliği: Politikaların Kendisini Korumak
GPO’ları korumak da en az içeriklerini doğru ayarlamak kadar önemlidir:
# GPO izinlerini kontrol et
Get-GPPermission -Name "Security Baseline Policy" -All
# Sadece Domain Admins'e GPO duzenleme izni ver
# Once tum kullanicilarin duzenleme iznini kaldir
Set-GPPermission -Name "Security Baseline Policy" `
-TargetName "Authenticated Users" `
-TargetType Group `
-PermissionLevel GpoRead
# Domain Admins'e tam yetki ver
Set-GPPermission -Name "Security Baseline Policy" `
-TargetName "Domain Admins" `
-TargetType Group `
-PermissionLevel GpoEditDeleteModifySecurity
# GPO degisiklik loglarini izle - Event ID 5136
Get-WinEvent -FilterHashtable @{
LogName = 'Security'
Id = 5136
} -MaxEvents 50 | Where-Object {
$_.Message -like "*Group Policy*"
} | Select-Object TimeCreated, Message | Format-List
GPO guvenliginde dikkat edilmesi gerekenler:
- WMI Filtering: GPO’yu sadece belirli donanim veya OS versiyonlarina uygulamak icin kullanin
- Security Filtering: Authenticated Users yerine spesifik gruplar kullanin
- Enforced vs Block Inheritance: Enforced GPO’lari dikkatli kullanin, alt OU’larin override etmesini engeller
- GPO versiyonlama: Her degisiklik oncesi yedek alin, test OU’sunda deneyin
Sonuç
Group Policy, doğru kullanıldığında kurumsal güvenliğin bel kemiği haline gelir. Şifre politikalarından uygulama kısıtlamalarına, audit loglarından endpoint korumasına kadar onlarca güvenlik kontrolünü tek noktadan yönetme imkanı sunar. Ancak burada vurgulamam gereken kritik bir nokta var: GPO bir kur unut çözümü değildir.
Politikalarınızı düzenli olarak gözden geçirin. gpresult raporlarını analiz edin. Microsoft SCT güncellemelerini takip edin ve yeni güvenlik önerilerini baseline’larınıza dahil edin. Her büyük Windows güncellemesinden sonra mevcut politikaların hala geçerli olup olmadığını kontrol edin.
En önemli tavsiyem: Test OU’su olmadan hiçbir şeyi production’a almayın. Hatalı bir GPO, yüzlerce makinede kullanıcıları çalışamaz hale getirebilir. Değişiklikleri önce küçük bir test grubunda uygulayın, sonuçları izleyin ve ardından rollout yapın.
Son olarak, GPO tek başına yeterli değildir. SIEM entegrasyonu, düzenli penetrasyon testleri ve kullanıcı farkındalık eğitimi ile desteklenmelidir. Group Policy bu zincirin en güçlü halkalarından biridir, ama zincirin tamamına ihtiyacınız var.
