Windows Server 2008 ve R2’de yenilikler – 1 – DNS Sunucu/İstemci

Merhaba,

Her geçen gün Windows Server 2008 ve Windows Server 2008 R2 kurulumu yapan müsterilerimizin sayisi artiyor. Ben bu yazimda herkesçe daha çok bilinen ve kullanilan servislerden oldugunu düsündügüm DNS ve DHCP servislerinde yapilan degisiklikler, yeni özellikler ve bunlarin kurumsal ortamlara katabilecegi kolayliklardan bahsetmek istiyorum.

DNS servisi ile baslarsak, bu yenilikler sunlardir:

1. IPv6 destegi ile birlikte AAAA (4A kaydi) kaydinin eklenmesi

    • Windows Server 2003 DNS konsolu üzerinde 128 bit uzunlugundaki 4A kaydi yaratilmasini saglayabiliyoruz. 2008/R2 ile birlikte tam destek gelmistir ve güncellestirmeleri de kabul etmektedir.
    • En büyük kolaylik “Reverse Zone” olarak IPv6 subnet’lerinin yaratilmasindadir. Sadece IPv6 prefix’i belirtilerek zone’un yaratilmasi saglanabilir.

2. Global Name Zone (Genel Tek Adlar)

· Windows NT 4.0’dan bu yana kullanilan WINS isim çözümlemesi yani NetBIOS (single-label/tek etiketli) isimlerinin çözümlenmesi için ayri bir servis yerine bir etki alani/bölge mantiginda isim çözümlemesine yarar.

· Uygulama ve kullanici NetBIOS isim çözümlemesi isteginde bulundugunda, dnsapi sistemin dahil oldugu etki alani veya Group Policy ya da DHCP ile saglanan ekleri kullanarak sorguyu FQDN (Fully Qualified Domain Name) olarak gönderir. Herhangi bir etki alanina dahil olmayan cihazlarin, örnegin yazicilar gibi, ismini çözmek için WINS servisini kurmak yerine GlobalNames zone kullanilabilir.

· Bu özellik client tarafinda ayrica bir degisiklik gerektirmediginden, 2008 geçisi ile birlikte WINS servislerinin ortamdan kadirilmasi için karar vermeyi kolaylastiracaktir. Tabii ki NetBIOS isimlerini kullanan Session-layer uygulamalariniz varsa halen NetBIOS isimlerini ihtiyaç duyarsiniz. Ancak bu durumda illa ki WINS kullanmak zorunda degilsiniz.

· Ayrica daha önce yapilandirmalarda siklikla karsima çikan bir soruna da çözüm olacaktir. Birden fazla domain etki alani olan yada farkli suffix’ler kullanilan ortamlarda tüm client’larin single-label isimler kullanarak bazi uygulamalara erismesi için Ag yöneticileri her bir DNS zone üzerinde o uygulama sunucusu için kayit olusturmak zorundadirlar. Eskiden beri gelen aliskanlik, WINS servisi kullanmaktir ki isim degisiklikleri ve bunlarin güncellestirmesi düsünüldügünde mantiklidir. Örnek vermek gerekirse, diyelim holding.com ana etki alaninda akdeniz.holding.com ve marmara.holding.com gibi bölge ve alt etki alanlari oldugunu düsünelim. Fiziksel yönlendirmelerin dogru yapildigi bir agda tüm kullanicilarin sadece tek bir isim kullanarak bir Web uygulamasina erismesini isterseniz, diyelim ki adi “WEBO” olsun, webo.akdeniz.holding.com ve webo.marmara.holding.com altinda iki tane kayit olusturmaniz gerekecek. Ayrica sonra ki isim ve IP degisikliklerini de manüel takip etmek gerekecek. ancak GlobalNames ile sadece WEBO ismini yaratmaniz yeterli olacaktir.

· GlobalNames dinamik güncellestirmeleri desteklememektedir.

3. Background zone loading (Arka planda bölge yükleme)

