barisnetblog.space — Group Policy ile İlk GPO'ları Yapılandırmak
Windows Server 21 Ekim 2026 6 dk okuma 7 görüntülenme

Group Policy ile İlk GPO'ları Yapılandırmak

firma.local domain'inde OU yapısını kurup ilk GPO'larımızı oluşturuyoruz. Parola politikası, sürücü eşleme, ekran kilidi, RDP ve gpresult ile test adımları bu rehberde.

Önceki yazıda firma.local domain'ini Install-ADDSForest ile kurmuş ve ilk Domain Controller'ımızı ayağa kaldırmıştık. Domain hazır olduğuna göre sıra, yüzlerce bilgisayarı ve kullanıcıyı tek merkezden yönetmenizi sağlayan Group Policy altyapısında. Bu yazıda GPO'ların nasıl işlendiğini, doğru OU yapısını, ilk politikalarınızı oluşturmayı ve test etmeyi adım adım uygulayacağız.

GPO Nedir ve Nasıl İşlenir?

Group Policy Object (GPO), bilgisayar ve kullanıcılara uygulanan ayarların bir paketidir. Her GPO iki ana bölümden oluşur:

  • Computer Configuration: Bilgisayar açılırken uygulanır; güvenlik duvarı, RDP, hizmetler gibi makine ayarları burada bulunur.
  • User Configuration: Kullanıcı oturum açtığında uygulanır; masaüstü, sürücü eşleme, Denetim Masası kısıtlamaları gibi ayarlar buradadır.

GPO'lar LSDOU sırasıyla işlenir:

  • Local: Bilgisayarın yerel politikası
  • Site: AD sitesine bağlanan GPO'lar
  • Domain: firma.local seviyesine bağlanan GPO'lar
  • OU: Organizational Unit'lere bağlanan GPO'lar (üst OU'dan alt OU'ya doğru)

Çakışma olduğunda en son uygulanan kazanır. Yani OU'ya bağlı bir GPO, domain seviyesindeki ayarı ezer. Bu sırayı değiştiren iki seçenek vardır: Enforced (üst seviyedeki GPO'nun ezilmesini engeller) ve Block Inheritance (OU'nun üst seviyelerden gelen GPO'ları almasını engeller). İkisini de yalnızca gerçekten gerektiğinde kullanın, aksi halde sorun gidermek çok zorlaşır.

OU Yapısını Hazırlamak

En sık yapılan hata, tüm ayarları Default Domain Policy içine yazmaktır. Bu GPO yalnızca parola, hesap kilitleme ve Kerberos politikaları için kullanılmalıdır. Diğer tüm ayarlar için ayrı GPO'lar oluşturup bunları OU'lara bağlamalısınız.

Ayrıca varsayılan Users ve Computers nesneleri OU değil, container'dır; bunlara GPO bağlayamazsınız. Bu yüzden önce kendi OU yapınızı oluşturalım:

PowerShell
Import-Module ActiveDirectory

New-ADOrganizationalUnit -Name "Firma" -Path "DC=firma,DC=local" -ProtectedFromAccidentalDeletion $true
New-ADOrganizationalUnit -Name "Kullanicilar" -Path "OU=Firma,DC=firma,DC=local"
New-ADOrganizationalUnit -Name "Bilgisayarlar" -Path "OU=Firma,DC=firma,DC=local"
New-ADOrganizationalUnit -Name "Sunucular" -Path "OU=Firma,DC=firma,DC=local"

Domain'e yeni katılan bilgisayarların doğrudan kendi OU'nuza düşmesi için varsayılan konumu yönlendirin:

Komut İstemi
redircmp "OU=Bilgisayarlar,OU=Firma,DC=firma,DC=local"
redirusr "OU=Kullanicilar,OU=Firma,DC=firma,DC=local"

İlk GPO'ları Oluşturmak

Group Policy yönetimi için gpmc.msc (Group Policy Management) konsolunu ya da PowerShell'deki GroupPolicy modülünü kullanabilirsiniz. Biz ikisini birlikte kullanacağız.

Parola ve Hesap Kilitleme Politikası

Domain genelindeki parola politikası yalnızca domain seviyesine bağlı bir GPO'dan, pratikte Default Domain Policy'den okunur. OU'ya bağladığınız bir GPO'daki parola ayarları domain hesaplarını etkilemez.

gpmc.msc içinde Default Domain Policy'ye sağ tıklayıp Edit deyin ve şu yola gidin:

Computer Configuration > Policies > Windows Settings > Security Settings > Account Policies

Burada önerilen başlangıç değerleri:

  • Minimum password length: 12
  • Password must meet complexity requirements: Enabled
  • Account lockout threshold: 5 geçersiz deneme
  • Account lockout duration: 15 dakika

Uygulanan değeri kontrol etmek için:

PowerShell
Get-ADDefaultDomainPasswordPolicy -Identity firma.local

