Web Sunucularında DDoS-Botnet saldırılarını Minimize Etme
Merhaba arkadaşlar. Bu makalemizde web sunucularına yapılan DOS (Denial Of Service), DDOS (Distrubuted Denial Of Service) ve Botnet saldırılarının nasıl minimize edilebileceğini derinlemesine inceleyeceğiz.
Günümüzde en çok kullanılan saldırı yöntemi DDOS ve Botnet saldırılarıdır. Kötücül yazılım dağıtıcıları, hazırlamış oldukları, virüs ve backdoorları çeşitli yazılımların içine entegre ederek internet üzerinde freware (ücretsiz) yada warez olarak dağıtılmaktadır. Kullanıcılar ücretsiz olduğunu vaad eden bu yazılımları bilgisayarlarına kurduktan sonra, arka planda bu zararlı kodlar çalışır. Zararlı kodlar kullanıcıların bilgisayarında çalıştıktan sonra, bulaştıkları bilgisayarı bir zombi bilgisayar haline getirir.
Zararlı yazılım geliştiricisi, çeşitli amaçlar çerçevesinde zombie haline getirmiş olduğu bilgisayarları bir araya toplar ve bu bilgisayarlardan büyük bir botnet ağı (zombie ordusu) kurar. Daha sonra bu botnet ağı ile amaçlar çerçevesinde saldırılar düzenlenir. Saldırı düzenlenen web sunucuna bir anda binlerce istek gönderilir ve sunucu gelen bu isteklere cevap veremeyecek duruma geldiğinde, amaca ulaşılmış, saldırı tamamlanmış olur. Zararlı yazılımın bulaştığı son kullanıcı bu saldırıdan habersizdir.
Benzer bir saldırı çok kısa bir süre önce Anonymous grubu tarafından TİB (Telekomünikasyon İletişim Başkanlığı)’e büyük ölçekli bir saldırı düzenlendi. TİB sunucuları belirli bir süre yayın yapamayacak duruma getirildi. Bu tip saldırılarda, saldırıyı başlatan kişinin tespit edilmesi oldukça zordur. Çünkü saldırıyı düzenleyen kişi, saldırıyı başka bilgisayarlara yaptırdığından dolayı tespit edilmesi zorlaşıyor.
Bir web sunucu ile iletişim Resim-01’deki gibi gerçekleştirilir. Ziyaretçi, mshowto.org sitesi ile iletişime geçmek istemektedir. Bunun için mshowto.org adresine bir ping paketi gönderiyor. Gönderilen ping paketi mshowto.org için 94.73.131.139 ip adresine yollanıyor. Domain adı, ip adresine çevrilip, mshowto.org’a iletilebilmesi için 94-73-131-139.cizgi.net.tr cihazına gönderiliyor. Ardından bu cihazda gelen paketi ns1.sadecehosting.com adresindeki fiziksel sunucuya iletiyor. Web sunucusu gelen bu ping paketine ICMP Echo Reply paketi ile 77.92.152.10 ip adresinden cevap gönderiyor. Routerlar üzerinden iletilen bu ICMP Ehco Reply paketi kullanıcıya iletiliyor.
Eğer web sunucunun önüne bir firewall cihazı yerleştirilmemiş ise temel mantıkta iletişim bu şekilde kurulacaktır. Eğer bir firewall olduğunu düşünür isek sonuç Resim-02 deki gibi olacaktır.
Ziyaretçi web sunucusuna istekte bulunur. Istek web sunucusunun önünde bulunan firewall’a iletilir. Firewall gelen paketi inceleyerek analiz eder. Paket güvenlik bir istek içeriyorsa, paket web sunucusuna iletilir, paket zararlı bir istekte bulunuyorsa, paket drop edilir.
Ancak büyük çaplı gelen saldırılarda firewall’lar çoğu zaman paketleri kaçırabilmektedir. Bu gibi durumlarda çift firewall kullanılması gerekmektedir. Dolayısı ile bu da ek maliyet anlamına gelir.
Bu makalemizde botnet, ddos saldırılarını engellemek için CloudFlare sunucularını kullanılarak, saldırı engelleme ve saldırı analizlerini inceleyeceğiz.
Öncelikl CloudFlare çalışma mantığını inceleyelim (Resim-03).
Bir web sitesine istek gönderdiğimizde, göndermiş olduğumuz istek Resim-03 1. Kısımdaki gibi domain’in çalıştığı name server’a iletilir. Web sunucusunun verdiği cevaplar da ziyaretçiye direk aktarılır. Böylelikle sunucu ile direkt bir iletişim kurulmuş olur. Bu tarz bağlantılarda, güvenlik en düşük düzeydedir. Bir ddos ve botnet saldırısı yapıldığında sunucu ile direkt iletişime geçilebildiğinden dolayı sunucu bu olaydan fiili olarak etkilenmiş olur.
2. Kısımda ise, CloudFlare sunucularına taşınmış bir web sitesi bulunmaktadır. Ziyaretçinin gönderdiği tüm istekler önce CloudFlare sunucularının ön tarafında bulunan güvenlik duvarına iletilir. Gelen bu istekler, firewall ile süzüldükten sonra ilgili web sunucusuna iletilir. Sunucunun vermiş olduğu cevaplar da aynı yol ile önce CloudFlare sunucularına iletilir, CloudFlare sunucularından ziyaretçiye iletilir. Ziyaretçi web sitesi ile fizeksel bir iletişime geçememektedir. Dolayısı ile gelecek olan tüm ddos ve botnet saldırıları bizim sunucumuza değil CloudFlare sunucularına iletilir. Bizim web sunucumuz gelen bu saldırıdan etkilenmeden çalışmasına devam etmektedir. CloudFlare burada bizim için bir köprü görevi üstlenmektedir. Biraz daha açıklayacak olursam eğer, eyupcelik.com.tr adresine gönderdiğimiz bir ping isteği uma.ns.cloudflare.com sunucusuna gönderilmiş olur. Gelen cevapta eyupcelik.com.tr adresinden uma.ns.cloudflare.com sunucusuna gönderilir, ordan da ziyaretçiye cevap yollanır. Eyup.celik.com.tr adresinin fiziksel olarak kullandığı ip adresi ile uma.ns.cloudflare.com adresinin kullanmış oldukları ip adresleri farklıdır. Bir saldırı yapıldığında, saldırıyı yapan kişi bunu fiziksel sunucuya yaptığını sanacaktır ama gerçekte bizim sunucumuz bundan etkilenmemiş olacaktır.
Resim-04’te tipik bir çalışma örneği mevcuttur. Ziyaretçi eyupcelik.com.tr adresine ping isteği gönderdiğinde bu istek önce CloudFlare sunucusundaki güvenlik duvarına iletilmiş. Firewall gelen bu isteğe olumlu cevap verdiğinde, istek uma.ns.cloudflare.com yada phil.ns.cloudflare.com sunucularına iletilmiştir. Ardından istek fiziksel sunucunun nameserverları olan ns1.eyupcelik.com.tr veya ns2.eyupcelik.com.tr adreslerinden birine iletilir. Daha sonra burdan da web sunucusunun önünde bulunan firewall cihazına yönlendirilir. Firewall cihazı isteği değerlendirir ve sonuç olumlu ise bu isteği web suncusuna iletir. Ardından ziyaretçiye geri dönüşte aynı yollar üzerinden gerçekleştirilir. Gönderilen isteğin zararlı bir istek olduğunu varsayarsak eğer, istek CloudFlare sunucunun önünde bulunan firewall cihazına iletilir, firewall gelen isteğin zararlı olduğuna karar verirse eğer, isteği drop eder. Çok büyük çaplı bir saldırı (200 bin ve üzeri zombi bilgisayar ile) geldiğini düşünürsek, firewallun kaçırdığı paketler üstte anlattığım yolu izleyerek web sunucusunun önünde bulunan firewall cihazına iletilir. Bu cihazda gelen isteği kontrol eder ve zararlı ise drop ederek gelen paketi yok eder.
Şimdi CloudFlare sunucularını nasıl kullanacağımızı ve konfigürasyonunu inceleyelim. Hemen bir dipnot düşeyim, CloudFlare’i ücretsiz olarak kullanabilirsiniz.
http://www.cloudflare.com adresine girip sağ üst köşede bulunan Sign Up’ı tıklıyoruz. Gelen kayıt formunu Resim-05’teki gibi dolduruyoruz.
Hesap ayarlarını Resim-05’teki gibi yaptıktan sonra Your Domain: Domain adresiniz (örn mshowto.org) kısmını doğru yaptığımızdan emin olup Create Account Now’u tıklıyoruz. Bunu yaptıktan sonra, ikinci adıma geçecek ve 50 saniyelik bir video oynayacaktır. Bu işlem bittikten sonra Continue butonu aktif olacaktır. Continue’yu tıklayıp 3 adıma geçin.
Bir sonraki adımda Resim-06’daki DNS configürasyonu ile karşılaşacağız. DNS ayarlarımız için Resim-06’yı örnekleyecek olursak eğer, En üstte bulunan A eyupcelik.com.tr record’u bizim gerçek ip adresimiz olacaktır. Ceh, ethical ve mobile olan A recordları sub domainlerimizi temsil eder ve fiziksel ip adresimize yönlendirilmiş durumdadır. Hemen altında CNAME recordlarımız var, bu CNAME recordlar ise domain adresine yönlendirilmiştir. MX kaydımız da A record da bulunan kayda yönlendirilmiştir. Tüm recordları CloudFlare otomatik olarak getirmektedir, ancak biz istersek te ekleyebiliriz. Burda dikkat etmemiz gereken husus şu, sarı güneş ve bulutun bulunduğu adreslerde CloudFlare çalışacaktır. Ziyaretçi gönderdiği tüm istekler CloudFlare’e iletilecektir. Gri güneş ve bulut olanlar ise fiziksel bağlantıları temsil eder. Bu bağlantılarda kullanıcı sunucumuz ile direkt iletişime geçecektir. Konfigürasyonumuzu yaptıktan sonra I’ve added all missing records, continue butonunu tıklayıp bir sonraki adıma geçiyoruz.
Bir sonraki adımda Resim-07’deki ekran ile karşılaşacağız. Burda Choose a plan kısmından Free-$0/month’u tıklıyoruz. Bu CloudFlare’i ücretsiz kullanacağımız anlamına gelir. Performance kısmında CDN Only’i seçiyoruz. Diğer seçenekler ücretli sürüm içindir. Bu seçeneğin amacı, dünya üzerinde bir çok bölgede yer alan CloudFlare sunucuları kullanılarak web sitesinin erişimini hızlandırmaktır. Security kısmında Medium’u seçip, Continue’yu tıklıyoruz.
Bir sonraki adımda, domain dns değişikliği yapmamız gerektiğini bildiren ekran ile karşılaşıyoruz. Buna göre domain adresimizin nameserver kayıtlarını yukarıdaki gibi, Change your nameservers to’daki adresler ile değiştirip, I’ve updated my nameservers, continue’yu tıklıyoruz. Domain panelimize erişip, nameserver değişikliğini Resim-08’deki gibi yapıyoruz.
Not: Bu işlem sırasında web sitemiz kesinlikle offline duruma düşmemektedir.
Yönlendirme ve aktivasyon işlemi tamamlandıktan sonra CloudFlare ana sayfasına dönüyoruz.
Domain adresimiz aktif olarak CloudFlare üzerinde çalışıyorsa, domain adresimizin hemen sol tarafında yeşil bir onay işareti göreceksiniz (Resim-09). Günlük erişim, saldırı ve analiz raporları için Report & stats’ı tıklıyoruz.
Rapor sayfası Resim-10 ve Resim-11 gibi olacaktır. Bu ekranda siteye giren ziyaretçiler, gelen saldırılar, arama motorlarının kaç kere geldiği, arama motorlarının kaç sayfayı taradığı ve en son hangi tarihte geldiği, kullanılan bandwith genişliği, saldırıların hangi ülkeler tarafından yapıldığı gibi bir çok detayı görüntüleyebiliriz. Bu raporlara göre bir sonuç çıkartmak gerekiyorsa, sonuç aşağıdaki gibi olacaktır.
Site istastiği:
- Toplamda sitedeki sayfalar 14735 defa görüntülenmiş, bu ziyaretlerin 2258 i benzersiz ziyaretçiler tarafından görüntülenmiş(Resim-10)
- Siteyi 19 adet arama motoru (google, bing, yandex v.s) ziyaret etmiş, bunlardan 8 tanesi ilk defa siteyi ziyaret ediyormuş(Resim-10)
- Siteye 663 tane saldırı düzenlenmiş, bunun 138’i benzersiz kullanılar tarafından gerçekleştirilmiş (Resim-10)
- Siteye toplamda 6447 saldırı düzenlenmiş, bu saldırıların %99 u Türkiye’den yapılmış, diğer saldırılar ise sırası ile bilinmeyen bir bölgeden (muhtemelen ip gizlenerek yapılmıştır), Bulgaristan, Hindistan, Amerika, Almanya… gibi ülkelerden gerçekleştirilmiş (Resim-11)
- Siteye gönderilen 177,086 istekten 140,358’i CloudFlare üzerinden gönderilmiş ve CloudFlare tarafından kayıt altına alınmış (Resim-11)
- Kullanılan 5 GB bandwith’ten 3,3 GB’ı CloudFlare üzerinden gönderilmiş (Resim-11)
- Bing arama motoru 1,950 sayfayı taramış (Resim-11)
- Google arama motoru 1,442 sayfayı taramış (Resim-11)
- Yandex arama motoru 161 sayfayı taramış (Resim-11)
- Baidu arama motoru 143 sayfayı taramış (Resim-11)
Gelen saldırıları görüntülemek için sağ üst köşede bulunan Threat control’ü tıklıyoruz.
Saldırı logları Resim-12’deki gibi görüntülenebilmektedir. Buna göre 09 Mart 2012 tarihinde 38.100.21.21 ip adresine sahip Amerika lokasyonundaki ziyaretçi, sayfada bulunan bir güvenlik rule’unu atlatmaya çalışmış ve yapmış olduğu bu saldırı girişimi loglanmış. Başka bir örneğe bakalım. 85.17.29.107 ip adresine sahip Hollanda (Netherlands) lokasyonundaki ziyaretçi sitede bulunan mail adreslerini toplayıp spam yapmaya çalışırken yakalanmış. 212.156.44.134 ip adresine sahip Türkiye lokasyonundaki ziyaretçinin ise bir botnet zombi bilgisayar olduğunu ve siteye saldırmaya çalıştığını öğrenebiliyoruz. Saldırı ile ilgili detayları almak için sol tarafta bulunan büyüteç işaretini tıklıyoruz.
Saldırı detayları Resim-13’teki gibi görüntülenebilir. 212.156.44.134 ip adresine sahip Türkiye lokasyonlu zombie bilgisayar Google Honey Pot projesi kapsamında çeşitli sitelere saldırı yaptığı ve bu saldırılardan birinide bizim sitemize karşı gerçekleştirdiğini OVERVIEW kısmından öğreniyoruz.
Details kısmında bu zombie bilgisayar tarafından sitemizde bir dictonary attacks (Şifrelere yönelik sözlük saldırısı) düzenlendiğini öğreniyoruz.
Saldırı düzenleyen bu ip adreslerini sağ taraflarında bulunan +Block butonu ile tamamen engeleyebiliriz.
Özel olarak bir ip adresini engellemek yada güvenlir olarak kural tanımlamak istiyor isek, Threat control kısmında bulunan Add custom rule kısmını kullanabiliriz.
Add custom rule kısmına ip adresini yazdıktan sonra Block + ve Trust + seçenekleri bulunmaktadır. Block + seçeneği ip adresini engellemek, Trust + seçeneği ip adresinin güvenilir listeye eklenmesini sağlar.
Bir ziyaretçinin siteye erişimini engellediğimizde Resim-16 ekranı ile karşılaşacaktır.
CloudFlare’in bize kazandırdıkları:
- Web sitemiz dünyanın her bölgesindeki CloudFlare CDN leri sayesinde daha performanslı ve daha hızlı çalışacaktır.
- DOS, DDOS ve BOTNET saldırılarına karşı güvenlik önlemlerimizi maksimize etmiş olduk.
- Sitemize spam uygulanmasını engellemiş olduk.
- Sunucumuz ile kullanıcıların birebir bağlantılarını keserek sunucuya gelebilecek bir çok tehtidi devre dışı bıraktık.
- Kullanışlı raporlamalar sayesinde ziyaretçilerin neler yaptığını öğrendik.
- Arama motorlarının sayfamıza kaç kere uğradıklarını öğrendik
- Firewall – ips/ids gibi maliyetlerin düşürülmesi.
- Fiziksel sunucumuzu izole ederek ziyaretçilere farklı bir yerden yayın yapıyormuşuz gibi görünerek ekstra güvenlik önlemi sağladık. (tracert siteadresi)
Güvenli günler dilerim.