Root > Documents > Web Güvenlik Açıkları > DDOS Ataklardan Korunma
Cyber-Warrior.Org \ Doküman \ Web Güvenlik Açıkları > DDOS Ataklardan Korunma
Madde
  Yazar : CHE
  Date : 21.09.2005 02:22:09
 
# DDOS Ataklardan Korunma
 

Modülü kurmadan önce sunu belirtelim bu mod serverda yüklü olan frontpage extensios’larin dogru olarak çalisamamasina sebep olabilmektedir.

MOD_DOSEVASIVE(Apache DoS Evasive Maneuvers Module):

Mod_dosevasive apache için DoS , DDoS ve brute force saldirilarini engellemek için yazilmis bir modüldür.Firewall larin genellikle etkisiz kaldiklari get,post tipi saldirilarda özellikle yeteneklerini göstermektedir.Böylece sunucunuza asiri yük binmeden kendini toparliyabilmesini saglamaktadir.Kolayca firewall ,router,ipchain,iptables ile anlasabilecek sekilde modülü ayarliyabilirsiniz böylece saldirganlarin sunucudan firewall seviyesinde yada router seviyesinde atilmasini saglayabilirsiniz.Genel olarak yaptigi isi inceliyelim kullanici sunucudaki bir siteye devamli get,post,put gibi istekler gönderiyorsa mod_dosevasive tarafindan kara listeye aliniyor sizin belirlediginz süre boyunce kara listeye alinan kisi sunucuya istek göndermeye devam edebilir ama alacagi http 403 forbidden(yasak) cevabini alir.Bu istekelr devam etse bile sunucunuz yorulmayacaktir.Kendi deneyimlerimi yazinin en sonunda paylasacagim.Eger firewall yada router ile anlasabielcek sekilde ayarlarsaniz mod_dosevasive yi kara listeye alinan kullanici bekletilmeden direk sunucudan uzaklastirilicaktir.

Teknik Detaylar:

Tarama islemi olusturulan bir dinamik hash tablosunun kontrolu ile yapilir.Bu tablodaki ipler asagidaki standart kurulum degerlerini gösteriyorsa kara listeye alinir.

*Saniyede ayni sayfayi birden fazla istek yapilmissa.
*Ayni çocuk süreç üzerinden 50 istek yapildi ise.
*Kara listeye alindigi halde istek yapiliyorsa.

bu genellikle bu aralar çok yaygin olarka yapilan http flood scriptlerinden sunucuyu korumaktadir.Hem cpu kullanimini minimal de tutarken hemde sunucuyu bandwith türü yapilan saldiriladan korur.Belirlenen süre içinde engellenen kullanicilar süre bittiginde sunucuya takrar istek gönderebilir tabi firewall yada router ile sunucudan atilmadi ise.Sunucudan yaskali olan ip listesi /tmp dizininde saklanmaktadir ve mod_dosevasive tarafindan kontrol edilmektedir



Kurulum Islemleri

Apache 1.3.x için kurulum detaylari.

1.) /usr/local/src dizinine geçiyoruz.
Kod:
cd /usr/local/src


2.)Dosyayi sunucuya indiriyoruz.
Kod:
wget http://www.nuclearelephant.com/projects/dosevasive/mod_dosevasive_1.10.tar.gz



3.)Sikistirilmis arsiv dosyasini açiyoruz.
Kod:
tar -zxvf mod_dosevasive_1.10.tar.gz





4.)Mod_dosevasive nin klasörüne giriyoruz
Kod:
cd mod_dosevasive



5.)DSO destegi ile yüklüyoruz.
Kod:
/etc/httpd/bin/apxs -cia mod_dosevasive.c






Apache 2 için kurulum adimlari

1.)httpd devel paketini kurarak basliyoruz.
Kod:
up2date -i httpd-devel



2.) /usr/local/src dizinie geçiyoruz
Kod:
cd /usr/local/src



3.)Dosyasi sunucuya indiriyoruz.
Kod:
wget http://www.nuclearelephant.com/projects/dosevasive/mod_dosevasive_1.10.tar.gz



