Anasayfa » DNS Şifreleme

DNS Şifreleme

DNS İsteği Neden Şifrelenir?

Bu yazımızda bazı DNS şifreleme yöntemlerine değinerek bunların nasıl çalıştığını açıkladık.

Alan Adı Sistemi olarak adlandırılan DNS, çıktığı tarihten itibaren açık metin olarak kullanılmaktadır. Bu durum; DNS sorgularının ve yanıtlarının şifrelenmediği ve kolayca dinlenebildiği anlamına gelir. Böylelikle kötü niyetli veya yetkisiz kişilerin, kullanıcıların browser üzerinde yaptığı sorguları okuyabilmesine ve analiz edebilmesine mümkün kılar.

DNS trafiğinin şifrelenmesi, veri güvenliğini artırmanın yanı sıra kullanıcı gizliliğini de korur. Şifrelenmiş DNS trafiği, üçüncü şahısların kullanıcıların internet aktivitelerini izlemesini veya bu verileri kötüye kullanmasını engeller. Bununla birlikte kullanıcının aktiviteleri ISP ve diğer ağ gözlemcilerinden de saklanır.

DNS istek ve cevaplarını incelemek amacıyla yapılan bazı önemli çalışmalar bulunmaktadır. Bunlar DNSCurve, DNSCrypt, Confidential DNS ve IPSECA olarak sıralanabilir.

DNS trafiğini şifrelemek önemli bir adım olsa da, DNS proxy kullanmak ek güvenlik ve kontrol imkanları sunar. Tek başına şifreleme, çoğu zaman tam güvenlik sağlamaz. DNS adresini proxy etmek izlenebilirliği azaltıp anonimlik sağladığı gibi bazı saldırılara karşı da ek koruma sağlar.

DNS Trafiğini Yetkisiz Dinleme

DNS Şifreleme Yöntemleri

1. DNS-over-HTTPS (DoH)

DNS üzerinden HTTPS (DoH), DNS sorgularını HTTPS protokolü kullanarak şifreleyen bir yöntemdir(HTTP+TLS). Bu, DNS trafiğinin web tarayıcıları ile web sunucuları arasındaki HTTPS trafiğinden ayırt edilemez hale gelmesini sağlar. Esnek ve uygulama katmanında web tarayıcıları ile entegre olması nedeniyle, kullanıcılar tarafından daha yaygın olarak tercih edilebilir.

A DoH client encodes a single DNS query into an HTTP request using either the HTTP GET or POST method and the other requirements of this section.

RFC 8484 – DNS Queries over HTTPS (DoH)

DNS-over HTTPS yöntemi ile şifrelenen DNS sorguları, GET ve POST örnekleriyle aşağıda gösterilmiştir.

“www.example.com” için gönderilen örnek GET isteği:


:method = GET
:scheme = https
:authority = dnsserver.example.net
:path = /dns-query?dns=AAABAAABAAAAAAAAA3d3dwdleGFtcGxlA2NvbQAAAQAB
accept = application/dns-message

“www.example.com” için gönderilen örnek POST isteği:


:method = POST
:scheme = https
:authority = dnsserver.example.net
:path = /dns-query
accept = application/dns-message
content-type = application/dns-message
content-length = 33

<33 byte lık DNS mesajı> /UDP ile iletilen DNS mesajı maksimum 65635 byte ile sınırlıdır.

2. DNS-over-TLS (DoT)

DNS içeriğini şifrelemek için kullanılan bir diğer şifreleme türü de DNS over TLS dir. DoT, TLS katmanını kullanarak doğrudan şifreleme gerçekleştirir. TLS, HTTP’nin alt katmanında çalışan bir güvenlik protokolüdür. Bu sayede, DoT, DNS trafiğini daha doğru ve verimli bir şekilde şifreleyebilir.

DNS over TLS’yi destekleyen, DNS iletişiminde varsayılan olarak 853 numaralı port kullanılmaktadır ve bu portta TCP bağlantıları oluşturularak DNS iletişimi şifreli yapılır. Ancak sunucu ve istemci ayarlamaları yapılarak başka bir port kullanılabilir.

DNS protokolü varsayılan olarak 53 numaralı port üzerinden açık metin olarak iletişim kurar. Eğer bu port üzerinden hem şifrelenmiş hem de açık metin DNS iletişimi kurulursa, istemci ve sunucular hangi trafiğin şifreli hangisinin açık metin olduğunu karıştırabileceği gibi sürüm düşürme saldırılarına da zemin hazırlar.

DNS over TLS (DoT), TCP üzerinden bir DNS bağlantısı kurulduğunda önce bir TLS handshake gerçekleştirir. Bu iletişimi güvenli hale getirir. İstemci, isteğe bağlı olarak sunucuyu doğrulamaktadır. Daha sonra TLS bağlantısı şifrelenir ve eavesdropping’e karşı korunur. Mesajlar, iki oktetlik uzunluk alanı kullanılarak iletilir. Gecikmeyi azaltmak amacıyla istemciler, birden fazla sorguyu ardı ardına gönderebilir (pipelining), ancak gelen yanıtlar sırasız geldiğinde her sorgu için Message ID kullanılır.

