PKI yapılandırması için Active Directory Environment’ının hazırlanması -2

 

Cert Publishers Group’unun Scope’unu Modifiye Etmek

Cert Publishers groubu AD DS forest ta her bir domain de bulunan default bir gruptur. Bir domain’in Cert Publishers grubu bu domaindeki user objects ‘in userCertificate attribute’üne certificate information için read ve write permissionlari atar . Bu attribute’lere publish edilmis sertifikalar genellikle , Herhangi birine hedef encryption certificate ‘in public key’ine AD DS’i query ederek elde etmesine izin veren , encryption certificate ‘laridir.Cert Publishers grubunun scope’unun yakalanmasi gereken noktasi Bu domain için baslangiç domain controller’inin OS ‘i tarafindan belirlendigidir.

¦Eger domain bir Windows 2000–based server üzerinde ( DCPromo.exe kullanilarak ) olusturulmus ise Cert Publishers group bir global groupdur.Bu da sadece ayni domainde bulunan computer account’arinin Cert Publishers group a üyeligi olabilir demektir.

¦Eger domain bir Windows Server 2003–based server ya da Windows Server 2008–based server üzerinde olusturulmus ise, Cert Publishers group bir domain local group dur.Bu da herhangi bir domaindeki computer account’larinin Cert Publishers grubunda üyelikleri olabilecegi demektir.

Eger bir CA bir user ‘a certificate issue etmis ise ve sertifikayi kullanicinin userCertificate attribute’üne publish etmesi gerekirse , bu process CA ‘in kullanicinin domaindeki Cert Publishers group’un üyesi olmadigi için basarisiz olacaktir.

Not Eger bir enterprise CA ‘in , bir sertifikayi userCertificate attribute’üne yazmak için yeterli hakki yok ise , bu durumda asagidaki event log CA server’in application log un da görünecektir.

Event ID: 80

Description:

Certificate Services could not publish a Certificate for request # (where # is the request ID of the certificate request) to the following location on server dc.example.com: CN=brian.smith,OU=users,OU=Accounts,DC=east,DC=example,DC=com.

Insufficient access rights to perform the operation. 0x80072098 (WIN32:8344).

Sonraki örnekler için , Forest’inizin Asagidaki resimde oldugu gibi yapilandirildigini farzedelim.

Blog-3_thumb2

Resim Örnek bir domain yapilandirmasi

Forest ta CA1 ve CA2 olmak üzere iki enterprise CA vardir ve bu CA lerin computer account ‘u example.com domain ‘inde bulunmaktadir.

Group bir Domain Local Group oldugunda Cert Publishers Population’i

Eger example.com, west.example.com, ve east.example.com domainleri Windows Server 2003 ya da Windows Server 2008 de olusturuldu ise , tüm yapmaniz gereken example.com domain deki CA computer account larine east.example.com and west.example.com da olan Cert Publishers groups’a eklemek olacaktir.CA computer accountlari Example domainindeki Cert Publishers group a eklemenize gerek yoktur çünkü Active Directory Certificate Services‘i yüklerken bu grup population’i otomatik olarak uygulanir. Bu computer accountlarin east.example.com ve west.example.com Cert Publishers group a eklenmesi manuel olarak yapilabilecegi gibi asagidaki VBS script kullanilarak ta yapilabilir :

Set grp = GetObject("LDAP://CN=Cert Publishers,CN=Users,DC=west,DC=example,DC=com")

grp.SetInfogrp.add ("LDAP://CN=CA1,CN=Computers,DC=example,DC=com")

grp.SetInfogrp.add ("LDAP://CN=CA2,CN=Computers,DC=example,DC=com")

grp.SetInfo

Set grp = GetObject("LDAP://CN=Cert Publishers,CN=Users,DC=east,DC=example,DC=com")

grp.SetInfogrp.add ("LDAP://CN=CA1,CN=Computers,DC=example,DC=com")

grp.SetInfogrp.add ("LDAP://CN=CA2,CN=Computers,DC=example,DC=com")

grp.SetInfo

Eger grup bir Global Group ise Cert Publishers Stratejileri

Eger Domain Windows 2000 ‘de olusturulmussa , iki strateji vardir :

