Açık DNS alıcısı veya yetkili bir DNS sunucusu çalıştırıyor olsanız da, sorun aynıdır ve olası çözümlerin çoğu da aynıdır.
En iyi çözüm
DNS çerezleri , DNS sunucularına, istemcinin IP adresinin taklit edilmediğini kanıtlamak için istemcilerin bir çerez göndermelerini zorunlu kılma yollarını öneren bir standarttır. Bu, ilk arama için ek bir gidiş dönüş ücretine mal olacak ve bu, herhangi bir çözümün sunabileceği en düşük ek yük.
Eski müşteriler için geri dönüş
DNS çerezleri henüz standartlaştırılmadığından, elbette eski müşterileri şimdi ve gelecek yıllar boyunca desteklemek gerekli olacaktır.
DNS çerez desteği olmadan istemcilerden gelen limit taleplerini değerlendirebilirsiniz. Ancak hız limitleri bir saldırganın DNS sunucunuzu DoS yapmasını kolaylaştırır. Bazı DNS sunucularının yalnızca yetkili DNS sunucuları için tasarlanmış bir hız sınırı özelliği bulunduğuna dikkat edin. Özyinelemeli bir çözümleyici hakkında soru sorduğun için, bu oran sınırlayıcı uygulamalar senin için geçerli olmayabilir. Tasarıma göre hız sınırı, sunucunuz için bir tıkanıklık haline gelecektir ve bu nedenle, bir saldırganın, hız sınırlaması olmasaydı yasal isteklerin düşmesine neden olmak için size daha az trafik göndermesi gerekir.
Hız sınırlamalarının bir avantajı, bir saldırganın DNS sunucunuzu DNS istekleriyle doldurması durumunda, sunucuya ssh göndermenize ve durumu araştırmanıza olanak verecek kapasiteniz kalma olasılığının daha yüksek olmasıdır. Ek olarak, ücret talepleri öncelikle, çok sayıda istek gönderen istemci IP'lerinden gelen istekleri düşürmek üzere tasarlanabilir; bu da sizi DoS'a karşı sahte istemci IP'lerine erişimi olmayan saldırganlardan korumak için yeterli olabilir.
Bu nedenlerden ötürü, gerçek kapasitenizin altındaki bir oran limiti, amplifikasyona karşı gerçekten koruma sağlamamasına rağmen, iyi bir fikir olabilir.
TCP kullanarak
Bir istemciyi, cevabın UDP için çok büyük olduğunu belirten bir hata kodu göndererek TCP kullanmaya zorlamak mümkündür. Bunun birkaç dezavantajı var. İki ek gidiş dönüş ücreti. Bazı hatalı müşteriler de bunu desteklemiyor.
İki ilave gidiş dönüşün maliyeti, bu yaklaşımı kullanan yalnızca ilk istekle sınırlandırılabilir:
İstemci IP'si onaylanmadığında, DNS sunucusu istemciyi TCP'ye geçmesi için kesilmiş bir yanıt gönderebilir. Kesik yanıt, istek kadar kısa olabilir (ya da müşteri EDNS0 kullanıyorsa ve yanıt almazsa kısadır), bu da amplifikasyonu ortadan kaldırır.
Bir TCP anlaşmasını tamamlayan ve bağlantıda bir DNS isteği gönderen herhangi bir istemci IP geçici olarak beyaz listeye alınabilir. Bir kez IP, UDP sorguları göndermek ve 512 bayta (EDNS0 kullanıyorsanız 4096 bayt) kadar UDP yanıtlarını almak için beyaz listeye alındığında. Bir UDP yanıtı bir ICMP hata mesajını tetiklerse, IP beyaz listeden tekrar kaldırılır.
Bu yöntem aynı zamanda bir kara liste kullanılarak da tersine çevrilebilir; bu, yalnızca istemci IP'lerinin varsayılan olarak UDP üzerinden sorgulamaya izin verdiği, ancak herhangi bir ICMP hata iletisinin, IP'nin kara listeden çıkmasını gerektiren bir TCP sorgusuna ihtiyaç duyan kara listeye alınmasına neden olduğu anlamına gelir.
İlgili tüm IPv4 adreslerini kapsayan bir bitmap, 444 MB bellekte saklanabilir. IPv6 adreslerinin başka bir şekilde depolanması gerekir.
Herhangi bir DNS sunucusunun bu yaklaşımı uygulayıp uygulamadığını bilmiyorum.
Amplifikasyon ataklarında bazı TCP yığınlarının kullanılabileceği de bildirildi. Ancak bu, yalnızca DNS için değil, herhangi bir TCP tabanlı hizmet için de geçerlidir. Bu güvenlik açıkları, TCP yığınının bir SYN paketine yanıt olarak birden fazla paket göndermeyecek şekilde düzeltildiği bir çekirdek sürümüne yükseltme yapılarak azaltılmalıdır.