MOD_DOSEVASIVE(Apache DoS Evasive Maneuvers Module):
Mod_dosevasive apache icin DoS , DDoS ve brute force saldirilarini engellemek icin yazilmis bir moduldur.Firewall larin genellikle etkisiz kaldiklari get,post tipi saldirilarda ozellikle yeteneklerini gostermektedir.Boylece sunucunuza asiri yuk binmeden kendini toparliyabilmesini saglamaktadir.Kolayca firewall ,router,ipchain,iptables ile anlasabilecek sekilde modulu ayarliyabilirsiniz boylece saldirganlarin sunucudan firewall seviyesinde yada router seviyesinde atilmasini saglayabilirsiniz.Genel olarak yaptigi isi inceliyelim kullanici sunucudaki bir siteye devamli get,post,put gibi istekler gonderiyorsa mod_dosevasive tarafindan kara listeye aliniyor sizin belirlediginz sure boyunce kara listeye alinan kisi sunucuya istek gondermeye 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 gosteriyorsa kara listeye alinir.
*Saniyede ayni sayfayi birden fazla istek yapilmissa.
*Ayni cocuk surec uzerinden 50 istek yapildi ise.
*Kara listeye alindigi halde istek yapiliyorsa.
bu genellikle bu aralar cok yaygin olarka yapilan http flood scriptlerinden sunucuyu korumaktadir.Hem cpu kullanimini minimal de tutarken hemde sunucuyu bandwith turu yapilan saldiriladan korur.Belirlenen sure icinde engellenen kullanicilar sure bittiginde sunucuya takrar istek gonderebilir tabi firewall yada router ile sunucudan atilmadi ise.Sunucudan yaskali olan ip listesi /tmp dizininde saklanmaktadir ve mod_dosevasive tarafindan kontrol edilmektedir
Apache 2 icin kurulum adimlari
up2date -i httpd-devel
cd /usr/local/src
wget guvenlihost.com/dosya/mod_evasive.zip
unzip mod_evasive.zip
cd mod_evasive
apxs -cia mod_evasive20.c
1.)Apache ayar dosyasi olan httpd.conf dosyasini acin
2.)LoadModule mod_evasive.c yazan yeri bulun altina asagidakileri ekleyin.
Kod:
<IFMODULE mod_evasive20.c>
DOSHashTableSize 6097
DOSPageCount 6
DOSSiteCount 150
DOSPageInterval 4
DOSSiteInterval 4
DOSBlockingPeriod 10
DOSBlockingPeriod 600
</IFMODULE>
3.)Tekrar ctrl+w tuslarina basin gelen arama ekranina MaxRequestsPerChild MaxRequestsPerChild = 0 degerini goruceksiniz o degeri MaxRequestsPerChild 10000 olacak sekilde degistirin.Bu sayede mod_dosevasive suresi dolan hash leri temizleyecektir.Ayrica gene httpd.conf ta keepalive yazan kisim on olarak kalsin off yaparsaniz calismayacaktir.
4.)Dosyayi kaydedip apache yi yeniden baslatin.
service apache restart
Eklenen Degerlerin anlamlari
DOSHashTableSize: Her cocuk surecteki en ust seviye nodlarinin buyuklugunu belirtir.Bu degeri yukseltmek performans artisini saglayacaktir fakat ayni zamanda kayitlarin kontrolu daha seyrek yapilicaktir.Eger yogun bir sunucunuz varsa bu degeri yukseltin .
DOSPageCount: Ayni sayfaya gelebilecek belirli bir suredeki istek sayisidir.Belirli bir sure degeri DOSPageINterval degeri ile ayarlanir.Eger bu istek sayisi asilirsa ip kara listeye alinir sunucuya ulasmaya calistiginda 403 forbidden yanitini alir.
DOSSiteCount DOSSiteInterval degerinde belirtilen surede siteden cekilebilecek obje,nesne sayisidir.Resimler, style sheets, javascripts, SSI
DOSPageInterval DOSPageCount degeri icin ayarlanicak saniyedir.
DOSSiteInterval DOSSiteCount degeri icin ayarlanicak saniyedir.
DOSBlockingPeriod: Kara listeye alinan iplerin 403 forbidden yanitini alacagi saniye cinsinden suredir bunu yuksek tutmaya calisin 10 dakika gibi yani 600
DOSEmailNotify
Herhangi bir saldiri oldugunda maillerin gidecegi e-posta adresi.
DOSSystemCommand:
Sistem tarafindan icra edilebilecek komutlar.
Kisisel Deneyim: Daha once http flood scriptlerini engellemek icin bir cok firewall,apache icin eklenti kurdum denedim ve cogu gercekten bir ise yaramiyordu kanatimce yada bekledigim sekilde etki etmiyordu ornegin mod_throotle dosevasive varken bunu kesinlikle kurmayin derim modu deneme platformum p4 2.4 1024 ram yaklasik 80 siteyi barindiran orta yogunlukta bir server modulu once firewall ile iletisim kurmayacak sekilde kurdum boylece kara listeye alinan bir ip hemen serverdan uzaklastirilmayacak 403 mesajlari gonderilicekti.İlk denemememi 1024 k adsl ile yaptim %0.5 seviyesinde seyreden server load ve %30 seviyesinde seyreden ram saldirinin birinci dakikasinda yuk yogunlugu 60 a ram kullanimi 70 civarina cikti modulun loglari incelemeye baslamasi ile 60 a cikan yuk yogunlugu saldiriya devam etmeme ragmen 10 dakika icinde 1.3 seviyesine indi buda bu kadar agir bir saldiri icin cok normal hehrangi bir onlem alinmamis bir serverda boye bir saldiri yani dinamik php sayfalarina devamli get istegi gelmesi once apache yi failler sonra mysql u ve sunucunun kendine gelemiyecegine garanti veririm.Yaklasik 1.30 saat kadar saldiriyi surdurdum bu surede ortama process sayisi 167.23 requests/sec dir goruldugu gibi asiri fazla bir sayi saldiri sirasinda 30-40 arasi olan ram kullanimi 80 e cikti buda gayet dogal bir olay cunku linux un isleyisi windows gibi degildir elindkei butun islemleri olabildigince ram e yazar yeterli bellek kalmadiginda ise bunlari bosaltir ama benim gorusuruz 2gb ram li bir sunucuda bu tur agir bir http flood un mod_dosevasive ile hic bir etkisi olmayacaktir.APF firewall u mod_dosevasive ile iletisim kuracak sekilde ayarladigimda ise saldiri yaptigim ip 3 dakika icinde sistemden uzaklastirildi. |
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 ogrenmek icin konsolda hostname komutunu kukkanabilirsiniz.Benim hostname im root.abcd.com diyelim oraya
Kod:
nobody root. = NOPASSWD: /usr/local/sbin/apf -d *
yaziyorum. Kaydetmek icin ESC tusuna basin ve ardindan qw tuslarina basip enter deyin.
2.)Apache ayar dosyasi olan httpd conf dosyasini gene aciyoruz
Kod:
pico -w /usr/local/apache/conf/httpd.conf
3.)Daha once ekledigimiz kisimi buluyoruz
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
hemen altina su 2 satiri ekliyoruz
Kod:
DOSEmailNotify
email@adresiniz.comDOSSystemCommand "sudo /usr/local/sbin/apf -d %s"
kendi mail adresinizi degistirmeyi unutmayin.
4.)Dosyayi kaydedip cikiyoruz ve apache yi yeniden baslatiyoruz
Kod:
/etc/init.d/apache restart
5.)Artik kara listeye alinan ipler firewall tarafindan sistemden uzaklastirilicaktir.
CSF bu işlemi otomatik yapmaktadır bu türn ayar yapmaya gerek yokhttp://www.gvhdestek.com/direct-admin-genel/directadmin-csf-(configserver-security)-firewall-kurulumu/Saygılar