Site açılmıyor, ama web sunucusu tarafından değil. Kendi sunucunuzdaki dig doğru yanıt veriyor, ancak dışarıdan SERVFAIL alıyorsunuz ve Apache veya Nginx'te hiçbir log yok. Bu kalıbı gördüyseniz ve yakın zamanda alan adında DNSSEC'i etkinleştirdiyseniz, büyük olasılıkla güven zinciri bir yerde kırılmıştır, sunucunuz bozulmuş değildir.
DNSSEC, çözümleyicinin DNS'ten aldığı yanıtın değiştirilmediğinden emin olmasını sağlayan bir dizi imzalı kayıttır. Onsuz, yoldaki herhangi biri yanıtı değiştirip kullanıcıyı kendi IP'sine yönlendirebilir. Onunla, yanıt ya geçerlidir ya da hiç kabul edilmez. İşi zorlaştıran da bu "ya da hiç kabul edilmez" kısmıdır.
DNS sahtekarlığı saldırısı pratikte nasıl görünür
Diyelim ki saldırgan kullanıcı ile çözümleyici arasındaki yolda oturuyor. Kullanıcı bank.example.ir sorguluyor, saldırgan yüksek TTL'li sahte bir yanıt gönderip kendi sunucusunun IP'sini yerine koyuyor. Kullanıcı geçerli bir SSL sertifikası da görür, çünkü saldırgan DNS kontrolünü ele geçirirse aynı alan adı için geçerli bir CA'dan sertifika alabilir. Burada olağan güvenlik araçlarının hiçbiri bir şey göstermez.
DNSSEC bunu dijital imza ile kapatır. Her kayıt, zone'un özel anahtarıyla imzalanır ve çözümleyici, üst öğesinden aldığı genel anahtarla imzayı doğrular. İmza tutmazsa, yanıt atılır.
Güven zinciri nereden başlar
Kökten. DNS kökü TLD'nin genel anahtarını imzalar, TLD sizin alan adınızın anahtarını ve alan adınız kendi kayıtlarını. Bu zincir, üst öğedeki DS kaydıyla düğümlenir. O DS kaydı yanlışsa veya silinirse, tüm zincir kırılır ve doğrulama yapan çözümleyiciler yanıtınızı reddeder.
Kurulum: anahtar üretiminden DS yayınına
BIND kullanıyorsanız, iş sırası önemlidir. Önce anahtarları oluşturun, sonra zone'u imzalayın, sonra DS'yi kayıt kuruluşuna verin. Zone hazır olmadan DS'yi yayınlarsanız, site tüm doğrulama yapan çözümleyiciler için kaybolur.
dnssec-keygen -a ECDSAP256SHA256 -f KSK example.ir
dnssec-keygen -a ECDSAP256SHA256 example.ir
dnssec-signzone -o example.ir -k Kexample.ir.+013+12345 db.example.ir
dnssec-signzone çıktısı, önceki dosyanın yerini alması gereken imzalı bir zone dosyasıdır. RRSIG ve DNSKEY kayıtları otomatik olarak eklenir. Şimdi dig ile kontrol edin:
dig +dnssec example.ir A @1.1.1.1
dig DS example.ir @a.root-servers.net
İlk yanıtta RRSIG ve başlık bölümünde ad bayrağını görmelisiniz. ad gelmezse, doğrulama reddedilmiştir. İkinci yanıtta doğru algoritma ve hash ile DS kaydı olmalıdır.
DS kaydını manuel olarak kontrol edin
Kayıt kuruluşları burada çok hata yapar. DS değeri, dnssec-dsfromkey çıktısıyla tam olarak eşleşmelidir. Bir karakterin yeri değişirse tam başarısızlık demektir. Hızlı kontrol için DNS ve ağ kontrol araçlarını kullanın ve sonucu yerel çıktıyla karşılaştırın.
Burada hata yapıyorlar: yenilenmiş anahtar ve kaybolan site
Gördüğüm en yaygın felaket şu: ekip DNSSEC'i etkinleştirir, her şey çalışır ve altı ay sonra site bir gecede erişilemez hale gelir. Sebep? RRSIG imzasının süresi dolmuştur ve kimse zone'u yeniden imzalamamıştır.
Belirtisi şudur: site bazı ağlardan açılır, bazılarından açılmaz. Farklı ISS'lerdeki kullanıcılar farklı davranışlar görür. Kendi sunucunuzdaki dig sağlıklıdır, ancak dig @8.8.8.8 SERVFAIL yanıtı verir. Çözümleyici loguna bakarsanız, signature expired veya no valid RRSIG mesajını görürsünüz. Burada kimse DNS'ten şüphelenmez, çünkü "dün çalışıyordu".
Yapısal çözüm otomatik imzalamadır. BIND 9.16 ve sonrası bunu dnssec-policy ile yapar:
dnssec-policy default {
keys {
ksk lifetime P1Y algorithm ECDSAP256SHA256;
zsk lifetime P3M algorithm ECDSAP256SHA256;
};
};
Bu ayarla BIND anahtarları kendisi döndürür ve zone'u yeniden imzalar. Ancak bununla bile uyarı vermelisiniz. RRSIG son kullanma tarihine basit bir izleyici koyun ve yedi günden az kaldıysa uyarı alın.
DNSSEC'in gerçek maliyeti: paneldeki bir tik işaretinden büyük
DNSSEC ücretsiz değildir, para ödemeseniz bile. Maliyeti zaman ve operasyonel karmaşıklıktır. Üç şeyi kabul etmelisiniz:
- DNS yanıtları büyür. İmzalı bir yanıt 512 baytı aşabilir ve TCP veya EDNS0 gerektirebilir. Güvenlik duvarınız UDP fragment'ları düşürüyorsa, site bazı kullanıcılar için açılmaz.
- Her kayıt değişikliği yeniden imzalanmalıdır. Zone'u manuel imzalıyorsanız, bu her dağıtımda ekstra bir adımdır.
- Hatalar acımasızdır. DNS'te yanlış bir kayıt genellikle "o alt alan adı çalışmıyor" demektir. DNSSEC ile "tüm alan adı çalışmıyor" demektir.
Ekibiniz tek kişiyse ve DNS'i manuel yönetiyorsa, önerim şudur: otomatik imzalama ve son kullanma izlemesi olana kadar DNSSEC'i etkinleştirmeyin. Kayıt kuruluşunuz otomatik imzalama sunuyorsa ve son kullanma uyarısı ayarlayabiliyorsanız, etkinleştirin. Bankacılık siteleri, ödeme veya DNS sahtekarlığının doğrudan zarar verdiği her yer için DNSSEC zorunludur.
Sağlık kontrolü ve sürekli izleme
Kurulumdan sonra üç şeyi düzenli olarak kontrol edin. Birincisi, birkaç genel çözümleyiciden doğrulama:
dig +dnssec +multi example.ir @8.8.8.8
dig +dnssec +multi example.ir @9.9.9.9
dig +trace example.ir
İkincisi, imzaların son kullanma tarihi. dig +dnssec ile RRSIG değeri son kullanma zamanını içerir. Üçüncüsü, altyapı servislerinin durumu. DNS kendi sunucunuzda barındırılıyorsa, anlık servis durumu ve servis seviyesi ve çalışma süresi konularını ihmal etmeyin, çünkü istikrarsız DNS üzerindeki DNSSEC hatayı yalnızca daha hızlı gösterir.
Pratik bir not: ana alan adında etkinleştirmeden önce, önemsiz bir alt alan adında test edin. Tüm döngüyü bir kez tam olarak çalıştırın, DS yayını ve ad kontrolü dahil. Orada çalışırsa, ana alan adında da çalışır.
DNS barındırmayı birine devrediyorsanız, otomatik imzalama ve son kullanma uyarısı olduğundan emin olun. ServerNet sunucu güvenlik hizmetleri bu katmanı kapsar, ancak yönetilen barındırmayla bile DS'nin nereye kaydedildiğini ve anahtar döndürmeden kimin sorumlu olduğunu bilmelisiniz.
Sık sorulan sorular
DNSSEC DDoS saldırısını engeller mi?
Hayır. DNSSEC yalnızca DNS yanıtının özgünlüğünü ve bütünlüğünü garanti eder ve trafik hacmiyle hiçbir ilgisi yoktur. Saldırı hacmiyle başa çıkmak için diğer katmanlara ihtiyacınız vardır; DDoS koruması ayrı bir konudur. Hatta DNSSEC'in bazı senaryolarda yükü artırdığı söylenebilir, çünkü yanıtlar büyür ve TCP istekleri artar.
DNSSEC'i yanlış yapılandırırsam ne olur?
Site, doğrulama yapan tüm çözümleyiciler için erişilemez hale gelir. Buna Google DNS, Cloudflare ve büyük ISS'lerin çoğu dahildir. Doğrulama yapmayan çözümleyici kullanan kullanıcılar siteyi görebilir, bu da teşhisi zorlaştırır. Hızlı geri dönüş kabiliyetiniz olsun: üst öğeden DS kaydını kaldırmak zinciri keser ve genellikle sorunu birkaç saat içinde çözer.
DNSSEC'in alan adımda doğru çalıştığını nasıl anlarım?
dig +dnssec example.ir @1.1.1.1 ile ve yanıt başlığındaki ad bayrağını kontrol ederek. ad varsa, doğrulama başarılıdır. SERVFAIL alırsanız, zincir kırılmıştır. Daha ayrıntılı kontrol için, üst öğedeki DS kaydını dnssec-dsfromkey çıktısıyla karşılaştırın ve RRSIG son kullanma tarihini kontrol edin.
DNSSEC'i etkinleştirmek site hızını düşürür mü?
Sayfa yükleme hızına etkisi ihmal edilebilir düzeydedir, çünkü DNS her oturumda yalnızca bir kez çözümlenir. Ancak büyük yanıtlar düşük MTU'lu ağlarda yeniden deneme ve gecikmeye neden olabilir. Kullanıcılarınız zayıf mobil ağlardaysa, bunu testte hesaba katın. Gerçek sayı genellikle birkaç milisaniyedir, daha fazla değil.
Her şeyden önce, bugün alan adınızın RRSIG son kullanma tarihini kontrol edin. İki haftadan az kaldıysa ve otomatik imzalamanız yoksa, yapmanız gereken tek şey budur.
Yorumlar 0
Henüz yorum yok — ilk siz olun!