Yöneticiler gibi belirli bir gruba daha sıkı kurallar uygulamak istiyorsanız GPO yerine Fine-Grained Password Policy kullanmanız gerekir:

PowerShell
New-ADFineGrainedPasswordPolicy -Name "PSO-Yoneticiler" -Precedence 10 `
    -MinPasswordLength 15 -ComplexityEnabled $true -PasswordHistoryCount 24 `
    -LockoutThreshold 3 -LockoutDuration "00:30:00" -LockoutObservationWindow "00:30:00" `
    -MaxPasswordAge "60.00:00:00" -MinPasswordAge "1.00:00:00" -ReversibleEncryptionEnabled $false

Add-ADFineGrainedPasswordPolicySubject -Identity "PSO-Yoneticiler" -Subjects "Domain Admins"

Kullanıcı GPO'su: Denetim Masası Kısıtlaması

Standart kullanıcıların Denetim Masası ve Ayarlar uygulamasına erişimini kapatan bir GPO oluşturup Kullanicilar OU'suna bağlayalım:

PowerShell
New-GPO -Name "KUL-Masaustu-Kisitlama" -Comment "Denetim Masasi erisimini kapatir"

Set-GPRegistryValue -Name "KUL-Masaustu-Kisitlama" `
    -Key "HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer" `
    -ValueName "NoControlPanel" -Type DWord -Value 1

New-GPLink -Name "KUL-Masaustu-Kisitlama" -Target "OU=Kullanicilar,OU=Firma,DC=firma,DC=local" -LinkEnabled Yes

Ağ sürücüsü eşleme ise bir Group Policy Preferences ayarıdır ve en kolay GPMC üzerinden yapılır. Yeni bir GPO'yu düzenleyip şu yola gidin:

User Configuration > Preferences > Windows Settings > Drive Maps

New > Mapped Drive seçin; Action olarak Update, konum olarak \\FS01\Ortak, sürücü harfi olarak S: girin. Update eylemi, sürücü zaten varsa silmeden günceller.

Bilgisayar GPO'su: Ekran Kilidi ve RDP

Bilgisayarlar OU'suna bağlanacak ikinci GPO, 10 dakika işlem yapılmadığında ekranı kilitlesin ve Uzak Masaüstü'nü NLA ile açsın:

PowerShell
New-GPO -Name "BLG-Guvenlik-Temel" -Comment "Ekran kilidi ve RDP ayarlari"

# 600 saniye islem yapilmazsa ekrani kilitle
Set-GPRegistryValue -Name "BLG-Guvenlik-Temel" `
    -Key "HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System" `
    -ValueName "InactivityTimeoutSecs" -Type DWord -Value 600

# Uzak Masaustu baglantilarina izin ver
Set-GPRegistryValue -Name "BLG-Guvenlik-Temel" `
    -Key "HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services" `
    -ValueName "fDenyTSConnections" -Type DWord -Value 0

# Network Level Authentication zorunlu olsun
Set-GPRegistryValue -Name "BLG-Guvenlik-Temel" `
    -Key "HKLM\Software\Policies\Microsoft\Windows NT\Terminal Services" `
    -ValueName "UserAuthentication" -Type DWord -Value 1

New-GPLink -Name "BLG-Guvenlik-Temel" -Target "OU=Bilgisayarlar,OU=Firma,DC=firma,DC=local" -LinkEnabled Yes

Ekran kilidi ayarı GPMC raporunda Security Options altında değil Extra Registry Settings altında görünür. Konsoldan yönetmek isterseniz aynı ayarı Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options > Interactive logon: Machine inactivity limit yolundan 600 saniye olarak da girebilirsiniz.

RDP'nin çalışması için güvenlik duvarında da izin vermeniz gerekir. Aynı GPO'da şu ayarı Enabled yapın:

Computer Configuration > Policies > Administrative Templates > Network > Network Connections > Windows Defender Firewall > Domain Profile > Windows Defender Firewall: Allow inbound Remote Desktop exceptions

Oluşturduğunuz GPO'ları listelemek için:

PowerShell
Get-GPO -All | Select-Object DisplayName, GpoStatus, ModificationTime

Güvenlik ve WMI Filtreleme

Bir GPO'yu OU'daki herkese değil, yalnızca belirli bir gruba uygulamak istiyorsanız Security Filtering kullanın:

PowerShell
Set-GPPermission -Name "KUL-Masaustu-Kisitlama" -TargetName "Muhasebe" -TargetType Group -PermissionLevel GpoApply
Set-GPPermission -Name "KUL-Masaustu-Kisitlama" -TargetName "Authenticated Users" -TargetType Group -PermissionLevel GpoRead -Replace

Dikkat: Authenticated Users grubunu tamamen silmeyin, yalnızca yetkisini Read'e düşürün. MS16-072 güncellemesinden sonra bilgisayar hesaplarının GPO'yu okuyabilmesi zorunludur; aksi halde GPO hiç uygulanmaz. Türkçe arayüzlü sunucularda bu grubun adı farklı görünebilir.

WMI Filtering ise GPO'yu bilgisayarın özelliklerine göre uygular. GPMC'de WMI Filters altında yeni bir filtre oluşturup yalnızca istemci işletim sistemlerini hedefleyebilirsiniz:

Kod
SELECT * FROM Win32_OperatingSystem WHERE ProductType = "1"

WMI filtreleri her GPO işlenişinde sorgulandığı için az ve basit tutun.

Central Store ile ADMX Şablonları

Varsayılan olarak her yönetici, GPO düzenlerken kendi bilgisayarındaki ADMX şablonlarını kullanır. Bu da farklı sürümler arasında tutarsızlığa yol açar. Central Store oluşturduğunuzda tüm yöneticiler SYSVOL'deki ortak şablonları kullanır:

PowerShell
Copy-Item -Path "C:\Windows\PolicyDefinitions" `
    -Destination "\\firma.local\SYSVOL\firma.local\Policies\" -Recurse