4.)Arsiv dosyasini açiyoruz
Kod:
tar -zxf mod_dosevasive_1.10.tar.gz


5.)Mod_dosevasive klasörüne giriyoruz
Kod:
cd mod_dosevasive


6.)DSO modülü olarak kuruyoruz
Kod:
/usr/sbin/apxs -cia mod_dosevasive20.c




Ayarlarin Yapilmasi
Apache 1.3.x için

1.)Apache nin ayar dosyasi olan httpd.conf dosyasini açiyoruz.
Kod:
pico -w /usr/local/apache/etc/httpd.conf



2.)Ctrl+w tuslarina basarak gelen arama ekranina AddModule mod_dosevasive.c yaziyoruz.Bu kismin hemen altina asagida verecegim degerleri yaziyorsunuz.





Kod:
<IFMODULE mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
</IFMODULE>



3.)Tekrar ctrl+w tuslarina basin gelen arama ekranina MaxRequestsPerChild MaxRequestsPerChild = 0 degerini görüceksiniz o degeri MaxRequestsPerChild 10000 olacak sekilde degistirin.Bu sayede mod_dosevasive süresi dolan hash leri temizleyecektir.Ayrica gene httpd.conf ta keepalive yazan kisim on olarak kalsin off yaparsaniz çalismayacaktir.



4.)Ctrl+x tus kombinasyonunu kullanarak dosyayi kaydedip çikin.

5.)Apache yi yeniden baslatin.
Kod:
/etc/init.d/apache restart




Apache 2.x için ayarlarin yapilmasi

1.)Apache ayar dosyasi olan httpd.conf dosyasini açin

2.)LoadModule mod_dosevasive.c yazan yeri bulun altina asagidakileri ekleyin.
Kod:
<IFMODULE mod_dosevasive20.c> DOSHashTableSize 3097 DOSPageCount 2 DOSSiteCount 50 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 10 DOSBlockingPeriod 600 </IFMODULE>



3.)Tekrar ctrl+w tuslarina basin gelen arama ekranina MaxRequestsPerChild MaxRequestsPerChild = 0 degerini görüceksiniz o degeri MaxRequestsPerChild 10000 olacak sekilde degistirin.Bu sayede mod_dosevasive süresi dolan hash leri temizleyecektir.Ayrica gene httpd.conf ta keepalive yazan kisim on olarak kalsin off yaparsaniz çalismayacaktir.

4.)Dosyayi kaydedip apache yi yeniden baslatin.

Eklenen Degerlerin anlamlari

DOSHashTableSize:
Her çocuk süreçteki en üst seviye nodlarinin büyüklügünü belirtir.Bu degeri yükseltmek performans artisini saglayacaktir fakat ayni zamanda kayitlarin kontrolu daha seyrek yapilicaktir.Eger yogun bir sunucunuz varsa bu degeri yükseltin .

DOSPageCount:
Ayni sayfaya gelebilecek belirli bir süredeki istek sayisidir.Belirli bir süre degeri DOSPageINterval degeri ile ayarlanir.Eger bu istek sayisi asilirsa ip kara listeye alinir sunucuya ulasmaya çalistiginda 403 forbidden yanitini alir.

DOSSiteCount
DOSSiteInterval degerinde belirtilen sürede siteden çekilebilecek obje,nesne sayisidir.Resimler, style sheets, javascripts, SSI

DOSPageInterval
DOSPageCount degeri için ayarlanicak saniyedir.

DOSSiteInterval
DOSSiteCount degeri için ayarlanicak saniyedir.

DOSBlockingPeriod:
Kara listeye alinan iplerin 403 forbidden yanitini alacagi saniye cinsinden süredir bunu yüksek tutmaya çalisin 10 dakika gibi yani 600

DOSEmailNotify

Herhangi bir saldiri oldugunda maillerin gidecegi e-posta adresi.

DOSSystemCommand:

Sistem tarafindan icra edilebilecek komutlar.

