DNS yönetim konsolunda, DNS sunucunun özelliklerine bakarsak, Advanced sekmesinde bazı ayarlar görürürüz.
Bu ayarlardan birisi “Secure cache against pollution” (Kaşeyi kirlenmeye karşı koru) şeklindedir:
DNS kaşesini ve bu kaşenin kirlenmesini anlamak için önce DNS’in çalışma şeklinde bir göz atalım ve bir örnekle durum anlayalım:
-
Microsoft.com’da çalışan bir Türk çalışan, tarayıcısında adres satırına www.hurriyet.com.tr ifadesini yazar.
-
Türk çalışanın bilgisayarı www.hurriyet.com.tr’ye karşılık gelen IP adresini öğrenmek için Microsoft içindeki DNS sunucusuna sorgu gönderir.
-
Microsoft’un DNS sunucusunda yalnızca Microsoft.com’daki bilgisayarlara ilişkin bilgi vardır. Bu nedenle Microsoft’un DNS sunucusu www.hurriyet.com.tr adresini öğrenmek üzere kök DNS sunuculara gider. İster Windows’ta ister Linux’ta olsun, bir DNS sunucu kurulduğunda bu az sayıdaki kök DNS sunucuları bilir. Windows’ta DNS sunucunun özelliklerinde, Root Hints sekmesinde bu sunucuların bilgisi bulunabilir.
-
Kök DNS sunucular sorguyu inceler, sorulan adın tr domaini altında olduğunu görür ve Microsoft’un DNS sunucusuna tr’den sorumlu DNS sunucuya gitmesini söyler. Her ülkeden sorumlu bir DNS sunucu bulunmaktadır. Türkiye için bu sunucu başından beri ODTÜ’de bulunmaktadır. Sonu “tr” ile biten tüm etki alanlarına ilişkin bilgi ODTÜ’nün sunucularında bulunmaktadır.
-
Microsoft’un DNS sunucusu ODTÜ’deki DNS sunuculara gider. ODTÜ’deki DNS sunucularda tr ile biten domain’lere ilişkin bilgi vardır. Ama bu bilgi “hurriyet.com.tr’nin DNS sunucusu şu bilgisayardır.” şeklindedir. Microsoft’un DNS sunucusuna bu bilgiyi verirler.
-
Microsoft’un DNS sunucusu hürriyet.com.tr’nin DNS sunucusuna gider, www.hurriyet.com.tr’nn IP adresini alır, onu çalışanın bilgisayarına gönderir, ek olarak da kendi kaşesine yerleştirir. DNS’ten bilgi alan istemci bilgisayar da bu bilgiyi kendi DNS istemci kaşesine yerleştirir. DNS istemci kaşesinin içeriği “ipconfig /displaydns” komutu ile görüntülenebilir ve “ipconfig /flushdns” komutu ile silinebilir.
- Microsoft’un DNS sunucusu, kendisine belli bir süre içinde www.hurriyet.com.tr sorgusu gelirse artık bu bilgiyi kendi kaşesinden yanıtlayabilecektir.
Şimdi aşağıdaki şekle bakalım:
Şekilde anadolu.com etki alanındaki Hasan adlı kullanıcının tarayıcısına www.microsoft.com adresini yazdığını düşünelim. Burada da www.microsoft.com adresini IP adresine çevirmek gerekecektir. Bunu anadolu.com’un DNS sunucu yukarıdakine benzer bir yol izleyerek yapacaktır.
Anadolu.com’un DNS sunucusu microsoft.com’un DNS sunucusuna gittiğinde ondan www.microsoft.com’a karşılık gelen IP adresini alır. Ama bu sırada microsoft.com’un DNS sunucusu ona kendi kaşesindeki bilgileri de verir. Bu şekilde hurriyet.com.tr’ye ilişkin bilgi, sorulmadığı halde anadolu.com’un DNS sunucusuna gidecektir. Bu aşamadan sonra artık anadolu’.com’daki bir kullanıcı www.hurriyet.com.tr’ye gitmek isterse onun bilgisayarına ilgili IP adresi hemen kaşeden verilebilecektir.
Bu şekilde DNS sunucular kaşelerini birbirleriyle paylaşır, ellerinde daha çok bilgi bulununca da yukarıda madde madde açıklanan zahmetli yolculuğu yapmazlar.
Internet’in ilk yıllarında iletişim hızları çok düşüktü ve böyle bir yardımlaşmanın çok yararı vardı.
Şimdiyse bu türlü bir yardımlaşmaya gerek yok; DNS trafiği düşük yoğunluklu bir trafik ve günümüzün teknolojilerinde bu trafik çok hızlı bir şekilde gerçekleşiyor.
DNS kaşesindeki bilgilerin paylaşılmasının sakıncaları da var.
Kötü adamlar kaşe paylaşımını kötüye kullanabilir.
Bir etki alanının DNS sunucusunu yöneten kişinin kötü olduğunu varsayalım. DNS kaşesine www.google.com için bir IP adresi girsin. Bu IP adresi de kendi kötü sunucusunun IP adresi olsun.
Bu durumda, bir başka DNS sunucusu ona soru sorduğunda hem o sorguyu yanıtlayacak hem de ek olarak da www.google.com’un IP adresini de gönderecek.
O andan sonra, soruyu soran DNS sunucunun kaşesinde www.google .com için yanlış ve tehlikeli bir bilgi var. O DNS sunucunun ağındaki bilgisayarlar www.google.com’un IP adresini sorduğunda hep kötü adamın DNS sunucusunun bilgisini alacak.
İşte buna DNS kaşesinin kirlenmesi ya da zehirlenmesi diyoruz.
DNS kaşesini kirletme başka türlü de yapılabilir:
Microsoft içindeki ya da dışındaki kötü bir adamın www.google.com için IP adresi bilgisini değiştirmek istediğini varsayalım.
Kötü adam Microsoft’un DNS sunucusuna bir sorgu gönderir: www.google.com’un IP adresi nedir?
Microsoft’un DNS sunucusu bu bilgiye sahip olmadığı için bunu dışarıdaki diğer sunuculara soracaktır.
Bu sorgusuna 16 bitlik bir işlem numarası (transaction ID) verir.
Yanıt dönen DNS sunucu da bu işlem numarası ile yanıt dönecektir.
Şimdi soruyu soran kötü adamın Microsoft’un DNS sunucusuna binlerce yanıt paketi gönderdiğini düşünelim.
Her yanıtta farklı bir işlem numarası olacaktır.
Kötü adamın gönderdiği paketlerden birisinin işlem numarasının tutma olasılığı yüksektir.
O zaman Microsoft’un DNS sunucusu bu yanıtı geçerli kabul edip hem sorana döndürecek hem de kaşesine yerleştirecektir.
Şimdi tekrar başa dönelim.
DNS sunucu üzerindeki “Secure cache againt pollution” (Kaşeyi kirlenmeye karşı koru) seçeneği işte bu türlü durumları engeller. Bu seçenek varsayılan olarak seçilidir. Bu durumda, DNS sunucu başka DNS sunuculardan gelen istekleri süzecek ve ek bilgileri göz ardı edecektir.