Ağ Güvenliğinde DNS over HTTPS Uygulaması
İnternet trafiğinin gizliliğini sağlamak için kullanılan DNS sorguları, şifrelenmediği için saldırıya açıktır. Bu güvenlik açığını kapatmanın en etkili yolu, DNS sorgularını HTTPS üzerinden şifreleyerek ileten DoH teknolojisidir.

DoH (DNS over HTTPS) Nedir?
Geleneksel DNS protokolü verileri şifrelemeden gönderdiği için güvenlik açığı oluşturur. İnternet servis sağlayıcıları bu açık metin üzerinden kullanıcı hareketlerini takip edebilir. DoH yapısı DNS sorgularını HTTPS protokolü içine alarak uçtan uca şifreleme sağlar ve izlenmeyi engeller.

DoH Neden Önemli?
Veri bütünlüğünü koruyan şifreli DNS yapıları spoofing tabanlı siber saldırıları etkisiz hale getirir. Şifreleme süreci bağlantı hızını düşürmediği gibi yanıt sürelerinde iyileşme sağlayabilir. Port 443 üzerinden iletilen trafik normal HTTPS akışıyla birleştiği için erişim engellerine karşı dirençlidir. Ağ performansı ve paket kaybı gibi metrikler iPerf üzerinden ağ hızı ve paketleri kullanılarak teknik olarak test edilebilir.
Teknik Tablo DoH Ve Standart DNS Karşılaştırması
Hangi teknolojinin size uygun olduğunu anlamak için aşağıdaki tablo verilerine göz atabilirsiniz. Standart ve şifreli protokol farkları bu teknik kıyaslamada açıkça sunulmuştur.
| Özellik | Geleneksel DNS | DNS over TLS (DoT) | DNS over HTTPS (DoH) |
| Port | 53 (UDP/TCP) | 853 (TCP) | 443 (TCP/HTTP) |
| Şifreleme | Yok | TLS | TLS (HTTPS üzerinden) |
| Görünürlük | Tamamen açık | Şifreli (ama porttan belli) | Normal web trafiğiyle aynı |
| Engellenebilirlik | Çok Kolay | Kolay (Port bazlı) | Çok Zor |
| Performans | Düşük Gecikme | TLS yükü var | HTTP/2-3 ve TLS yükü var |
Sunucu Yönetimi BIND9 İle Şifreli DNS Kurulumu
DoH işlevselliği için BIND9 sunucusunda libnghttp2 kütüphanesinin bulunması zorunludur. Altyapıdaki bu teknik hazırlık tamamlandıktan sonra servis ayarları güncellenerek güvenli internet trafiği yönetilmeye başlanabilir.
BIND9 Paketlerini Yükleyelim
Sistemi güncelleyip gerekli araçları kuralım
sudo apt update && sudo apt install bind9 bind9utilsSSL Sertifikası Alımı
HTTPS üzerinden hizmet verebilmek için geçerli bir sertifikaya ihtiyacımız var. Let’s Encrypt ile hızlıca ücretsiz sertifika oluşturabiliriz
sudo certbot certonly --standalone -d alanadiniz.comYapılandırma Dosyasını Düzenleyelim
named.conf.options dosyasını düzenleyerek TLS ve HTTP parametrelerini eklememiz gerekiyor.
sudo nano /etc/bind/named.conf.optionsDosya içeriğini şu şekilde yapılandıralım.
tls local-doh-tls {
cert-file "/etc/letsencrypt/live/alanadiniz.com/fullchain.pem";
key-file "/etc/letsencrypt/live/alanadiniz.com/privkey.pem";
};
http doh-endpoint {
endpoints { "/dns-query"; };
};
options {
directory "/var/cache/bind";
dnssec-validation auto;
auth-nxdomain no;
listen-on-v6 { any; };
forwarders {
1.1.1.1;
8.8.8.8;
};
# DoH Dinleyicisi
listen-on port 443 tls local-doh-tls http doh-endpoint { any; };
};Local Yapılandırma Dosyasını Düzenleyelim
Gerekli tanımlamaları yapmak için şu dosyayı açalım
sudo nano /etc/bind/named.conf.localİçerisine şu satırları ekleyelim.
zone "alanadiniz.com" {
type master;
file "/etc/bind/db.alanadiniz.com";
};Zone Dosyasını Oluşturalım
Alan adı kayıtlarını tutacağımız dosyayı hazırlayalım
sudo nano /etc/bind/db.alanadiniz.comArdından şu örnek verileri dosyaya aktaralım
$TTL 604800
@ IN SOA ns.alanadiniz.com. admin.alanadiniz.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns.alanadiniz.com.
ns IN A SUNUCU_IP_ADRESI
@ IN A SUNUCU_IP_ADRESIBIND9 Servisini Yeniden Başlatalım
Tüm yapılandırmayı tamamladıktan sonra değişikliklerin aktif olması için servisi baştan başlatalım
sudo systemctl restart bind9Nginx Ve Caddy İle Proxy Katmanı Yapılandırması
DNS sunucusunu doğrudan dış dünyaya açmak yerine bir Reverse Proxy kullanmak teknik avantajlar sağlar. Nginx 443 portunda gelen HTTPS isteklerini karşılar ve DNS paketini deşifre ederek arka plandaki standart DNS sunucusuna iletir.
Caddy ise sertifika yönetimini otomatik yaparak Layer 4 eklentisi ile DoT trafiğini port 853 üzerinde karşılayıp yerel sunucuya aktarabilir.
{
layer4 {
:853 {
@dot tls sni dns.example.com
route @dot {
proxy localhost:53
}
}
}
}Sık Sorulan Sorular
DNS over HTTPS ile DNS over TLS arasındaki fark nedir?
DoT trafiği ağda ayrı görünür. 853 portu açıkça bellidir. DoH ise 443 portunu kullanır ve web trafiğiyle aynı kanaldan geçer.
SSL işlemlerini neden proxy üzerinden yönetmeliyim?
BIND9 tek başına DoH hizmeti verebilir. Ancak SSL sertifikasını yönetmek için Nginx veya Caddy kullanmak işleri kolaylaştırır. 443 portu proxy tarafından karşılanır ve trafik BIND9’a iletilir.
Şifreli DNS kullanırken ISS neyi görebilir?
Şifreli DNS tam anonimlik sağlamaz. Sorgu içeriği gizlenir ama hedef IP bilgisi görünür kalır. Daha fazla gizlilik için VPN veya ek bir tünel gerekir.