AsiKaR
23-12-2005, 03:13
Modülü kurmadan önce şunu belirtelim bu mod serverda yüklü olan frontpage extensios ların doğru olarak çalışamamasına sebep olabilmektedir.Her ne kadar ben şuana kadar bir sorun yaşamasamda.
MOD_DOSEVASIVE(Apache DoS Evasive Maneuvers Module):
Mod_dosevasive apache için DoS , DDoS ve brute force saldırılarını engellemek için yazılmış bir modüldür.Firewall ların genellikle etkisiz kaldıkları get,post tipi saldırılarda özellikle yeteneklerini göstermektedir.Böylece sunucunuza aşırı yük binmeden kendini toparlıyabilmesini sağlamaktadır.Kolayca firewall ,router,ipchain,iptables ile anlaşabilecek şekilde modülü ayarlıyabilirsiniz böylece saldırganların sunucudan firewall seviyesinde yada router seviyesinde atılmasını sağlayabilirsiniz.Genel olarak yaptığı işi inceliyelim kullanıcı sunucudaki bir siteye devamlı get,post,put gibi istekler gönderiyorsa mod_dosevasive tarafından kara listeye alınıyor sizin belirlediğinz süre boyunce kara listeye alınan kişi sunucuya istek göndermeye devam edebilir ama alacağı http 403 forbidden(yasak) cevabını alır.Bu istekelr devam etse bile sunucunuz yorulmayacaktır.Kendi deneyimlerimi yazının en sonunda paylaşacağım.Eğer firewall yada router ile anlaşabielcek şekilde ayarlarsanız mod_dosevasive yı kara listeye alınan kullanıcı bekletilmeden direk sunucudan uzaklaştırılıcaktır.
Teknik Detaylar:
Tarama işlemi oluşturulan bir dinamik hash tablosunun kontrolu ile yapılır.Bu tablodaki ipler aşağıdaki standart kurulum değerlerini gösteriyorsa kara listeye alınır.
*Saniyede aynı sayfayı birden fazla istek yapılmışsa.
*Aynı çocuk süreç üzerinden 50 istek yapıldı ise.
*Kara listeye alındığı halde istek yapılıyorsa.
bu genellikle bu aralar çok yaygın olarka yapılan http flood scriptlerinden sunucuyu korumaktadır.Hem cpu kullanımını minimal de tutarken hemde sunucuyu bandwith türü yapılan saldırıladan korur.Belirlenen süre içinde engellenen kullanıcılar süre bittiğinde sunucuya takrar istek gönderebilir tabi firewall yada router ile sunucudan atılmadı ise.Sunucudan yaskalı olan ip listesi /tmp dizininde saklanmaktadır ve mod_dosevasive tarafından kontrol edilmektedir
root.root [/tmp]# ls dos*
dos-193.255.81.227 dos-81.213.181.185 dos-81.214.188.238 dos-81.215.159.222 dos-85.105.17.253 dos-85.97.78.30
dos-194.27.42.18 dos-81.213.187.111 dos-81.214.203.78 dos-81.215.183.102 dos-85.74.11.134 dos-85.97.98.100
dos-195.128.254.3 dos-81.213.233.159 dos-81.214.251.12 dos-81.215.246.136 dos-85.96.18.145 dos-85.98.14.238
dos-195.174.224.233 dos-81.213.84.72 dos-81.214.62.118 dos-81.215.250.196 dos-85.96.92.231 dos-85.98.59.72
dos-212.156.166.55 dos-81.214.129.167 dos-81.214.71.219 dos-81.215.69.255 dos-85.97.134.24 dos-85.98.89.144
dos-212.243.169.82 dos-81.214.142.126 dos-81.214.74.178 dos-85.100.102.164 dos-85.97.147.93 dos-85.99.182.152
dos-221.220.198.171 dos-81.214.147.92 dos-81.215.121.150 dos-85.100.31.39 dos-85.97.178.166 dos-85.99.211.167
dos-81.213.178.15 dos-81.214.149.198 dos-81.215.128.241 dos-85.101.1.139 dos-85.97.77.76 dos-85.99.67.87
root.root [/tmp]#
Kurulum İşlemleri
Apache 1.3.x için kurulum detayları.
1.) /usr/local/src dizinine geçiyoruz.
cd /usr/local/src
2.)Dosyayı sunucuya indiriyoruz.
wget [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
3.)Sıkıştırılmış arşiv dosyasını açıyoruz.
tar -zxvf mod_dosevasive_1.10.tar.gz
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
4.)Mod_dosevasive nin klasörüne giriyoruz
cd mod_dosevasive
5.)DSO desteği ile yüklüyoruz.
/etc/[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] -cia mod_dosevasive.c
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
Apache 2 için kurulum adımları
1.)[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] devel paketini kurarak başlıyoruz.
up2date -i [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
2.) /usr/local/src dizinie geçiyoruz
cd /usr/local/src
3.)Dosyası sunucuya indiriyoruz.
wget [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
4.)Arşiv dosyasını açıyoruz
tar -zxf mod_dosevasive_1.10.tar.gz
5.)Mod_dosevasive klasörüne giriyoruz
cd mod_dosevasive
6.)DSO modülü olarak kuruyoruz
/usr/sbin/apxs -cia mod_dosevasive20.c
Ayarların Yapılması
Apache 1.3.x için
1.)Apache nin ayar dosyası olan [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] dosyasını açıyoruz.
pico -w /usr/local/apache/etc/[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
2.)Ctrl+w tuşlarına basarak gelen arama ekranına AddModule mod_dosevasive.c yazıyoruz.Bu kısmın hemen altına aşağıda vereceğim değerleri yazıyorsunuz.
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
<IfModule mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
</IfModule>
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
3.)Tekrar ctrl+w tuşlarına basın gelen arama ekranına MaxRequestsPerChild MaxRequestsPerChild = 0 değerini görüceksiniz o değeri MaxRequestsPerChild 10000 olacak şekilde değiştirin.Bu sayede mod_dosevasive süresi dolan hash leri temizleyecektir.Ayrıca gene [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ta keepalive yazan kısım on olarak kalsın off yaparsanız çalışmayacaktır.
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
4.)Ctrl+x tuş kombinasyonunu kullanarak dosyayı kaydedip çıkın.
5.)Apache yi yeniden başlatın.
/etc/init.d/apache restart
Apache 2.x için ayarların yapılması
1.)Apache ayar dosyası olan [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] dosyasını açın
2.)LoadModule mod_dosevasive.c yazan yeri bulun altına aşağıdakileri ekleyin.
<IfModule mod_dosevasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSBlockingPeriod 600
</IfModule>
3.)Tekrar ctrl+w tuşlarına basın gelen arama ekranına MaxRequestsPerChild MaxRequestsPerChild = 0 değerini görüceksiniz o değeri MaxRequestsPerChild 10000 olacak şekilde değiştirin.Bu sayede mod_dosevasive süresi dolan hash leri temizleyecektir.Ayrıca gene [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ta keepalive yazan kısım on olarak kalsın off yaparsanız çalışmayacaktır.
4.)Dosyayı kaydedip apache yi yeniden başlatın.
Eklenen Değerlerin anlamları
DOSHashTableSize:
Her çocuk süreçteki en üst seviye nodlarının büyüklüğünü belirtir.Bu değeri yükseltmek performans artışını sağlayacaktır fakat aynı zamanda kayıtların kontrolu daha seyrek yapılıcaktır.Eğer yoğun bir sunucunuz varsa bu değeri yükseltin .
DOSPageCount:
Aynı sayfaya gelebilecek belirli bir süredeki istek sayısıdır.Belirli bir süre değeri DOSPageINterval değeri ile ayarlanır.Eğer bu istek sayısı aşılırsa ip kara listeye alınır sunucuya ulaşmaya çalıştığında 403 forbidden yanıtını alır.
DOSSiteCount
DOSSiteInterval değerinde belirtilen sürede siteden çekilebilecek obje,nesne sayısıdır.Resimler, style sheets, javascripts, SSI
DOSPageInterval
DOSPageCount değeri için ayarlanıcak saniyedir.
DOSSiteInterval
DOSSiteCount değeri için ayarlanıcak saniyedir.
DOSBlockingPeriod:
Kara listeye alınan iplerin 403 forbidden yanıtını alacağı saniye cinsinden süredir bunu yüksek tutmaya çalışın 10 dakika gibi yani 600
DOSEmailNotify
Herhangi bir saldırı olduğunda maillerin gideceği e-posta adresi.
DOSSystemCommand:
Sistem tarafından icra edilebilecek komutlar.
Kişisel Deneyim:
Daha önce http flood scriptlerini engellemek için bir çok firewall,apache için eklenti kurdum denedim ve çoğu gerçekten bir işe yaramıyordu kanatimce yada beklediğim şekilde etki etmiyordu örneğin mod_throotle dosevasive varken bunu kesinlikle kurmayın derim modu deneme platformum p4 2.4 1024 ram yaklaşık 80 siteyi barındıran orta yoğunlukta bir server modülü önce firewall ile iletişim kurmayacak şekilde kurdum böylece kara listeye alınan bir ip hemen serverdan uzaklaştırılmayacak 403 mesajları gönderilicekti.İlk denemememi 1024 k adsl ile yaptım %0.5 seviyesinde seyreden server load ve %30 seviyesinde seyreden ram saldırının birinci dakikasında yük yoğunluğu 60 a ram kullanımı 70 civarına çıktı modülün logları incelemeye başlaması ile 60 a çıkan yük yoğunluğu saldırıya devam etmeme rağmen 10 dakika içinde 1.3 seviyesine indi buda bu kadar ağır bir saldırı için çok normal hehrangi bir önlem alınmamış bir serverda böye bir saldırı yani dinamik php sayfalarına devamlı get isteği gelmesi önce apache yi failler sonra mysql u ve sunucunun kendine gelemiyeceğine garanti veririm.Yaklaşık 1.30 saat kadar saldırıyı sürdürdüm bu sürede ortama process sayısı
167.23 requests/sec dır görüldüğü gibi aşırı fazla bir sayı saldırı sırasında 30-40 arası olan ram kullanımı 80 e çıktı buda gayet doğal bir olay çünkü linux un işleyişi windows gibi değildir elindkei bütün işlemleri olabildiğince ram e yazar yeterli bellek kalmadığında ise bunları boşaltır ama benim görüşürüz 2gb ram li bir sunucuda bu tür ağır bir http flood un mod_dosevasive ile hiç bir etkisi olmayacaktır.APF firewall u mod_dosevasive ile iletişim kuracak şekilde ayarladığımda ise saldırı yaptığım ip 3 dakika içinde sistemden uzaklaştırıldı.
Benim kullandığım kurallar biraz daha agrasif olmasına karşın serverda çok yoğun siteler olmadığı için çok iyi sonuç verdiğini düşünüyorum.Agrasif kural zinciri
<IfModule mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 1
DOSSiteCount 25
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
</IfModule>
mod_dosevasive nın Firewall ile yardımıyla kara listeye alınanları sunucudan uzaklaştırması
1.)Konsolda root iken visudo yazın.Dosyanın en altına girip şunu ekleyin
nobody HOSTNAME = NOPASSWD: /usr/local/sbin/apf -d *
Burada hostname kısmına kendi hostname inizi yazın bunu öğrenmek için konsolda hostname komutunu kukkanabilirsiniz.Benim hostname im root.abcd.com diyelim oraya
nobody root. = NOPASSWD: /usr/local/sbin/apf -d *yazıyorum
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
2.)Apache ayar dosyası olan [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] conf dosyasını gene açıyoruz
pico -w /usr/local/apache/etc/[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
3.)Daha önce eklediğimiz kısımı buluyoruz
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
hemen altına şu 2 satırı ekliyoruz
DOSEmailNotify email.adresiniz.com
DOSSystemCommand "sudo /usr/local/sbin/apf -d %s"
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
4.)Dosyayı kaydedip çıkıyoruz ve apache yi yeniden başlatıyoruz
/etc/init.d/apache restart
5.)Artık kara listeye alınan ipler firewall tarafından sistemden banlanacaktır..
Anlatım : dropby23 Arkadaşımıza Aittir
Düzenleme ve güncelleme : AsiKaR
MOD_DOSEVASIVE(Apache DoS Evasive Maneuvers Module):
Mod_dosevasive apache için DoS , DDoS ve brute force saldırılarını engellemek için yazılmış bir modüldür.Firewall ların genellikle etkisiz kaldıkları get,post tipi saldırılarda özellikle yeteneklerini göstermektedir.Böylece sunucunuza aşırı yük binmeden kendini toparlıyabilmesini sağlamaktadır.Kolayca firewall ,router,ipchain,iptables ile anlaşabilecek şekilde modülü ayarlıyabilirsiniz böylece saldırganların sunucudan firewall seviyesinde yada router seviyesinde atılmasını sağlayabilirsiniz.Genel olarak yaptığı işi inceliyelim kullanıcı sunucudaki bir siteye devamlı get,post,put gibi istekler gönderiyorsa mod_dosevasive tarafından kara listeye alınıyor sizin belirlediğinz süre boyunce kara listeye alınan kişi sunucuya istek göndermeye devam edebilir ama alacağı http 403 forbidden(yasak) cevabını alır.Bu istekelr devam etse bile sunucunuz yorulmayacaktır.Kendi deneyimlerimi yazının en sonunda paylaşacağım.Eğer firewall yada router ile anlaşabielcek şekilde ayarlarsanız mod_dosevasive yı kara listeye alınan kullanıcı bekletilmeden direk sunucudan uzaklaştırılıcaktır.
Teknik Detaylar:
Tarama işlemi oluşturulan bir dinamik hash tablosunun kontrolu ile yapılır.Bu tablodaki ipler aşağıdaki standart kurulum değerlerini gösteriyorsa kara listeye alınır.
*Saniyede aynı sayfayı birden fazla istek yapılmışsa.
*Aynı çocuk süreç üzerinden 50 istek yapıldı ise.
*Kara listeye alındığı halde istek yapılıyorsa.
bu genellikle bu aralar çok yaygın olarka yapılan http flood scriptlerinden sunucuyu korumaktadır.Hem cpu kullanımını minimal de tutarken hemde sunucuyu bandwith türü yapılan saldırıladan korur.Belirlenen süre içinde engellenen kullanıcılar süre bittiğinde sunucuya takrar istek gönderebilir tabi firewall yada router ile sunucudan atılmadı ise.Sunucudan yaskalı olan ip listesi /tmp dizininde saklanmaktadır ve mod_dosevasive tarafından kontrol edilmektedir
root.root [/tmp]# ls dos*
dos-193.255.81.227 dos-81.213.181.185 dos-81.214.188.238 dos-81.215.159.222 dos-85.105.17.253 dos-85.97.78.30
dos-194.27.42.18 dos-81.213.187.111 dos-81.214.203.78 dos-81.215.183.102 dos-85.74.11.134 dos-85.97.98.100
dos-195.128.254.3 dos-81.213.233.159 dos-81.214.251.12 dos-81.215.246.136 dos-85.96.18.145 dos-85.98.14.238
dos-195.174.224.233 dos-81.213.84.72 dos-81.214.62.118 dos-81.215.250.196 dos-85.96.92.231 dos-85.98.59.72
dos-212.156.166.55 dos-81.214.129.167 dos-81.214.71.219 dos-81.215.69.255 dos-85.97.134.24 dos-85.98.89.144
dos-212.243.169.82 dos-81.214.142.126 dos-81.214.74.178 dos-85.100.102.164 dos-85.97.147.93 dos-85.99.182.152
dos-221.220.198.171 dos-81.214.147.92 dos-81.215.121.150 dos-85.100.31.39 dos-85.97.178.166 dos-85.99.211.167
dos-81.213.178.15 dos-81.214.149.198 dos-81.215.128.241 dos-85.101.1.139 dos-85.97.77.76 dos-85.99.67.87
root.root [/tmp]#
Kurulum İşlemleri
Apache 1.3.x için kurulum detayları.
1.) /usr/local/src dizinine geçiyoruz.
cd /usr/local/src
2.)Dosyayı sunucuya indiriyoruz.
wget [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
3.)Sıkıştırılmış arşiv dosyasını açıyoruz.
tar -zxvf mod_dosevasive_1.10.tar.gz
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
4.)Mod_dosevasive nin klasörüne giriyoruz
cd mod_dosevasive
5.)DSO desteği ile yüklüyoruz.
/etc/[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] -cia mod_dosevasive.c
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
Apache 2 için kurulum adımları
1.)[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] devel paketini kurarak başlıyoruz.
up2date -i [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
2.) /usr/local/src dizinie geçiyoruz
cd /usr/local/src
3.)Dosyası sunucuya indiriyoruz.
wget [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
4.)Arşiv dosyasını açıyoruz
tar -zxf mod_dosevasive_1.10.tar.gz
5.)Mod_dosevasive klasörüne giriyoruz
cd mod_dosevasive
6.)DSO modülü olarak kuruyoruz
/usr/sbin/apxs -cia mod_dosevasive20.c
Ayarların Yapılması
Apache 1.3.x için
1.)Apache nin ayar dosyası olan [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] dosyasını açıyoruz.
pico -w /usr/local/apache/etc/[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
2.)Ctrl+w tuşlarına basarak gelen arama ekranına AddModule mod_dosevasive.c yazıyoruz.Bu kısmın hemen altına aşağıda vereceğim değerleri yazıyorsunuz.
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
<IfModule mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
</IfModule>
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
3.)Tekrar ctrl+w tuşlarına basın gelen arama ekranına MaxRequestsPerChild MaxRequestsPerChild = 0 değerini görüceksiniz o değeri MaxRequestsPerChild 10000 olacak şekilde değiştirin.Bu sayede mod_dosevasive süresi dolan hash leri temizleyecektir.Ayrıca gene [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ta keepalive yazan kısım on olarak kalsın off yaparsanız çalışmayacaktır.
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
4.)Ctrl+x tuş kombinasyonunu kullanarak dosyayı kaydedip çıkın.
5.)Apache yi yeniden başlatın.
/etc/init.d/apache restart
Apache 2.x için ayarların yapılması
1.)Apache ayar dosyası olan [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] dosyasını açın
2.)LoadModule mod_dosevasive.c yazan yeri bulun altına aşağıdakileri ekleyin.
<IfModule mod_dosevasive20.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
DOSBlockingPeriod 600
</IfModule>
3.)Tekrar ctrl+w tuşlarına basın gelen arama ekranına MaxRequestsPerChild MaxRequestsPerChild = 0 değerini görüceksiniz o değeri MaxRequestsPerChild 10000 olacak şekilde değiştirin.Bu sayede mod_dosevasive süresi dolan hash leri temizleyecektir.Ayrıca gene [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ta keepalive yazan kısım on olarak kalsın off yaparsanız çalışmayacaktır.
4.)Dosyayı kaydedip apache yi yeniden başlatın.
Eklenen Değerlerin anlamları
DOSHashTableSize:
Her çocuk süreçteki en üst seviye nodlarının büyüklüğünü belirtir.Bu değeri yükseltmek performans artışını sağlayacaktır fakat aynı zamanda kayıtların kontrolu daha seyrek yapılıcaktır.Eğer yoğun bir sunucunuz varsa bu değeri yükseltin .
DOSPageCount:
Aynı sayfaya gelebilecek belirli bir süredeki istek sayısıdır.Belirli bir süre değeri DOSPageINterval değeri ile ayarlanır.Eğer bu istek sayısı aşılırsa ip kara listeye alınır sunucuya ulaşmaya çalıştığında 403 forbidden yanıtını alır.
DOSSiteCount
DOSSiteInterval değerinde belirtilen sürede siteden çekilebilecek obje,nesne sayısıdır.Resimler, style sheets, javascripts, SSI
DOSPageInterval
DOSPageCount değeri için ayarlanıcak saniyedir.
DOSSiteInterval
DOSSiteCount değeri için ayarlanıcak saniyedir.
DOSBlockingPeriod:
Kara listeye alınan iplerin 403 forbidden yanıtını alacağı saniye cinsinden süredir bunu yüksek tutmaya çalışın 10 dakika gibi yani 600
DOSEmailNotify
Herhangi bir saldırı olduğunda maillerin gideceği e-posta adresi.
DOSSystemCommand:
Sistem tarafından icra edilebilecek komutlar.
Kişisel Deneyim:
Daha önce http flood scriptlerini engellemek için bir çok firewall,apache için eklenti kurdum denedim ve çoğu gerçekten bir işe yaramıyordu kanatimce yada beklediğim şekilde etki etmiyordu örneğin mod_throotle dosevasive varken bunu kesinlikle kurmayın derim modu deneme platformum p4 2.4 1024 ram yaklaşık 80 siteyi barındıran orta yoğunlukta bir server modülü önce firewall ile iletişim kurmayacak şekilde kurdum böylece kara listeye alınan bir ip hemen serverdan uzaklaştırılmayacak 403 mesajları gönderilicekti.İlk denemememi 1024 k adsl ile yaptım %0.5 seviyesinde seyreden server load ve %30 seviyesinde seyreden ram saldırının birinci dakikasında yük yoğunluğu 60 a ram kullanımı 70 civarına çıktı modülün logları incelemeye başlaması ile 60 a çıkan yük yoğunluğu saldırıya devam etmeme rağmen 10 dakika içinde 1.3 seviyesine indi buda bu kadar ağır bir saldırı için çok normal hehrangi bir önlem alınmamış bir serverda böye bir saldırı yani dinamik php sayfalarına devamlı get isteği gelmesi önce apache yi failler sonra mysql u ve sunucunun kendine gelemiyeceğine garanti veririm.Yaklaşık 1.30 saat kadar saldırıyı sürdürdüm bu sürede ortama process sayısı
167.23 requests/sec dır görüldüğü gibi aşırı fazla bir sayı saldırı sırasında 30-40 arası olan ram kullanımı 80 e çıktı buda gayet doğal bir olay çünkü linux un işleyişi windows gibi değildir elindkei bütün işlemleri olabildiğince ram e yazar yeterli bellek kalmadığında ise bunları boşaltır ama benim görüşürüz 2gb ram li bir sunucuda bu tür ağır bir http flood un mod_dosevasive ile hiç bir etkisi olmayacaktır.APF firewall u mod_dosevasive ile iletişim kuracak şekilde ayarladığımda ise saldırı yaptığım ip 3 dakika içinde sistemden uzaklaştırıldı.
Benim kullandığım kurallar biraz daha agrasif olmasına karşın serverda çok yoğun siteler olmadığı için çok iyi sonuç verdiğini düşünüyorum.Agrasif kural zinciri
<IfModule mod_dosevasive.c>
DOSHashTableSize 3097
DOSPageCount 1
DOSSiteCount 25
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
</IfModule>
mod_dosevasive nın Firewall ile yardımıyla kara listeye alınanları sunucudan uzaklaştırması
1.)Konsolda root iken visudo yazın.Dosyanın en altına girip şunu ekleyin
nobody HOSTNAME = NOPASSWD: /usr/local/sbin/apf -d *
Burada hostname kısmına kendi hostname inizi yazın bunu öğrenmek için konsolda hostname komutunu kukkanabilirsiniz.Benim hostname im root.abcd.com diyelim oraya
nobody root. = NOPASSWD: /usr/local/sbin/apf -d *yazıyorum
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
2.)Apache ayar dosyası olan [Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] conf dosyasını gene açıyoruz
pico -w /usr/local/apache/etc/[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.]
3.)Daha önce eklediğimiz kısımı buluyoruz
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
hemen altına şu 2 satırı ekliyoruz
DOSEmailNotify email.adresiniz.com
DOSSystemCommand "sudo /usr/local/sbin/apf -d %s"
[Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.] ([Linkleri görebilmek için kayıt olmanız gerekiyor. http://www.forumturka.net/forum/register.php link'ini alıp browser'ınıza yapıştırmanız yeterlidir.])
4.)Dosyayı kaydedip çıkıyoruz ve apache yi yeniden başlatıyoruz
/etc/init.d/apache restart
5.)Artık kara listeye alınan ipler firewall tarafından sistemden banlanacaktır..
Anlatım : dropby23 Arkadaşımıza Aittir
Düzenleme ve güncelleme : AsiKaR