3. DNS-over-QUIC (DoQ)

QUIC, HTTP/3 ile benzer şekilde çoklu akış desteği sunan bir protokoldür. DNS üzerinden QUIC (DoQ), her bir akışta tek bir DNS sorgusuna izin verir ve böylelikle DNS pipelining sağlanır. QUIC, istemci adresi değişikliklerinde bağlantıyı kesmeden devam ettirebilir, bu da mobil cihazlar için avantaj sağlar. QUIC, kullanıcı düzeyinde kontrol sağladığı için TCP’ye alternatif bir protokol olarak düşünülse de, özellikle RPC gibi alanlarda tamamlayıcı bir rol oynar. Ancak, DNS alan transferleri gibi sunucular arası işlemler için ne kadar faydalı olduğu belirsizdir.

DNS over Quick için bağlantısında, TCP’nin aksine yalnızca tek bir el sıkışma (handshake) kullanır. Bu süreç, hem bağlantı kurmayı hem de güvenli TLS oturumunu başlatmayı içerir. adımlarının nasıl gerçekleştiği aşağıda açıklanmıştır:

  • İstemci Başlatma: İstemci, QUIC bağlantısını başlatır ve aynı anda TLS 1.3 el sıkışma mesajlarını sunucuya gönderir. Bu mesajlar, istemcinin DNS sunucusuna sorgu göndermek istediğini belirtir.
  • TLS 1.3 El Sıkışma: Sunucu, TLS sertifikasını gönderir ve istemcinin kimliğini doğrular. El sıkışma sırasında şifreleme anahtarları değiş tokuş edilir ve tüm veri iletişimi şifreli hale gelir.
  • Bağlantı Onayı: El sıkışma işlemi başarıyla tamamlandığında, istemci ve sunucu arasında güvenli bir QUIC bağlantısı kurulmuş olur. Bu noktadan itibaren veri iletişimi başlar.

Verilerin iletimi kısmında ise QUIC bağlantısı üzerinden DNS sunucusuna bir DNS sorgusu gönderir. Bu sorgu, QUIC’in stream mekanizmasını kullanarak gönderilir.Her bir DNS sorgusu ve yanıtı, farklı stram yani akışlarla taşınabilir. QUIC sorgularının birbirinden bağımsız olmasının nedeni de budur. Bir sorgunun yanıtı gecikse bile diğer sorgular etkilenmez. QUIC, paket kaybı durumunda yalnızca kaybolan paketi yeniden iletir ve bu da TCP’nin “head-of-line blocking” sorununu çözer. (Head-of-line-blocking, ilk sıradaki paketin kaybolmasıyla tüm paketlerin beklemesi olayıdır.) Bu, daha hızlı ve verimli bir veri iletimi sağlar.

Karşılaştırma

ÖzellikDoH (DNS over HTTPS)DoT (DNS over TLS)DoQ (DNS over QUIC)
Temel ProtokolHTTPSTLSQUIC
ŞifrelemeTLSTLSQUIC’in Yerleşik Şifreleme Özelliği
MultiplexingYokYokVar
Bağlantı YönetimiHTTP/1.1 veya HTTP/2TLSQUIC
PerformansHTTP/2 ile, İyiTLS ile, İyiQUIC Multiplexing ve 0-RTT ile, Çok İyi
GizlilikDNS Sorgularını Şifreleyerek GizlerDNS Sorgularını Şifreleyerek GizlerDNS Sorgularını Şifreleyerek Gizler
UygulamaHTTPS yaygın olarak kullanıldığı için kolayHTTPS’ye benzer, TLS gerektirirDaha karmaşıktır, QUIC desteği gerektirir
Kullanım YaygınlığıEn yaygın kullanılan yöntemDaha az yaygınDaha yeni, daha az desteklenen

Kaynak

Kaynak olarak kullandığım RFC dökümanlarını aşağıda yer alan linklerden inceleyebilirsiniz.

  • RFC 8484: “DNS Queries over HTTPS (DoH)”
  • RFC 7858: “Specification for DNS over Transport Layer Security (TLS)”
  • RFC 9250: “DNS over Dedicated QUIC Connections”

Diğer yazılarıma ulaşmak için buraya tıklayabilirsiniz.

Erkan Çekiç

Merhaba. Henüz çocukluk dönemimde yanmaya başlayan siber güvenlik ateşini lise ve üniversite dönemlerinde de harlayan, zamanının büyük bir bölümünü çalışmak ve bir şeyler üretmek üzerine kullanan biriyim.

More Reading

Post navigation

Leave a Comment

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir