Muammer Benzeş

"Duyduklarım, gördüklerim, bildiklerim..."

NAVIGATION - SEARCH

DNS sunucunuzu DOS/DDOS saldırılarından koruyun!

İpucu . Windows Server 2003 . Windows Server 2008 . Windows Server 2008 R2 . Windows Server 8

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

<

 

Windows 7 ve Windows Server 2008 R2'de Startup Repair'i devre dışı bırakmak

İpucu . Windows 7 . Windows Server 2008 R2

Windows 7 ve Windows Server 2008 R2 üç yıldır hayatımızın içerisinde. Bir süre daha da olmaya devam edecekler :D Ancak bilgisayar kullanırken herşey güzel gitmiyor. Bazen donanımsal problemler bazen elektrik gibi etkenler bazen de sistemdeki sorunlar nedeniyle bilgisayarlar düzgün kapanmıyor.

Bilgisayar herhangi bir sebeple 1-2 defa yukarıdaki sebeplerden biriyle düzgün kapanmadığında Startup Repair (Başlangıç Kurtarması) devreye giriyor : 

Bilgisayar veya sunucu aslında düzgün açılabiliyorken Startup Repair'in başlaması sıkıntıya sebep oluyor. Özellikle sunucularda bu durum yaşandığında hizmetlerin aksaması da kaçınılmaz oluyor! Hele ki sanallaştırma ortamlarında problem yaşandığında aynı anda belki onlarca sanal işletim sisteminde benzer problem yaşanması  ve hangi makinelerin problemli olduğunun tespiti ciddi bir zaman kaybına meydan veriyor!

Startup Repair'in devreye girmemesi için komut satırında aşağıdaki komutu çalıştırmak gerekiyor. Komutun çalışabilmesi için komut satırını admin haklarıyla açmak gerek :

bcdedit /set {default} bootstatuspolicy ignoreallfailures

Komutu çalıştırdıktan sonra Windows 7 veya Windows Server 2008 R2 makinede sadece Safe Mode (Güvenli Mod) seçenekleri aktif oluyor. Böylece varsayılan seçenek normal açılış olduğu için makine normal çalışmaya devam edebiliyor :

 

Peki, Startup Repair'e tekrar ihtiyacımız olursa? Startup Repair'i tekrar devreye almak için de aşağıdaki komutu çalıştırmak yeterli :

bcdedit /set {default} bootstatuspolicy displayallfailures

Problemsiz ve Startup Repair'e gerek kalmadan çalışmak ümidiyle :D

WPAD ile bilgisayarlara otomatik proxy tanımlama

İpucu . Windows Server 2003 . Windows Server 2008 . Windows Server 2008 R2

Küçük veya büyük fark etmeden kurumsal yapılar içerisinde, kullanıcıların bilgisayarları ile Internet üzerindeki veya yerel ağ içerisindeki belirli kaynaklara erişimlerinin kısıtlanması veya erişim sağlanması gerekebiliyor. Bu gereksinim her ne kadar çoğunlukla işle ilgili olmayan sosyal paylaşım, haber, oyun vb. sitelere erişimin kısıtlanması olarak karşımıza çıksa da, zaman zaman belirli kaynaklara erişim sağlamak (ör: üniversitelerin kütüphaneleri) için tersine de olabiliyor.

Bu tip ihtiyaçlar için her kullanıcı veya bilgisayar için ayrı ayrı ayar yapmak zor olacağından proxy kullanmamız gerekiyor. Proxy kelime karşılığı olarak "vekil" veya "elçi" anlamlarına gelmektedir. Bilgisayar dünyasındaki karşılığı ise ağ üzerindeki bilgisayarlardan gelen isteklere, verilen kurallar çerçevesinde izin verilip verilmeyeceğine karar verilmesi ve bu isteklere izin veriliyorsa işlemin proxy tarafından gerçekleştirilip, isteği yapan bilgisayara cevabın gönderilmesi olarak özetlenebilir.

Yapı içerisinde proxy hizmeti kullanmaya karar verdiğimizde karşımıza proxy bilgisinin bilgisayarlara eklenmesi sorunu çıkıyor. Sistemimizde Active Directory yapısı kullanıyor isek, bu bilgiyi bilgisayarlara Group Policy ile göndermek mümkün. Ancak karşımıza birkaç zorluk çıkıyor :