· Windows 2000 Server’dan bu yana Domain etki alanlari ve DNS bölgeleri Active Directory üzerinde tutulup, ayni etki alanindaki DC’ler tarafindan paylasilmaktadir. Genelde birçok sistem yöneticisi üzerinde DNS servisi olan DC’lerin TCP/IP ayarlarinda birincil DNS olarak kendilerini gösterirler. Bu durumda sunucuyu baslattiginizda, DNS servisi zone’lari yüklemek için AD servisinin ayaga kalkmasina ihtiyaç duymaktadir. AD servisi de diger DC’ler ile etkilesime geçebilmek DNS servisinin ayaga kalkmasini beklemektedir. Ikincil bir DNS tanimi ile bu süreci hizlandirabilsek de DNS servisinin AD’den yükleme yapmasini Windows Server 2008’e kadar hizlandiramamistik. Bu özellik ile birlikte, DNS servisi kendisine gönderilen DNS sorgularini neredeyse hemen cevaplamaya baslar. Bunu yapabilmek içinde öncelikle yüklemesi gereken zone bilgilerini toparlar ve bunu AD’den ister; kayitlarin tamami yüklenene kadar ise gelen tüm isteklere cevap verir. Eger hali hazirda yüklemeyi bitirdigi bir kayit sorgulaniyorsa, cevap verir, aksi halde yüklenmesini beklemeden, yeni bir thread daha olusturarak sorgusu yapilan kaydin yüklenmesini ve böylelikle cevabin gönderilmesini saglar.

· Özetle, DNS servisi basladiginda birden fazla thread kullanarak AD’den yüklemeyi baslatir ve böylelikle hem süreç hizlanir hemde sorgulara cevap vermek için bu sürecin bitmesini beklemek zorunda kalmayiz.

4. Read-Only Domain Controller (RODC) Destegi

· Windows Server 2008 ile birlikte gelen RODC özelligini DNS sunuculari da yeni primary read-only zone ile desteklemektedir.

· Bir sunucuyu RODC yaptiginizda application directory partition altinda yer alan ForestDNSZones ve DomainDNSZones zone’larinin birer salt okunur (read-only) kopyasini olusturmaktadir. Adindan da anlasilacagi gibi üzerinde DNS servisi çalisan RODC’lerde DNS kayitlari ile ilgili bir degisiklik yapamazsiniz. RODC kullanimindaki asil amaç fiziksel güvenligin saglanamayacagi ortamlara DC kurulmasini saglamktir.

5. Global Query Block List (Genel Sorgu Engelleme Listesi)

· Bu özellik bir güvenlik güncellestirmesi ile birlikte önceki DNS sunucu sürümlerine de yüklenebilmektedir: KB968732

· Buradaki amaç kötü niyetli kisilerin bazi özel isimleri DNS’e kaydetmesini engellemektir. Etki alaninda yetkili her kullanici kullandigi sisteme istedigi ismi verebilir, tabii ki aksini söyleyen bir sirket politikasi yoksa. Bu durumda örnegin bir kullanici sistemine WPAD adini verebilir. WPAD (Web Proxy Auto-discovery Protocol) yani Web Proxy Otomatik Bulma Protokolü Internet Explorer tarafindan kullanilan ve bir Web Proxy sunucusu bulmaya yarayan protokoldür. Eger siz WPAD isminde bir sistemi DNS’e kaydederseniz, tüm IE kullanicilarini o sistem üzerinden Internet’e çikmaya zorlayabilirsiniz. Bunu engellemek için yöneticiler genelde WPAD isminde herhangi bir IP’yi adreslemeyen kayit olustururlar. Ayni durum ISATAP (Intra-Site Automatic Tunnel Addressing Protocol) için de geçerlidir. IPv6 istemciler WPAD yöntemine benzer sekilde ISATAP sunuculari ararlar.

