Group Policy Delegation

Kurumlarda bir çok ayar ve güvenlik sıkılaştırmaları Group Policy Object (GPO)’lar üzerinden hazırlanarak, yapılara uygulanmaktadır. GPO’lar yönetimsel anlamda bize avantajlar sağladığı gibi, yanlış ve hatalı kullanımlarda da ciddi sorunlar çıkarabilmektedir. Bu sebepten dolayı adminlerin her zaman GPO’lar üzerindeki yetkileri kontrol etmeleri ve yetkisi bulunmaması gereken hesaplar var ise bunları tespit ederek kaldırmaları gerekmektedir.

Örneğin; bir GPO ile tüm firewall’lar enable edilerek inbound connections – block all connections ayarı yapılarak makinelere uygulandığında, uygulanan makinelerin Domain Controller ile iletişimi kesilebilir. Bir startup/logon script ile tüm domain users’ların şifresi resetlenebilir. Restricted Admins ile admin gruplarının üyeleri çıkarılabilir ve başka user’lar üye yapılabilir. Bu örnektekiler gibi çok etkili policy’ler hazırlanarak domain’e uygulanabilir. Bu nedenle tüm group policy’lerimizin permission’larını düzenli olarak kontrol etmek güvenlik açısından çok önemlidir.

Permission altında bulunan yetkilerin açılımları;
Read : GPO içerisinde bulunan ayarları görüntülemektedir.
Edit Settings : GPO içerisindeki ayarları değiştirir.
Edit settings, delete, modify security : GPO içerisindeki ve Security Settings kısmındaki ayarları değiştirebilir.

Active Directory Group Policy üzerinde bulunan permission’ları görüntülemek için aşağıdaki powershell komutu kullanılır.

$volgpos = Get-GPO -All
$information = foreach ($gpo in $volgpos)
{
Get-GPPermissions -Guid $gpo.Id -All | Select-Object `

@{n=’GroupPolicyName’;e={$gpo.DisplayName}},
@{n=’AccountName’;e={$_.Trustee.Name}},
@{n=’AccountType’;e={$_.Trustee.SidType.ToString()}},
@{n=’Delegation/Permissions’;e={$_.Permission}}
}
$information | Export-Csv -Path ‘C:\GPODelegation.csv’ -NoTypeInformation

Çıktısı aşağıdaki gibidir.

Çıktı sonrasında gerekli analiz yapılmalı, yetkisi bulunmaması gereken yada sadece read yetkisi bulunması gerekirken edit yetkisi bulunan hesaplar var ise müdahale edilmelidir. İlgili powershell komutunun belli aralıklarla çalıştırılıp, çıktısının incelenmesi faydanıza olacaktır.