Kisisel Deneyim:
Daha önce http flood scriptlerini engellemek için bir çok firewall,apache için eklenti kurdum denedim ve çogu gerçekten bir ise yaramiyordu kanatimce yada bekledigim sekilde etki etmiyordu örnegin mod_throotle dosevasive varken bunu kesinlikle kurmayin derim modu deneme platformum p4 2.4 1024 ram yaklasik 80 siteyi barindiran orta yogunlukta bir server modülü önce firewall ile iletisim kurmayacak sekilde kurdum böylece kara listeye alinan bir ip hemen serverdan uzaklastirilmayacak 403 mesajlari gönderilicekti.Ilk denemememi 1024 k adsl ile yaptim %0.5 seviyesinde seyreden server load ve %30 seviyesinde seyreden ram saldirinin birinci dakikasinda yük yogunlugu 60 a ram kullanimi 70 civarina çikti modülün loglari incelemeye baslamasi ile 60 a çikan yük yogunlugu saldiriya devam etmeme ragmen 10 dakika içinde 1.3 seviyesine indi buda bu kadar agir bir saldiri için çok normal hehrangi bir önlem alinmamis bir serverda böye bir saldiri yani dinamik php sayfalarina devamli get istegi gelmesi önce apache yi failler sonra mysql u ve sunucunun kendine gelemiyecegine garanti veririm.Yaklasik 1.30 saat kadar saldiriyi sürdürdüm bu sürede ortama process sayisi
167.23 requests/sec dir görüldügü gibi asiri fazla bir sayi saldiri sirasinda 30-40 arasi olan ram kullanimi 80 e çikti buda gayet dogal bir olay çünkü linux un isleyisi windows gibi degildir elindkei bütün islemleri olabildigince ram e yazar yeterli bellek kalmadiginda ise bunlari bosaltir ama benim görüsürüz 2gb ram li bir sunucuda bu tür agir bir http flood un mod_dosevasive ile hiç bir etkisi olmayacaktir.APF firewall u mod_dosevasive ile iletisim kuracak sekilde ayarladigimda ise saldiri yaptigim ip 3 dakika içinde sistemden uzaklastirildi.
Benim kullandigim kurallar biraz daha agrasif olmasina karsin serverda çok yogun siteler olmadigi için çok iyi sonuç verdigini düsünüyorum.Agrasif kural zinciri
Kod:
<IFMODULE mod_dosevasive.c> DOSHashTableSize 3097 DOSPageCount 1 DOSSiteCount 25 DOSPageInterval 1 DOSSiteInterval 1 DOSBlockingPeriod 600 </IFMODULE>





mod_dosevasive nin Firewall ile yardimiyla kara listeye alinanlari sunucudan uzaklastirmasi

1.)Konsolda root iken visudo yazin.Dosyanin en altina girip sunu ekleyin


Kod:
nobOdy HOSTNAME = NOPASSWD: /usr/local/sbin/apf -d *

Burada hostname kismina kendi hostname inizi yazin bunu ögrenmek için konsolda hostname komutunu kukkanabilirsiniz.Benim hostname im root.abcd.com diyelim oraya

Kod:
nobOdy root. = NOPASSWD: /usr/local/sbin/apf -d *

yaziyorum. Kaydetmek için ESC tusuna basin ve ardindan qw tuslarina basip enter deyin.



2.)Apache ayar dosyasi olan httpd conf dosyasini gene açiyoruz
Kod:
pico -w /usr/local/apache/conf/httpd.conf



3.)Daha önce ekledigimiz kisimi buluyoruz
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600


hemen altina su 2 satiri ekliyoruz



Kod:
DOSEmailNotify color=#[email protected] DOSSystemCommand "sudo /usr/local/sbin/apf -d %s"


kendi mail adresinizi degistirmeyi unutmayin.



4.)Dosyayi kaydedip çikiyoruz ve apache yi yeniden baslatiyoruz
Kod:
/etc/init.d/apache restart


5.)Artik kara listeye alinan ipler firewall tarafindan sistemden uzaklastirilicaktir.


KAYNAK: Linuxsevenler
   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©