· Basitçe bu yeni özellik GlobalQueryBlockList adinda bir listenin olusturulmasi ve varsayilan olarak, eger etki alaninda kayitli degilse, WPAD ile ISATAP isimlerinin buraya eklenmesidir. Bu listeye tabii ki çözümlenmesi istenmeyen diger isimler de eklenebilir. Isminden de anlasilacagi gibi Global bir listedir ve o DNS sunucusu üzerinde yüklenen tüm zone’lar için geçerlidir. GlobalNames örneginde oldugu gibi bu sefer de tüm kullanicilarin WEBO ismindeki sisteme erismesini engellemek isterseniz, ismi bu listeye ekleyip DNS servisini yeniden baslatmaniz yeterlidir.

6. DNSSEC (Sadece R2)

· Bu DNS güvenlik özelligi sadece Windows Server 2008 R2 (ayrica Windows 7)’de bulunan hem sunucu hem de istemci tarafindan kullanilan bir özelliktir.

· DNS istemcisi bir sorgu gönderdiginde aldigi cevabin degistirilip, degistirilmedigini ya da kimden geldigini kontrol etmeden aldigi cevaba göre islemine devam eder. Bu durumda arada ki bir kisi tarafindan yaniltici cevaplar gönderilebilir. DNS istemcisi normalda sorgusuna uygun olmayan cevaplar ile ilgilenmez ancak bir sekilde bu aradaki kisi “authoritative” bir cevaptan önce DNS istemcisinin bekledigi cevabi verebilirse, istemciyi farkli bir IP adresine yönlendirebilir. Ayni sekilde “recursive” sorgular yapan DNS sunuculari da benzer ataktan etkilenebilirler. Bunun için DNSSEC özelligi ile birlikte “data integrity” (data dogrulamasi) eklenmistir.

· Simdiye kadar sadece DNS güncellestirmelerinde ve eger zone “secure-only” ise karsilikli olarak kimlik dogrulamasi yapilmaktadir. DNSSEC ile birlikte sadece güncellestirmelerde degil, DNS sorgularinda da gelen cevabin bizim istedigimiz DNS’den gelip, gelmedigine dair bir kontrol yapilmaktadir.

7. DNS Devolution

· Bu özellik R2 ile birlikte DNS istemcilerine varsayilan olarak eklenmistir. Diger sürümler için ise KB957579 güvenlik güncellestirmesi yayinlanmistir. Bu sunucu degil istemci özelligidir.

· Devolution özelliginden bahsetmek gerekirse, daha önce de bahsettigim gibi DNS istemcilerinin bir uygulamadan yada elle girerek gönderdikleri tek isimli sorgulari sistem etki alani adini ekleyerek FQDN haline getirir ve o sekilde sorguyu gönderir. Aksi belirtilmedikçe, istemci eger isim çözülemezse etki alani isminin sol tarafinda kalan eki atarak bir kere daha sorgu atar ve bu sekilde ismi çözemedikçe tekrarlar. Artik varsayilan bu hareketi sinirlamanin bir yolu vardir. Örnegin Akdeniz.holding.com.tr etki alanindaki bir kullanici “BenimPC” adina bir sorgu gönderirise, bu sorgu öncelikle benimpc.akdeniz.holding.com.tr olarak gönderilir. Eger yanit alinamazsa, en soldaki eki atarak tekrar gönderir: benimpc.holding.com.tr. Tekrar yanit alinamazsa, bu sefer soldan bir ek daha atarak “benimpc.com.tr” yi dener. Iste bu özellige Devolution denmektedir.

· Eger Suffix listesi GPO ile basiliyorsa, “devolution” kullanilmaz ve sadece listede belirtilen isimler kullanilir.

· Eger istemcinin TCP/IP özelliklerinde isimlerin nasil eklenilecegi ile ilgili olarak “append parent suffixes of the primary DNS suffix” seçimi yoksa yine bu özellik kullanilmaz ki varsayilan olarak vardir.

· Bu özellik iki registry anahtariyla kontrol edilmektedir:

§ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\UseDomainNameDevolution: 0 (kapali) veya 1 (açik)

§ HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\DNSClient\DomainNameDevolutionLevel: Minimum 2. (varsayilan deger 2’dir.)

· Örnegin yukaridaki örnege göre bu degerler sirasiyla 1 ve 3 olsaydi, istemcinin son gönderecegi sorgu benimpc.holding.com.tr olacakti. (3 = holding.com.tr)

