Anasayfa Makale DNSSEC Nedir? Neden Önemli?

DNSSEC Nedir? Neden Önemli?

DNSSEC nedir

Domain Name System Security Extensions (DNSSEC) Nedir? Bu makalemizde detaylı bir şekilde cevaplıyoruz.

DNS’nizin üzerine bir kimlik doğrulama katmanı ekleyen DNSSEC’yi yapılandırmak için önce Cloudflare kontrol panelinde etkinleştirmeniz ve ardından alan adı kayıt kuruluşunuza bir DS kaydı eklemeniz gerekiyor. Öte yandan alan adınız zaten Cloudflare’de ise bu özelliği etkinleştirmeniz yeterli. Peki Technopat olarak bizim de yakın zamanda devreye aldığımız güvenli DNS teknolojisi DNSSEC nasıl çalışıyor? Bu yazımızda bu iki sorunun cevabını vermekteyiz.

DNS nedir? DNS nasıl çalışır?

DNSSEC’i anlayabilmemiz için, önce DNS’nin ne olduğunu bilmeliyiz.

DNS, “Domain Name Server” kelimelerinin kısaltmasıdır. Kısaca DNS; alan adlarını, sitenin gerçek IP adresine çeviren bir sistemdir. DNS hakkında daha fazla bilgi sahibi olmak için DNS Nedir makalemizi okuyabilirsiniz.

İnternetin düzgün işleyişi kritik bir şekilde DNS’ye bağlıdır. Ziyaret edilen her web sayfası, gönderilen her e-posta, sosyal medyadan alınan her resim: tüm bu etkileşimler, insan dostu alan adlarını (technopat.net gibi ) internet üzerindeki trafiği uygun hedefe yönlendirmek için sunucular, yönlendiriciler ve diğer ağ cihazları tarafından ihtiyaç duyulan IP adreslerine (192.0.43.7 ve 2001:500:88:200::7 gibi) çevirmek için DNS kullanır.

İnterneti herhangi bir cihazda kullanmak DNS ile başlar. Örneğin, bir kullanıcının telefonundaki bir tarayıcıya bir web sitesi adı girdiğini düşünün. Tarayıcı, web sitesinin alan adını bir İnternet Protokolü (IP) adresine çevirme işlemine başlamak için cihazın işletim sisteminin bir parçası olan koçan çözümleyiciyi kullanır. Koçan çözümleyici (Stub Resolver), bir uygulamanın DNS verileri talebini özyinelemeli çözümleyici adı verilen daha karmaşık bir DNS istemcisine aktaran çok basit bir DNS istemcisidir. Birçok ağ operatörü ağlarındaki cihazlar tarafından gönderilen DNS isteklerini veya sorgularını işlemek için özyinelemeli çözümleyiciler çalıştırır. Daha küçük operatörler ve kuruluşlar bazen diğer ağlarda yinelemeli çözümleyiciler kullanır ki buna  Google Public DNS, OpenDNS ve Quad9 gibi halka hizmet olarak çalıştırılan yinelemeli çözümleyiciler de dahildir.

Özyinelemeli çözümleyici, koçan çözümleyici tarafından gönderilen DNS sorgusunun yanıtını izler veya çözer. Bu çözümleme işlemi, özyinelemeli çözümleyicinin kendi DNS sorgularını, genellikle birden çok farklı yetkili ad sunucusuna göndermesini gerektirir. Her alan adı için DNS verileri, İnternet üzerinde herhangi bir yerde yetkili bir ad sunucusunda depolanır. Bir etki alanı için DNS verilerine bölge (zone) adı verilir. Bazı kuruluşlar, bölgelerini yayınlamak için kendi ad sunucularını kullanır, ancak genellikle kuruluşlar bu işlevi üçüncü taraflara dış kaynak olarak kullanır. Kayıt şirketleri, kayıt otoriteleri, web barındırma şirketleri, ağ sunucusu sağlayıcıları dahil olmak üzere, DNS bölgelerini başkaları adına barındıran farklı kuruluş türleri vardır.

Örneğin, google.com alan adı için hayali bir bölge grafiği yapalım.

DNSSEC nedir
“google.com” için hayali bir bölge grafiği.

 

DNS neden güvenli değil?