- Bazı kullanıcılarımız laptop kullanıyor ve şirket dışında da Internet'e erişmek istiyor. Her seferinde proxy ayarı değiştirmek hem zor hem de her kullanıcı için yapması kolay olmayabilir.
- Active Directory ortamını kullanmayan bilgisayarlarımız veya dışarıdan misafir olarak sistemi kullanan bilgisayarlar var. Bunlar için ayarları otomatik göndermek mümkün değil.

NOT : Yapıda ISA Server veya Forefront TMG ürünlerini varsa proxy kullanmadan SecureNAT özelliği ile Active Directory'ye dahil olan/olmayan tüm bilgisayarlara uygulamak mümkün. Böylece aşağıdaki ayarları yapmamıza gerek kalmıyor.

Karşı karşıya kaldığımız bu zorlukları aşmanın yolu, DHCP sunucusu ile IP dağıtırken proxy bilgisini de bilgisayarlara göndermek. Bu işlemi yapabilmemizi sağlayan ise Web Proxy Autodiscovery Protocol (WPAD). WPAD, proxy auto-config (PAC) olarak isimlendirilen dosya ile bilgisayarlara proxy bilgisini gönderebiliyor. PAC dosyası içerisinde en basit haliyle aşağıdaki Javascript fonksiyonunu barındırıyor.

function FindProxyForURL(url, host)
{
    return "PROXY proxy.example.com:8080; DIRECT";
}

 Bu Javascript fonksiyonunu kendi yapımız için aşağıdaki şekilde değiştirmek mümkün. Eğer proxy sunusuna host name ile ulaşılamıyorsa IP adresi de kullanabiliyoruz :

function FindProxyForURL(url, host)
{
    return "PROXY 192.168.1.1:8080; DIRECT";
}

Birden fazla proxy kullandığımız veya karmaşık tanımlamaların olduğu durumlar için de aşağıdaki gibi bir dosyaya ihtiyacımız olacak :

function FindProxyForURL(url, host) {
    // Yerel adresler için proxy kullanmıyoruz
    if (shExpMatch(host, "*.domain.local"))
    {
        return "DIRECT";
    }

    // 1. proxy sunucusu ile erişilen adresler için
    if (isInNet(host, "10.0.0.0", "255.255.248.0"))
    {
        return "PROXY 10.0.0.1:8080";
    }

    // Diğer tüm istekler için kullanılacak proxy sunucusu
    return "PROXY 10.0.0.2:8080; DIRECT";
}

İhtiyacımız doğrultusunda oluşturduğumuz PAC dosyasını standart olarak kullanılan wpad.dat ismi ile kaydediyoruz. Bu dosyayı ağdan erişilebilen bir web sitesi içerisinde yayınlamamız ve bilgisayarların bu dosyaya http://websitesiadresi/wpad.dat gibi bir adresten erişmesi gerekiyor.

WPAD dosyasını web sunucusunda yayınladıktan sonra, DHCP sunucusu üzerinde gerekli tanımlamayı yapmamız gerekiyor :

Administrative Tools (Yönetimsel Araçlar)'tan DHCP sunucuna ulaştıktan sonra sağ tıklayıp Set Predifines Options linkine basıyoruz.

Açılan Predefined Options and Values penceresinde Add'e tıklayıp ekranı aşağıdaki gibi dolduruyoruz :

Description kısmını istediğiniz gibi değiştirebilirsiniz. Giriş işlemlerini tamamladıktan sonra OK'e basıp bir önceki ekrana döndüğümüzde Value kısmına WPAD dosyasını yayınladığımız adresi giriyoruz. Eğer her bir scope için farklı adres girmemiz gerekiyor ise (ör : IP adresi, farklı subnet vs. gibi durumlar nedeniyle) bu kısmı boş geçebiliriz.

Son olarak otomatik proxy eklemek istediğimiz scope'ta Scope Options'a sağ tıklayıp Configure Options'a basıyoruz. General kısmında 252 WPAD tanımını bulup kutucupu işaretleyoruz. Yukarıda geçtiği gibi eğer o scope için ayrıca bir tapmak gerekiyorsa Data entry kısmına istediğimiz bilgiyi yazıp işlemi tamamlıyoruz.

Artık sistemimizde DHCP üzerinden IP alan tüm bilgisayarlara proxy bilgisi otomatik olarak eklenecek. Böylece bilgisayarlar ile ilgili kısıtlama veya yetkilendirme işlemlerini merkezi yapma şansına sahip olabileceğiz.

Yandex.Metrica