· Burada dikkat edilmesi gereken yanlis DomainNameDevolutionLevel verilerek organizasyon içerisinde kullanicilarin Forest seviyesindeki isimleri çözememesi gibi sorunlara sebep olmamaktir. Bu güvenlik güncellestirmesi ile birlikte Devolution seviyesi otomatik olarak belirlenmektedir. Daha fazla detay için yukarida bahsettigim makaleye bakabilirsiniz.

8. DNS Cache Locking (Sadece R2)

· Daha önce yazmis oldugum DNS güncellestirmeleri ile ilgili yazimda Kaminsky DNS Vulnerability adindaki açiktan bahsedecegimi belirtmistim. Simdi sirasi gelmisken bu özellik ile birlikte kisaca bir özetlemek isterim. Bu açiktaki asil hedef DNS sunucusunun önbelligidir (cache). Önbellek sorgusu yapilip cevaplanan sorgularin yeniden sorgulanmamasi için kaydin TTL olarak belirtilen zamani süresince saklanmasi için kullanilir. Hem DNS sunucusunun hem de istemcilerin kullandiklari önbellekler farklidir. Kaminsky açigi da iste bu noktada önbellege gerçek olmayan yaniltici IP adresleri yazmayi hedeflemektedir. DNS sunucusuna sürekli olarak belirli bir etki alaninin alt etki alanlarina ait sorgular göndererek, onun “bilmiyorum ama su adrese sorabilirsin” demesini yani referral göndermesini saglamak ve iste o referral için yaniltici bir IP adresi yazabilmektir.

· DNS Sunucusu önbellegine aldigi her cevabi eger bir degisiklik varsa günceller. DNS Cache Locking (DNS önbellek kilitlemesi) ise bu güncellestirmeleri engellemek için kullanilir.

· HKLM\SYSTEM\CurrentControlSet\Services\DNS\Parameters\CacheLockingPercent anahtarinda bu güncellestirmenin TTL degerinin % kaçi kadar süre boyunca engellenecegini belirtebiliriz. Varsayilan olarak bu deger 100’dür. Yani TTl degeri 4 saat olan bir kayit ancak 4 saat sonunda güncellenebilir. Zaten TTL degeri sona erdiginde kayit önbellekten de silinecektir. Bu degeri 50 olarak veririseniz, TTL’in %50’si yani 2 saat boyunda güncelleme istekleri engellenecektir.

9. DNS Socket Pool

· Yine daha önce belirttigim güncellestirmeler ile kazandirilan Socket Pool yöntemiyle kaynak baglanti noktalarinin rastgele olarak seçilmesi özelligi 2008 ve R2 DNS sunucularinda da vardir. Burada amaç tahmin edilebilecek kaynak baglanti noktalari yerine kullanilacak baglanti noktalarini rastgele seçerek tahmin edilmesini engellemektir.

· HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\DNS\Parameters\SocketPoolSize anahtari ile kaç adet baglanti noktasi arasindan seçim yapilacagi belirtilebilir. Varsayilan olarak bu deger 2.500’dür.

· R2’de buna ek olarak baglanti noktalarindan bazilarinin kullanilmamasini saglayabiliriz. Örnegin bir uygulama 51000-51100 arasindaki baglanti noktalarini kullaniyorsa, yine ayni dizinde bulunan SocketPoolExcludedPortRanges anahtari ile bu araligin DNS sunucusu tarafindan kullanilmasini engelleyebiliriz.

· Önceki yazimdaReservedPorts” anahtari ile de bunun yapilabilecegini belirtmistim. Buradaki fark, “ReservedPorts” anahtari o sistem üzerinde ki tüm Windows Socket uygulamalarini kapsarken, SocketPoolExcludedPortRanges sadece DNS servisinin kullanmasini engelleyecegimiz baglanti noktalarini belirtir.

Bir sonraki yazimda DHCP servisi için getirilen yenilikler ve uygulamalarindan bahsedecegim.

Okan Çetinim.