¦Her bir CA ‘in domain’inin Cert Publishers group’una foresttaki diger tüm domainler için userCertificate attribute‘üne read ve write permissionlari izin vermesi için permissionlario modifiye etmek

¦Cert Publishers group ‘un scope’unu domain local group ‘a çevirip basitçe CA computer account larine her bir domain’in Cert Publishers group’una eklemek

https://support.microsoft.com/kb/300532

Modifying Permissions in Active Directory Windows Knowledge Base Article 300532,

“Windows 2000 Enterprise CAs Not Added to Certificate Publishers Group in Windows Server 2003 Domain,”

Yukardaki makale Cert Publishers group’una bir domainden bir user’in, user’in account’u farkli bir domainde iken , userCertificate attribute‘üne nasil permissionlari tanimlayacaginiza rehberlik etmeyi saglar.

Adimlar asagidaki sekilde özetlenebilir :

1. example.com domain’in Cert Publishers group unu foresttaki diger domainlerde Read userCertificate permission atayiniz.

2. example.com domain’in Cert Publishers group unu foresttaki diger domainlerde Write userCertificate permission atayiniz

3. example.com domain’in Cert Publishers group unu foresttaki diger domainlerde CN=adminsdholder,CN=system,DomainName container’ina Read userCertificate permission atayiniz.

4. example.com domain’in Cert Publishers group unu foresttaki diger domainlerde CN=adminsdholder,CN=system,DomainName container’ina Write Read userCertificate permission atayiniz.

Not Eger forestta birden fazla domainde CA computer acoount’u mevcut ise , Belirli bir CA’in domaininin Cert Publishers group‘u için forestta diger tüm domainler için permission atamasini modifiye etmelisiniz.

Windows Support Tools ta bulunan dsacls.exe komutu kullanarak bu permission atamalarini script yardimi ile yapabilirsiniz. Örnegimizde domainler Windows Server 2003’de olusturuldugu için CA computer accountlari (CA1 ve CA2) Example.com domain ‘inde oldugu farzedilmistir.

:: Assign permissions to the east.example.com domain

dsacls "dc=east,dc=example,dc=com" /I:S /G “Example\Cert Publishers”:RP;userCertificate,user

dsacls "dc=east,dc=example,dc=com" /I:S /G “Example\Cert Publishers”:WP;userCertificate,user

:: Assign permissions to the west.example.com domain

dsacls "dc=west,dc=example,dc=com" /I:S /G “Example\Cert Publishers”:RP;userCertificate,user

dsacls "dc=west,dc=example,dc=com" /I:S /G “Example\Cert Publishers”:WP;userCertificate,user

:: Assign permissions to the Adminsdholder container in east.example.com

dsacls " cn=adminsdholder,cn=system,dc=east,dc=example,dc=com" /G “Example\Cert Publishers”:RP;userCertificate

dsacls " cn=adminsdholder,cn=system,dc=east,dc=example,dc=com" /G “Example\Cert Publishers”:WP;userCertificate

:: Assign permissions to the Adminsdholder container in west.example.com

dsacls " cn=adminsdholder,cn=system,dc=west,dc=example,dc=com" /G “Example\Cert Publishers”:RP;userCertificate

dsacls " cn=adminsdholder,cn=system,dc=west,dc=example,dc=com" /G “Example\Cert Publishers”:WP;userCertificate

Ipucu Bu script’i ortaminizda kullanmak için basitçe domain isimlerini sizinki olacak sekilde modifiye etmelisiniz .Forest ‘inizda tüm diger domainler için AdminSDHolder container ve CA’in domain’inin Cert Publishers group ‘una permissionlari atamalisiniz.

Cert Publishers group’un scope ‘unu degistirmek

Forestta her bir domain’i incelemeden Cert Publishers group ‘un scope’unun ne oldugunu kolayca tahmin edemeyeceginizi öngörebiliriz. Scope sadece initial domain controller’in OS ‘inin ne oldugu ile baglantilidir.Eger domain Windows 2000 üzerine insa edilmis ise Cert Publishers scope’u bir global group dur. Eger domain Windows Server 2003 ya da Windows Server 2008 üzerine insa edilmis ise scope’u bir domain local dir.

Genellikle sadece forest root domain’in ve diger initial olarak deploy edilmis domainlerin Cert Publishers grubu global group oldugunu görürüz.Tüm sonradan eklenmis domainlerin Cert Publishers groubu domain local group dur.Bu scope tiplerinin karisimi permissionlari modifiye ederken gerçek bir karmasikliga neden olur.