DNS, 1980’li yıllarda tasarlanan bir sistem. O zamanlar Internet günümüze göre çok daha küçüktü ve DNS sistemi, güvenlik ön planda tutularak tasarlanmadı. Sonuç olarak, özyinelemeli bir çözümleyici yetkili bir ad sunucusuna bir sorgu gönderdiğinde, çözümleyicinin yanıtın gerçekliğini doğrulamanın bir yolu yok. Çözümleyici, yalnızca orijinal sorguyu gönderdiği aynı IP adresinden bir yanıt gelip gelmediğini kontrol edebilir. Ancak, bir yanıtın kaynak IP adresine güvenmek, güçlü bir kimlik doğrulama mekanizması değildir, çünkü bir DNS yanıt paketinin kaynak IP adresi kolayca taklit edilebilir veya sahte olabilir. DNS’nin orijinal olarak tasarlandığı şekilde bir çözümleyici, sorgularından birine verilen sahte bir yanıtı kolayca tespit edemez. Bir saldırgan, yetkili sunucudan gelen bir yanıtı taklit ederek çözümleyicinin orijinal olarak sorguladığı yetkili sunucuymuş gibi gözükebilir.Başka bir deyişle, bir saldırgan, bir kullanıcıyı potansiyel olarak kötü niyetli bir siteye, kullanıcı farkına varmadan yeniden yönlendirebilir.

DNSSEC nedir? DNSSEC neden önemli?

Bir diğer DNS açığı ise çözücüler hakkında. Çözücüler, yetkili nameserver’lardan aldıkları sitenin ana sunucusu hakkındaki bilgileri, alan adı bilgisini daha hızlı çözebilmek adına önbellekte depolarlar. Bir koçan çözücü, özyinelemeli çözümleyicinin önbelleğinde bulunan DNS verilerini sorarsa, özyinelemeli çözümleyici, ilk olarak bir veya daha fazla yetkili sunucuyu sorgulamanın getirdiği gecikme olmadan hemen yanıtlayabilir. Öte yandan bu önbelleğe almanın bir dezavantajı var: Eğer bir saldırgan, çözücü tarafından onaylanan sahte bir DNS yanıtı verirse, bir “DNS önbellek zehirlenmesi” (DNS cache poisoning) saldırısı gerçekleştirmiş olur ve çözücü, sorgu gönderen diğer cihazları da kötü amaçlı kişinin kurmuş olduğu sayfaya yönlendirir.

Bu saldırıların bir banka sitesine gerçekleştirildiğini göz önüne alalım. Bir kullanıcı, sakin bir şekilde banka sitesine girip işlem yapmak istiyor. Fakat o da ne; bankamız DNSSEC kullanmadığı için kötü amaçlı bir kişi, “DNS önbellek zehirlenmesi” tekniği ile o bankanın sitesine girmek isteyen kişileri, o kişilerin haberi olmadan kendi sitesine çekiyor! Kullanıcılar, bilgilerini girerek işlem yapmak istiyorlar ve işlemlerinin yapılamadığı hakkında bir hata ile karşılaşıyorlar. Maalesef kullanıcılarımızın verileri çoktan kötü amaçlı kişilerin eline geçmiş oldu.

DNSSEC nedir?

Açılımı “DNS Security Extensions” olan DNSSEC, az önceki gördüğümüz senaryo gibi senaryoların önlenmesi amacıyla, IETF tarafınca bulundu. İsminden de anlaşıldığı üzere, bu sefer asıl amaç güvenlik olarak belirlendi ve 90’lı yıllarda çalışmalara başlandı.

DNSSEC, açık anahtar şifrelemesine dayalı dijital imzalar kullanarak DNS’deki kimlik doğrulamasını güçlendiriyor. DNSSEC ile, kriptografik olarak imzalanan DNS sorguları ve yanıtları değildir, bunun yerine DNS verilerinin kendisi veri sahibi tarafından imzalanır.

DNSSEC’te, her DNS bölgesinin açık/gizli anahtar eşleşmesi bulunmaktadır. Bölge yöneticisi, bölgenin özel anahtarını (private key) kullanarak bölgedeki DNS verisini imzalar ve o verinin üzerinde dijital imza oluşturur. Özel anahtar, bölge sahibi tarafınca gizli tutulur. Fakat açık anahtar (public key), erişen herkesin erişimine açıktır. Herhangi bir çözücü eğer o bölgede DNS sorgusu yaparsa, o da açık anahtarı döndürecektir ve bu bilgi de DNS verisinin doğrulanmasında kullanılacaktır. Eğer anahtar geçerli ise, DNS verisi de geçerli demektir ve kullanıcıya DNS verisi geri döndürülür. Değilse de, kullanıcıya hata mesajı gösterilir ve bağlantı otomatik olarak kesilir.

