Web sunuculara yönelik yapılacak DOS saldırıları temelde iki türden oluşur;
kaba kuvvet saldırıları(Flood)
tasarımsal/yazılımsal eksikliklerden kaynaklanan zaafiyetler
Kaba kuvvet DOS/DDOS Saldırıları
Bu tip saldırılarda sunucu üzerinde ne çalıştığına bakılmaksızın eş zamanlı olarak binlerce istek gönderilir ve sunucunun kapasitesi zorlanır. Literatürde adı “GET Flood”, “POST Flood” olarak geçen bu saldırılar iki şekilde yapılabilir.
Bir kişi ya da birden fazla kişinin anlaşarak belli bir hedefe eş zamanlı yüzlerce, binlerce istek gönderir ya da bu işi hazır kölelere(zombie) devredilerek etki gücü çok daha yüksek Dos saldırıları gerçekleştirilir.
İlk yöntemde bir iki kişi ne yapabilir diye düşünülebilir fakat orta ölçekli çoğu şirketin web sayfası tek bir kişinin oluşturacağı eşzamanlı yüzlerce isteğe karşı uzun süre dayanamayacaktır. Güzel olan şu ki bu tip saldırıların gerçekleştirilmesi ne kadar kolaysa engellemesi de o kadar kolaydır(güvenlik duvarları/IPS’lerin rate limiting özelliği vs)
İkinci yöntem yani Zombi orduları(BotNet’ler) aracılığıyla yapılan HTTP Flood saldırıları ise binlerce farklı kaynaktan gelen HTTP istekleriyle gerçekleştirilir. Gelen bağlantıların kaynağı dünyanın farklı yerlerinden farklı ip subnetlerinden gelebileceği için network seviyesinde bir koruma ya da rate limiting bir işe yaramayacaktır.
Yazılımsal ya da tasarımsal eksikliklerden kaynaklanan DOS/DDOS Saldırıları
Tasarımsal zaafiyetler protokol düzenlenirken detaylı düşünülmemiş ya da kolaylık olsun diye esnek bırakılmış bazı özelliklerin kötüye kullanılmasıdır.
Tasarımsal zaafiyetlerden kaynaklanan DOS saldırılarına en iyi örnek geçtiğimiz aylarda yayınlanan Slowloris aracıdır. Bu araçla tek bir sistem üzerinden Apache HTTP sunucu yazılımını kullanan sistemler rahatlıkla devre dışı bırakılabilir.
Benzeri şekilde Captcha kullanılmayan formlarda ciddi DOS saldırılarına yol açabilir. Mesela form üzerinden alınan bilgiler bir mail sunucu aracığılıyla gönderiliyorsa saldırgan olmayan binlerce e-posta adresine bu form üzerinden istek gönderip sunucunun mail sistemini kilitleyebilir.
Zaman zaman da web sunucu yazılımını kullanan ve web sayfalarını dinamik olarak çalıştırmaya yarayan bileşenlerde çeşitli zaafiyetler çıkmaktadır. Mesela yine geçtiğimiz günlerde yayınlanan bir PHP zaafiyeti (PHP “multipart/form-data” denial of service)ni kullanılarak web sunucu rahatlıkla işlevsiz bırakabilir. Bu tip zaafiyetler klasik sınır koruma araçlarıyla kapatılamayacak kadar karmaşıktır. Yazılımları güncel tutma, yapılandırma dosyalarını iyi bilme en iyi çözümdür.
Web sunucularına yönelik performans test araçları
DDOS korumasında web sunucularımızı olası bir DOS/DDOS’a maruz kalmadan test edip gerekli ayarlamaları, önlemleri almak yapılacak ilk işlemdir. Bunun için saldırganların hangi araçları nasıl kullanacağını bilmek işe yarayacaktır. Zira günümüzde saldırgan olarak konumlandırdığımız kişilerin eskisi gibi uzman seviyesinde bilgi sahibi olmasına gerek kalmamıştır, aşağıda ekran görüntüsünden görüleceği gibi sadece hedef ip/host girilerek etkili bir dos saldırısı başlatılabilir.
Basit bir adsl hattından yapılan deneme ve sonuçları
Bu yazıda saldırganların kullanıkları araçların isimlerini verilmeyecektir, aynı işi yapan ve çeşitli kısıtlamalara sahip olan bazı araçların isimlerini vermekteyse bir sakınca görmüyorum. Benim kendi sistemlerimi test etmek istediğimde kullandığım temel araçlar: ab, siege, http_load, hping ve curl. Bu araçlarla istediğiniz türde HTTP DOS saldırı testleri gerçekleştirip sunucunuzun durumunu inceleyebilirsiniz.
Ab(ApacheBenchmark) kullanarak yük testi
labs-lifeoverip#ab -c 100 -p post1.txt -T application/x-www-form-urlencoded -n 10000 -r -q
http://blog.lifeoverip.net/searcme.php
ya da keepalive(-k parametresi kullanılarak) istekler göndererek TCP (layer 4) seviyesinde rate limitin kullanan sistemler atlatılabilir.
DOS/DDOS Saldırılarından Korunma Yöntemleri
Koruma konusunda bilinmesi gereken en temel kanun yapılan saldırının şiddeti (kullanılan bandwidth ) sizin sahip olduğunuzdan yüksekse hiçbir şey yapamayacağınızdır. Bu durumda iş hizmet aldığınız telekom firmasına düşer.
Web sunuculara yönelik DOS/DDOS saldırılarından korunma diğer DOS/DDOS yöntemlerine göre daha zordur(synflood, udp flood, smurf vs).
Diğer saldırı yöntemleri genelde L4(TCP/UDP/ICMP) seviyesinde gerçekleştiği için ağ koruma cihazları( Router, Firewall, NIPS)tarafından belirli oranda engellenebilir fakat HTTP üzerinden yapılan DOS saldırılarında istekler normal kullanıcılardan geliyormuş gibi gözüktüğü için ağ güvenlik cihazları etkisiz kalmaktadır. Yinede web sunucular ve önlerine koyulacak ağ güvenlik cihazları iyi yapılandırılabilirse bu tip saldırılardan büyük oranda korunulabilir.
Kullanılan web sunucu yazılımı konfigürasyonunda yapılacak performans iyileştirmeleri
İstekleri daha rahat karşılayacak ve gerektiğinde belleğe alabilecek sistemler kullanılmalı Loadbalancer, reverseProxy kullanımı(Nginx gibi)
Firewall/IPS ile belirli bir kaynaktan gelebilecek max. İstek/paket sayısı sınırlandırılmalı( rate limiting kullanımı)
Saldırı anında loglar incelenerek saldırıya özel bir veri alanı belirlenebilirse(User-Agent, Refererer vs) IPS üzerinden özel imzalar yazılarak bu veri alanına sahip paketler engellenebilir fakat bunun normal kullanıcıları da etkileyeceği bilinmesi gereken nir konudur.
Web sunucunun desteklediği dos koruma modülleri kullanılabilir(Apache Mod_dosevasive)
Iyi yapılandırılmış bu modülle orta düzey DOS saldırılarının çoğu rahatlıkla kesilebilir. Fakat kullanırken dikkat edilmesi gereken bazı önemli noktalar vardır. Mesela DOS yaptığı şüphelenilen kullanıcılara HTTP 403 cevabı dönmek yerine doğrudan saldırı yapanları iptables(APF) ile bloklatmak sunucuyu gereksiz yere yormayacaktır.
Sonuç
Siber dünyada gün geçtikçe Web’in önemi artacak ve HTTP’e yönelik DOS/DDOS saldırıları da ciddi artışlar gösterecektir. DOS/DDOS saldırılarını engellemeye yönelik atılacak en sağlıklı adım kullanılan sistemleri iyi bilmek ve DOS/DDOS saldırısı kapınızı çalmadan kendinizi test etmek ya da ettirmektir. Bu konuda hazır çözüm sunan ticari ürünlerin onu yapılandıran kadar işlevsel olacağı unutulmamalıdır.