DNSSEC Kurulumu: Alan Adınızı DNS Sahteciliğinden Korumak
DNSSEC Kurulumu: Alan Adınızı DNS Sahteciliğinden Korumak
Giriş
Alan adınızın DNS kayıtları, web sitenizin ve e-posta altyapınızın temel taşlarını oluşturur. Ancak DNS trafiği imza veya şifre ile korunmadığı sürece DNS yanıtları, ortadaki adam (MITM) saldırıları veya DNS sahteciliği (cache poisoning) ile manipüle edilebilir. DNSSEC (Domain Name System Security Extensions), DNS kayıtlarını dijital imza ile imzalayarak bu tehditleri önler. DNSSEC etkinleştirdiğinizde, resolver’lar (DNS sorgu yapan sunucular) her DNS yanıtının bütünlüğünü ve kaynağını doğrular, böylece kullanıcılarınızın doğru IP’ye yönlenmesi garanti altına alınır.
DNSSEC’in Temel Kavramları ve Bileşenleri
DNSSEC, iki ana anahtar çifti kullanır: Zone Signing Key (ZSK) ve Key Signing Key (KSK). ZSK, alan adınızdaki her bir DNS kaydını imzalamak için hızlı, kısa anahtar olarak görev yapar. KSK ise ZSK imzalarını imzalar ve böylece kök (parent) bölgedeki DS (Delegation Signer) kaydıyla ilişkilendirilir. ZSK ve KSK’ın imza süresi (TTL) ve yenileme periyotları genellikle farklıdır: ZSK daha sık, KSK daha seyrek değiştirilir. DNSSEC zinciri şöyle işler: Kök bölgeden (root zone) itibaren her parent bölge, child bölgeye ait KSK’nın hash’ini DS kaydı olarak tutar. Resolver, root’ta DS kaydını, child zondaki KSK DNSKEY kaydını, sonraki katmanda da ZSK imzalarını doğrular; son olarak kayıtlar üzerinde “RRset” imzasını kontrol eder. Bu zincir, en üstten en alta kadar kesintisiz bir doğrulama hattı oluşturur.
Ön Koşullar ve Ortam Hazırlığı
DNSSEC kurulumuna başlamadan önce; kullandığınız DNS sunucu yazılımının (BIND, Knot, PowerDNS, NSD, Unbound) DNSSEC’i tam desteklediğinden, sunucu saatinizin NTP ile senkronize olduğundan ve DNS yöneticisi (registrar) panelinizin DS kaydı eklemeye izin verdiğinden emin olun. Ayrıca DNS zone’unuzun TTL değerini (özellikle DNSKEY ve DS kayıtları için) düşük tutmak, değişiklik yayılımını hızlandırır. Başlangıçta 300 saniye, ilerleyen sürelerde 3600–86400 arasında değerlendirilebilir.
Adım 1: Anahtar Çifti Oluşturma
Örnek olarak BIND kullanıyorsanız, dnssec-keygen komutuyla KSK ve ZSK oluşturabilirsiniz:
cd /etc/bind/keys
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE example.com
# ZSK için
dnssec-keygen -a RSASHA256 -b 4096 -n ZONE -f KSK example.com
Komut sonucunda Kexample.com.+008+12345.key (DNSKEY kaydı) ve Kexample.com.+008+12345.private (özel anahtar) gibi dosyalar oluşur. KSK ve ZSK dosya adlarında +008+ algoritma numarasını; 12345 ise key tag’i temsil eder.
Adım 2: Zone Dosyasını İmzalama
Anahtarları oluşturduktan sonra, zone dosyanızı imzalamanız gerekiyor. BIND’de dnssec-signzone aracıyla:
dnssec-signzone -o example.com -k Kexample.com.+008+12345 example.com.zone Kexample.com.+008+67890
Bu komut, önce ZSK, sonra KSK ile example.com.zone.signed adında imzalı zone dosyası üretir. Dosyanın içinde DNSKEY, RRSIG, NSEC/NSEC3 ve diğer gerekli DNSSEC kayıtları yer alır. Eğer NSEC yerine NSEC3 kullanmak isterseniz, -3 parametresi ve tuz değeri ekleyebilirsiniz.
Adım 3: İmzalı Zone’u Yükleme
DNS sunucunuzun konfigürasyon dosyasında, orijinal zone yerine imzalı zone dosyasını gösterin:
zone “example.com” {
type master;
file “/etc/bind/keys/example.com.zone.signed”;
allow-query { any; };
…
dnssec-enable yes;
dnssec-validation yes;
};
Sunucuyu yeniden başlatın veya konfigürasyon yükleyin (rndc reload example.com). Bu aşamada hata alırsanız, named-checkzone ve named-checkconf ile zone yapılandırmasını doğrulayın.
Adım 4: DS Kaydını Registrara Bildirme
Kök ya da parent bölgedeki DS kaydının güncellenmesi için registrar panelinize gidin. KSK’a ait DS kaydını elde etmek için:
dnssec-dsfromkey Kexample.com.+008+12345.key
Çıktıda hem SHA-1 hem de SHA-256 hash’i göreceksiniz. Registrar’ın istediği hash algoritmasına göre (çoğu SHA-256 kullanır) DS kaydını ds parameter olarak girin. Kayıt başarıyla eklenince parent bölge DNSSEC zincirine dahil olur. Bu işlem DNS propagasyon süresine bağlı olarak 30–60 dakika sürebilir.
Adım 5: Doğrulama ve Test
DNSSEC’in doğru çalıştığını test etmek için çeşitli araçlar kullanabilirsiniz. Komut satırından:
dig +dnssec example.com A
dig +short example.com RRSIG
veya
delv example.com
delv (DNSSEC-aware dig) root’tan başlayarak tüm zinciri kontrol eder. Online testler için Verisign Labs DNSSEC Debugger, DNSViz veya DNSCheck araçlarını kullanabilirsiniz. Test sonuçlarında kırmızı hata veya uyarı çıkarsa; TTL, imza ömrü, NSEC/NSEC3 zinciri ve key tag uyuşmazlıklarına odaklanın.
Adım 6: Anahtar Rotasyonu ve Yenileme
Güvenlik gereği ZSK’ı 3–6 ayda, KSK’ı ise yılda bir kez değiştirmeniz önerilir. Rotasyon süreci:
- Yeni ZSK oluştur, eski ZSK ile birlikte zone’u imzala (double signing).
- Propagasyon sonrası eski ZSK’ı zone’dan çıkar, imzala.
- KSK için benzer adımları uygula; ancak registrar’da DS kaydını yenilemek için yeni KSK’ın hash’ini eklemelisin. Bu aşamada “double DS” yani eski ve yeni DS kayıtlarını bir süre parent bölgeye ekli tutmak, zincir kopmalarını önler. Tüm propagasyon tamamlandıktan sonra eski DS’leri kaldırabilirsin.
Yaygın Hata Senaryoları ve Çözüm Önerileri
• “Servfail” Yanıtı: Zone dosyasındaki imza geçerlilik süresi (expiration) geçmiş olabilir. RRSIG record’unu kontrol ederek TTL ve expiration tarihlerinin geçerli olduğundan emin olun.
• Key Tag Hatası: DNSKEY ve DS kayıtlarındaki key tag’ler uyuşmuyorsa, dnssec-keygen ile oluşturulan dosyalardaki tag’leri kontrol edin. Yanlış dosyayı DS’ye eklemek sıkça yapılan hatadır.
• NSEC Zinciri Bozulması: Eğer NSEC ile korunan bir zone’da kayıt silme veya ekleme sonrası imzalama atlanmışsa, zincir eksik kalır. dnssec-signzone otomatik tam zincir üretir; manuel düzenlemeye çalışmayın.
• Registrar Uyumsuzluğu: Bazı registrar’lar sadece belirli algoritmaları destekler veya DS düzeltmeleri 24–48 saati bulur. İlk adımdan önce teknik destekle kontrol edin.
DNSSEC ve DDoS Etkisi
DNSSEC imzaları, her DNS yanıtına ek veri eklediğinden paket boyutunu büyütür. Bu durum, DNS amplification (yönlendirme) saldırılarında yansıtma miktarını artırabilir. Bunu önlemek için:
- DNS sunucularınızı rate limiting ve response size limiting ile yapılandırın (BIND’de rate-limit direktifi).
- Anycast dağılımlı DNS mimarisi kullanarak DDoS yükünü bölgeye yayabilirsiniz.
- DNSSEC-validating resolver’ları network içinde konumlandırarak, external DDoS’dan etkilenen sunucuları shield edin.
Monitoring, Uyarı ve Sürekli Bakım
DNSSEC kurulumunu takiben imzaların süresi (TTL ve RRSIG expiration) yakından izlenmelidir. Cron job ile günlük delv testi çalıştırarak kritik hatalarda e-posta bildirimi alabilir veya Prometheus’un dnssec_exporter aracını kullanarak Grafana dashboard’unda görselleştirebilirsiniz. Ayrıca DNSKEY ve DS TTL’lerini izleyen script’ler, rotasyon zamanlarını kaçırmanızı engeller.
En İyi Uygulamalar
• Anahtar dosyalarını güvenli bir dizinde, sadece DNS yöneticisi kullanıcıları erişebilecek şekilde tutun (chmod 600).
• Anahtar ve zone yedeklerini, değişiklik öncesi snapshot’ları düzenli aralıklarla saklayın.
• NSEC3 kullanarak zone üzerinden yürütülen DNSSEC zone walking (tüm kayıt listesinin çıkarılması) saldırılarını zorlaştırın.
• Parent zone’un DNSSEC durumunu periyodik olarak kontrol edin; kök, TLD ve kendi zonda zincirin kopma olup olmadığını gözlemleyin.
• Anahtar rota işlemlerini bir playbook veya automation script’ine entegre ederek, manuel hataları en aza indirin.
Sonuç
DNSSEC, DNS altyapınızı DNS spoofing ve cache poisoning saldırılarına karşı korumanın en etkili yoludur. Zone Signing Key (ZSK) ve Key Signing Key (KSK) kavramlarını, DS zinciri kurulumunu, imzalama komutlarını ve rotasyon adımlarını doğru uygulayarak, alan adınızın bütünlüğünü ve güvenilirliğini uzun vadede koruyabilirsiniz. İzleme, otomasyon ve periyodik bakım ile DNSSEC zincirinin sürekli sağlıklı kalmasını sağlayın; böylece kullanıcılarınıza her zaman doğru içeriği, doğru IP’den ve güvenle ulaştırdığınızdan emin olun.