DNSSEC, DNS protokolüne 2 adet önemli özellik ekler:

  • Çözücü, verinin geldiği yeri kriptografik şifre ile doğrular. Eğer şifre geçerli değil ise sunucu ile bağlantıyı keser. Buna “Data Origin Authentication” (Veri Kaynağı Doğrulaması) denmektedir.
  • “Data integrity protection” (Veri İçeriği Koruması) ile de çözücü, gelen verinin gelirken değiştirilmediğini ve bölgenin özel şifresi ile şifrelendiğini bilir.

DNSSEC nedir?

DNSSEC anahtarlarına güvenilir mi?

Her bölgenin kendine has bir anahtarı var ve bu anahtar aracılığı ile de çözücü, o bölgenin verisini doğrulamakta. Fakat çözücü, bu anahtarın güvenilir olduğunu nasıl anlıyor?

Bir bölgenin açık anahtarı imzalıdır. Ancak açık anahtar, bölgenin gizli anahtarıyla değil, bir üst bölgenin (parent zone) gizli anahtarı ile imzalıdır. Örnek verecek olursak, “technopat.net” adresinin açık anahtarı, “.net” üst bölgesi tarafınca şifrelenir. Her bölgenin şifrelemesi, bir üst bölge tarafından yapılır fakat sadece kök bölgenin (root zone) şifrelemesi yapılamaz, çünkü herhangi bir üst bölgesi bulunmamakta.

Kök bölgesinin açık anahtarı, DNS verisini doğrulamak adına önemli bir nokta. Eğer bir çözücü, kök bölgesinin açık anahtarına güveniyorsa, kök bölge tarafından imzalanan diğer anahtarlara da güvenecektir, az önceki örneğimizdeki “.net” alt bölgesi gibi. Ve eğer “.net” alt bölgesine güvenilirse de “technopat.net” alt bölgesine de güvenilecektir.

Bu tarz zincirleme imzalamalara güven zinciri (chain of trust), bu zincirin başındaki anahtara ise dayanak noktası (trust anchor) denmektedir. Bir çözücüde, dayanak noktası listesi bulunmaktadır. Bu dayanak noktaları ise farklı farklı bölgeler için çözücünün güvendiği açık anahtarlardır. Çoğu çözücü sadece bir adet dayanak noktasına göre konfigüre edilmiştir; o da kök bölgenin açık anahtarıdır.

DNS hiyerarşisinin en üstündeki kök bölgesinin anahtarına güvenerek; çözücü, tüm bölgeler imzalı olduğu sürece DNS alan adındaki her lokasyona güvenlik zinciri oluşturabilir.

DNSSEC ile doğrulama ve imzalama

Internet’in yaygın bir güvenliğe sahip olması adına, DNSSEC’in de yaygınlaşması gerekiyor. DNSSEC otomatik değil; çalışması için operatörlerin özyinelemeli çözümleyicilerinde ve bölgelerinin yetkili nameserver’larında aktifleştirilmesi gerekli. Çözücü ve yetkili nameserver operatörlerinin, DNSSEC’i aktifleştirmek için farklı farklı teşvikleri var. Fakat bu operatörler DNSSEC’i açtıkları zaman, daha fazla kullanıcı, aldıkları cevabın doğrulanmış olduğunu ve hedef adrese yönlendirildiklerini bilecek.

DNSSEC doğrulamasını özyinelemeli çözücülerde açmak çok kolay. Aslında, çoğu yaygın çözücüde DNSSEC özelliği yıllardır bulunmakta. Çözücünün konfigürasyon dosyasında yapılacak olan bir kaç satır değişiklik ile DNSSEC ayarı aktif edilebilmekte. Aktivasyon işleminden sonra; bir kullanıcı, çözücüye imzalı bir bölgeden gelen kurcalanmış veri hakkında sorgu yaptığı zaman, kullanıcı yanıt almayacaktır, çünkü DNSSEC bu kurcalanmış veriyi kötü amaçlı olarak algılar ve kullanıcıyı korur.