Tüm Cert Publishers grubunun domain local group olmasi için degistirmek çok daha kolaydir diye düsünebiliriz. Gruplar domain local group’a degistirildiginde permission sorunu kolaylikla çözülür. Sadece CA computer accountlari her bir domainin Cert Publishers group una eklenir.Burada yakalanmasi gerekn nokta bu scope u Active Directory Users and Computers console’dan yapamazsiniz.Bu scope degisikligini sadece scripting kullanarak yapabilirsiniz.

Script asagidakileri uygulamalidir :

1. Cert Publishers group ‘u global group tan universal group ‘a convert etmeli

2. Cert Publishers group ‘u universal group’tan domain local group’a convert etmeli

3. Grubu forest ta olan tüm CA computer account’lari içerecek sekilde doldurmali

Önemli Bir grubu direk global group’tan domain local group’a convert edemezsiniz. Bu geçis daima global den universal’e ve domain local’e olacak sekilde gereklidir.

Bunu yapan script Cert Publishers group domain local group iken populate etmek için kullanilan scriptten çok farkli degildir. Farklilik groupType attribute value’leri modify ederkendir. Bir universal group ‘un groupType attribute value –2147483640 ‘dir ve domain local group’un groupType attribute value –2147483644’dür

Example.com domain senaryo örnegimizde oldugu gibi , script asagidaki gibi olmalidir :

Set grp = GetObject("LDAP://CN=Cert Publishers,CN=Users,DC=west,DC=example,DC=com")

grp.Put "groupType","-2147483640"

grp.SetInfo

grp.Put "groupType","-2147483644"

grp.SetInfo

grp.SetInfogrp.add ("LDAP://CN=CA1,CN=Computers,DC=example,DC=com")

grp.SetInfogrp.add ("LDAP://CN=CA2,CN=Computers,DC=example,DC=com")

grp.SetInfo

Set grp = GetObject("LDAP://CN=Cert Publishers,CN=Users,DC=east,DC=example,DC=com")

grp.Put "groupType","-2147483640"

grp.SetInfo

grp.Put "groupType","-2147483644"

grp.SetInfo

grp.SetInfogrp.add ("LDAP://CN=CA1,CN=Computers,DC=example,DC=com")

grp.SetInfogrp.add ("LDAP://CN=CA2,CN=Computers,DC=example,DC=com")

grp.SetInfo

grp.SetInfo

Ipucu Eger bir domain’in Cert Publishers group’u zaten domain local group ise bu durumda basitçe bu scriptten grp.Put “groupType” ve group.setInfo line’larini bu spesifik domain için kaldiriniz

Windows Server 2008 Enterprise CA ‘leri Non–AD DS Environment lara deploy etmek

Windows Server 2008 enterprise CA’lerin non–AD DS environment’larinda olmasi mümkün degildir. Bir enterprise CA configuration information ve certificate publishing depolamasi için AD DS varligina ihtiyaç duyar. Ayrica security policy ve authentication functionalitysi içinde buna ihtiyaç duyar. Bu Windows Server 2008 PKI’I non–AD DS environment’a kuramazsiniz demek degildir. Sadece bu tür bir islem ile PKI hiyerarsisindeki herbir CA standalone CA olmali demektir.

Bir standalone CA environmentta , Issue edilen sertifikalarin içerigini tanimlamak için AD DS de ki certificate template’i kullanmaktansa , sertifikalarin içerigi gerçek sertifika request’i içerisinde tanimlanmistir.Ilave olarak , tüm sertifika requestleri varsayilan olarak pending status’a ayarlidir ve certificate manager’in bu standalone CA ‘e submit olan her bir sertifika request’ini approve ya da deny etmesi gerekmektedir.

Not Bu default davranisi degistirebiliyor olmaniza ve sertifikalari otomatik olarak issue edebilmenize ragmen , bu islem önerilmez. certificate templates olmadan Eger bir standalone CA automatic olarak requestleri isler ve bu requestleri temel alarak sertifikalari issue eder ise herhangi bir authentication ya da validation sistemi uygulanmaz

Kaynak : Windows Server 2008 PKI and Certificate Security