Klasör SYSVOL replikasyonu ile diğer Domain Controller'lara otomatik dağıtılır. Microsoft Edge veya Office gibi ürünlerin ADMX dosyalarını da bu klasöre ekleyebilirsiniz.

GPO'ları Test Etmek

İstemci bilgisayarlar GPO'ları varsayılan olarak 90 dakikada bir (+0-30 dakika rastgele) yeniler. Beklemeden test etmek için istemcide:

Komut İstemi
gpupdate /force
gpresult /r
gpresult /h C:\Temp\gpo-rapor.html

gpresult /r çıktısında Applied Group Policy Objects altında GPO'nuzu görmelisiniz; filtered out listesinde görüyorsanız nedeni de yanında yazar. Sunucu tarafından uzaktaki bir bilgisayarın raporunu almak için:

PowerShell
Get-GPResultantSetOfPolicy -Computer "PC01" -User "FIRMA\ahmet" -ReportType Html -Path "C:\Temp\PC01-rsop.html"
Get-GPInheritance -Target "OU=Bilgisayarlar,OU=Firma,DC=firma,DC=local"

GPO'ları Yedeklemek

Yanlışlıkla silinen ya da bozulan bir GPO'yu geri almak için düzenli yedek alın:

PowerShell
Backup-GPO -All -Path "D:\GPO-Yedek" -Comment "Haftalik yedek"

# Bozulan (ama hala var olan) bir GPO'yu en son yedeginden geri yuklemek
Restore-GPO -Name "BLG-Guvenlik-Temel" -Path "D:\GPO-Yedek"

# Silinmis bir GPO'yu yedekten yeniden olusturmak
Import-GPO -BackupGpoName "BLG-Guvenlik-Temel" -TargetName "BLG-Guvenlik-Temel" -Path "D:\GPO-Yedek" -CreateIfNeeded

Restore-GPO yalnızca domain'de hâlâ bulunan bir GPO'yu geri yükler. Silinmiş bir GPO için Import-GPO -CreateIfNeeded kullanın veya GPMC'de Group Policy Objects > Manage Backups ekranından Restore deyin.

Backup-GPO komutunu bir zamanlanmış görev ile haftalık çalıştırmanızı öneririm. Unutmayın, yedek GPO bağlantılarını (link) içermez; geri yüklemeden sonra bağlantıları kontrol edin.

Sık Karşılaşılan Hatalar

  • GPO'yu Computers container'ına bağlamaya çalışmak: Container'lara GPO bağlanamaz. Bilgisayarları bir OU'ya taşıyın ve redircmp ile varsayılan konumu değiştirin.
  • Kullanıcı ayarını bilgisayar OU'suna bağlamak: User Configuration ayarları yalnızca kullanıcı nesnelerinin bulunduğu OU'larda işlenir. Gerekiyorsa Loopback Processing kullanın.
  • Parola politikasını OU'ya bağlamak: Domain hesapları için etkisizdir. Default Domain Policy veya Fine-Grained Password Policy kullanın.
  • Authenticated Users'ı tamamen kaldırmak: GPO okunamaz ve uygulanmaz. Yetkiyi Read olarak bırakın.
  • Sürücü eşlemenin görünmemesi: Preferences ayarları bazen ikinci oturum açışta uygulanır. gpupdate /force sonrası oturumu kapatıp açın.
  • Değişikliğin yansımaması: DC'ler arasında SYSVOL replikasyonu tamamlanmamış olabilir. gpresult /r çıktısında hangi DC'den politika alındığını kontrol edin.

Bir sonraki yazıda, aynı domain'e DHCP rolünü ekleyip kapsamları ve failover yapılandırmasını kuracağız.

Okuma görünümü 7 görüntülenme