DNSSEC ile bölgelerin DNS bilgilerini imzalamak birkaç adım sürer, ancak DNS bilgisini imzalayan milyonlarca bölge vardır, böylece kullanıcılar, güvenilir DNS verisine ulaştıklarına emin olurlar. Neredeyse tüm bilinen yetkili nameserver kontrol yazılımları bölge imzalamayı destekliyor ve ayrıca çoğu üçüncü parti DNS sağlayıcıları da DNSSEC’i destekliyor. Hosting sağlayıcısı için DNSSEC’i aktif hale getirmek çok kolaydır; genellikle sadece bir ayarı işaretlemekten biraz daha fazla sürer. Örneğin Cloudflare’de tek yapmanız gereken bir tuşa basmak.

Cloudlflare DNSSEC
Cloudlflare ile tek adımda DNSSEC devreye alınabiliyor.

Bölge sahibi; DNSSEC’i bölgesinde desteklemesi için, kendi bölgesinden kök bölgeye kadar olan tüm bölgeleri DNSSEC’in çalışması için imzalamalıdır. Böylelikle, sözünü ettiğimiz güvenlik zinciri (chain of trust) oluşacaktır. Örneğin, “technopat.net” bölgesinin DNSSEC ile çalışabilmesi için “.net” bölgesinin de DNSSEC imzasına sahip olması gerekli, ve “.net” bölgesinin de kök bölge tarafından imzalanması gerekli. DNS kök bölgesi, 2010 yılından beri DNSSEC imzasına sahip, ve tüm gTLD’ler (.com, .net gibi) ve çoğu ccTLD’ler (.tr, .de gibi) de bu vesile ile DNSSEC imzasına sahip.

Belirli bir bölgede DNSSEC’e sahip olmak için son bir adım olarak, yeni imzalanan bölgenin açık anahtarının bir üst bölgeye gönderilmesi kaldı. Böylece üst bölgemiz, yeni bölgemizin açık anahtarını imzalayacaktır ve güvenlik zinciri oluşacaktır.

Bugünlerde bölge sahibi, genellikle bölgenin açık anahtarını üst bölge ile elle senkronize etmeli. Çoğu durumda bu senkronizasyon işlemi, bölge sahibinin kayıtçısı (registrar) tarafından yapılmaktadır. Bölge sahibinin, kayıtçısı ile bölge hakkında başka konularda değişiklik yapması gibi (örneğin yetkili nameserver listesini düzenlemesi), DNSSEC açık anahtarları hususunda da kayıtçısı ile iletişime geçmesi gereklidir. Yakın zamanda geliştirilen yeni protokoller ile birlikte artık bu işlemin de otomatikleştirilmesi beklenmektedir.

DNSSEC’in geleceği; sonraki adımlar

DNSSEC’in Internet üzerindeki yeri arttığı sürece; DNS, veriyi güvenle saklama odaklı protokollerin merkezi haline gelecektir. DNSSEC tabanlı yeni protokoller çoktan geliştirildi ve bu protokoller sadece imzalı bölgelerde çalıştırılabilmekte. Örneğin, “Adlandırılmış Varlıkların DNS Tabanlı Kimlik Doğrulaması” (DNS-based authentication of Named Entities) anlamına gelen DANE protokolü, TLS anahtarlarının mail transferi gibi uygulamaların kullanıldığı bölgelerde yayınlanmasını sağlıyor. DANE protokolü, sertifika sahiplerine dayanmadan açık anahtarların doğrulanmasını mümkün kılıyor. DANE protokolü ile DNS sorgularına gelecekte daha fazla gizlilik eklenmesi bekleniyor.

2018 yılında ICANN, ilk defa DNSSEC’in dayanak noktasını değiştirdi ve bu sayede DNSSEC hakkında bazı dersler çıkarıldı. Bu işlem sonrasında çözücü operatörleri, DNSSEC’in daha da farkına vardılar ve DNSSEC ile doğrulamayı aktif hale getirdiler.

İlerleyen yıllarda DNSSEC’in operatörler ve bölge sahipleri tarafından daha yaygın hale gelmesi düşünülüyor. Bu sayede, daha fazla kişinin DNSSEC’in güçlü güvenlik özelliklerinden faydalanıp, daha az kişinin mağdur olacağı öngörülüyor.

Özet

DNSSEC, yaşadığımız çağ içerisinde bilgi güvenliği adına atılmış çok önemli bir adım. Özellikle neredeyse her şeyin Internet ile yapıldığı çağımızda, “DNS Spoofing” gibi atak teknikleri büyük bir risk arz ediyordu ve DNSSEC ile bunun önüne geçildi.