DNS ve DNS sunucular, özellikle Internet'te vazgeçilmez ve günlük hayatta farketmesek de her an DNS sunucularını sürekli kullanıyoruz :) DNS kullanımı ile ilgili detaylı bilgiye Wikipedia üzerinden ulaşabilirsiniz.
Birkaç gün önce DNS DDOS saldırısı ile ilgili bir tweet atmıştım. Saldırı ile ilgili ulaşan firma, bir anda sunucu üzerindeki trafiğin çok arttığından, dolayısıyla sunucu üzerindeki web sitelerinin yavaşlamasından şikayetçiydi.
DNS saldırısı sırasında sunucu trafiği
Sitelerin yavaşlamasının nedeni servis sağlayıcının yüksek trafik nedeniyle sunucunun bant genişliğini sınırlamasından kaynaklanıyordu. Peki normalde 5-10 Mbit arası trafik yapan sunucu nasıl olmuştu da bir anda 60 Mbit trafik yapar hale gelmişti?
Sunucuya bağlandığımda öncelikle IIS üzerindeki Worker Processes kısmına baktım. Ancak herhangi bir ekstra trafik görünmüyordu web sitelerinde. Sunucu üzerinden geçen trafiğe baktığımda DNS sunucusunda anormal bir hareket olduğunu fark ettim. Web sunucusu aynı zamanda DNS hizmeti de sunuyordu ve bu hizmete bir saldırı var gibiydi.
Sunucunun sahibi olan firma web sitelerinin DNS hizmetini de kendisi sağlıyordu. Ancak buradaki sıkıntı DNS sunucusu üzerinde ilgili ayarların eksik yapılması idi. Nedenini şöyle açıklamaya çalışacağım :
Internet'e bağlandığımızda genellikle servis sağlayıcılara ait DNS sunucularını veya public hizmet veren DNS sunucularını kullanırız. Bu DNS sunucuları Wikipedia'da açıklandığı gibi yetkili isim sunucusu (authoritive name server) olmasalar bile bir sorgu geldiğinde İngilizce Wikipedia sayfasında açıklandığı gibi cevabı ilgili sunuculardan öğrenip iletebilirler.
Public bir DNS sunucunun kendisinde kayıt olmasa da cevabı
Windows server üzerinde çalışan DNS sunucusu, kurulduğunda varsayılan ayarlar ile üzerinde bulunan kayıtlar ile ilgili cevap vermenin yanısıra public DNS sunucuları gibi diğer sorgulara da cevap vermeye çalışır. Saldırı altında olan sunucuda da gerekli ayarlar yapılmadığı için tüm sorgulara cevap vermeye çalışıyordu.
Sunucunun varsayılan ayarlar ile 2 yılı aşkın bir süredir çalıştığı ve problem yaşanmadığı iletildi. Evet, ayarlar değiştirilmeden problemsiz bir şekilde DNS hizmetinin çalışması mümkün. Ancak bu açık kötü niyetli kişiler tarafından bir şekilde fark edildiğinde yaşanılan şekilde saldırıya maruz kalınabiliyor. Bu saldırılara maruz kalmamak mümkün mü? Elbette mümkün!
DNS sunucu ayarları
DNS sunucusunun öncelikle sadece kendi üzerindeki kayıtlara cevap vermesi (authoritive answer) için ayar yapmamız gerekiyor. Bunun için Server Manager veya Administrative Tools > DNS yoluyla DNS yönetim ekranına ulaşıp sağ tıklamak gerekiyor. Açılan ekranda Advanced kısmında Disable recursion (also disables forwarders) kısmını işaretlemek yeterli.
DNS sunucusunu sadece kendi kayıtlarına cevap verecek şekilde ayarlıyoruz
Not : Bu yaptığınızda DNS sunucusu sadece kendi üzerindeki kayıtlar ile ilgili cevap vereceği için farklı bilgisayarların Internet erişiminde bu DNS sunucusunu kullanmak erişim problemlerine sebep olacaktır.
Bu ayarı yapınca işimiz maalesef bitmiyor :D Çünkü şu anda sunucumuz halen sorgulara cevap veriyor. Verdiği cevap root DNS sunucularını göstermek olsa da saldırının devam etmesi söz konusu.
Ayarın aktif edilmesi sonrası DNS sunucumuz root DNS'lere yönlendirme yapıyor
Saldırıyı önlemek için root DNS sunucuları ile ilgili de cevapları engellememiz gerekiyor. Bunun için az DNS ile ilgili ekranda Root Hints tabına geçip tüm root DNS sunucu kayıtlarını silmek yeterli.
Root DNS sunucular
Bu ayarlardan sonra DNS sunucusuna birileri saldırmaya çalışsa bile aşağıdaki gibi bir cevap alacağı için çok fazla trafik oluşturamayacak ve bir süre sonra da vazgeçecektir :D
<