Apache ddos saldırılarını önlemek için Mod_evasive kurulumu
APF ile ortak çalışabilen bir firewall olan evasive genel olarak hatta artık genel değil direk olarak zaman istek kavramı ile çalışır ayarlanması basit bir uygulama örnek kişi 10 sn de 50 link’e tıklarsa APF onu banlayıverir 8)
Kuruluma geçelim
wget http://www.ni.net.tr/dosyalar/mod_evasive_1.10.1.tar.gz
tar -zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive*
/usr/local/apache/bin/apxs -cia mod_evasive.c
bu apache 1.3.xx versiyonları için birde apache 2 için yazıyorum
wget http://www.ni.net.tr/dosyalar/mod_evasive_1.10.1.tar.gz
tar -zxvf mod_evasive_1.10.1.tar.gz
cd mod_evasive*
/usr/sbin/apxs -cia mod_evasive20.c
kurulumu böylece tamamladık sanmayın daha bitmedi şimdi httpd.conf dosyamıza ayar komutlarını ekleyelim…
httpd.conf’u bir şekilde açın nano pico vim ne kullanıyorsanız ve arama yaparak
AddModule mod_evasive.c
kısmını bulun altına ekleyin…
<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 1
DOSSiteCount 25
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
</IfModule>
biraz ayarlardan bahsedelim buradaki değerler neler sırayla yazıyorum
DOSHashTableSize : Kayıtların kontrolü daha seyrek yada daha sık yapmak
DOSPageCount : DOSPageINterval komutuna verilen değer aslında bir zaman olacak DOSPageINterval üzerindeki zaman içinde ne kadar tıklama yapılacağını gösterir.. (Ör DOSPageINterval 5 ise bu 5sn demek DOSPageCount da 10 ise buradan şu sonuç çıkar 5 sn de 10 linke basan banlanır…)
DOSSiteCount : Buda yukarıdaki gibi DOSSiteInterval üzerine verilecek değerin zamanına bağlı olarak DOSSiteInterval üzerine girilen zaman kaydına göre sayfadan çekilebilecek resim ve benzeri css java dosyalarını limitliyen bölümdür. (Ör: DOSSiteInterval 10 ise DOSSiteCount 100 ise 10sn de 100 resim çekilebilir demek… aşılırsa 101 olursa o kişi uzaklaştırılır.)
DOSPageInterval : DOSPageCount üzerinde anlattım DOSPageCount da yazılacak sınır değerinin zaman değeri buraya yazılır.
DOSSiteInterval : Bunuda DOSSiteCount bölümünde anlatmış olduk buda objelerin DOSSiteCount için verilen sınırın nekadar zamanda olduğunu gösterir.
DOSBlockingPeriod : Bu ayarlamalarda henüz APF kullanmadık APF yoksa bu bölümde yer alan değer sn cinsinden bu kuralları çiğneyen kişileri sayfadan uzaklaştırma süresidir kuralları aşanlar DOSBlockingPeriod 1000 ise mesela.. 1000 sn boyunca sayfada 403 hata kodu alacaklar..
Belli başlı ayarları gösterdim size arkadaşlar şimdi gelin bu güzel yazılımımızı apf ile ortak çalıştıralım her şeyden önce bir apf kurmanız gerek )
önce konsola visudo yazın hemen karşınıza pico veya nano ile açılmış bir dosya çıkacak en alt kısmına
nobody server. = NOPASSWD: /usr/local/sbin/apf -d *
yukarıda alıntı şeklinde yazılan kodları kopyalayın ama nobady den sonra server. (server nokta) olan kısım sizin hostname’niz ile değişmeli hostname’niz nedir bilmiyorsanız visudo ya girmeden önce konsola hostname yazın o size söyler hostname’nizin sadece ilk kısmını alın mesela hostname server.ni.net.tr ise sadece server. olacak…
kaydet ve çık yaparak güzelce kaydedin tekrar httpd.conf u açarak <IfModule mod_evasive.c> başlıklı eklenilen evasive ayar bölümüne gelin ifmodüle kısmını bozmadan altına
DOSSystemCommand "sudo /usr/local/sbin/apf -d %s"
yukarıda yazılanları kopyalayın..
görüntüsü aynen alt kısımdaki gibi olmalı
<IfModule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 1
DOSSiteCount 25
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
DOSSystemCommand "sudo /usr/local/sbin/apf -d %s"
</IfModule>
kaydedin ve çıkın daha sonra apache’yi yeniden başlatın ki ayarlar aktif hale gelsin 8) artık çeşitli zamanlarda kuralları geçen kişileri apf otomatik olarak banlayacaktır…
kimler kuralları geçiyor acaba? merak ediyorsanız
cd /tmp
ls -la dos*
komutları ile görebilirsiniz arada sırada
rm -rf /tmp/dos*
şeklinde tmp dizininizi temizlerseniz iyi olur…
BFD(Brute Force Dedection)
BFD ssh yada apache şifrelenmiş dizinleri proftpd ve pureftpd şifreleri imap ve pop3 gibi daemonlara yapılan girişlerde yanlış yazılan şifreler için belli bir limiti aştığı zaman giriş yapmaya çalışan kullanıcı apf yardımı ile uzaklaştırır. APF olmadan BDF kurulmaz APF kurulumunu vermiştim daha önce…
Kuralım…
wget http://www.ni.net.tr/dosyalar/bfd-current.tar.gz
tar -zxvf bfd-current.tar.gz
cd bfd-*
./install.sh
bitti bile ) kurulumu basit ve güzel bir uygulama bunuda öneririm APF varsa mutlaka kurun %100 kurulması gereken birşey değil bunu ben öneriyorum sadece…
bir ayar yapmak gerekiyor…
/usr/local/bfd/conf.bfd dosyasını pico nano veya vim ne kullanıyorsanız açın ALERT_USR= şeklinde bir yer olacak aratarak bulabilirsiniz bulduktan sonra tırnak içinde verilen 0 değerini 1 olarak değiştirin….
/usr/local/sbin/bfd -s
ve BFD çalışıyor…
APF ile beraber gelen antidos apf altında çalışan bir modül olarak kullanılır ne kadar ben işe yaramadığını savunsam da çoğu hosting satıcısı arkadaşımız kurmuş olmalı load seviyesi birden yükselince artık zaten antidos modülünün çalışması bile güç oluyor apache loglarını okuyan ve arka arkaya istek yapan elemanları kendi belirteceğimiz limitlerde banlayacak esavise gibi…
/etc/apf/ad/conf.antidos bu dosya açılıyor nano pico veya vim hangisi hoşunuza gidiyorsa vim benim vazgeçilmezim…
burada zaten çeşitli ayarların çeşitli açıklamaları yazar kendinize özel ayarlamalar yapabilirsiniz EVET=1 HAYIR=0 olarak düzenlemeleri yapabilirsiniz…
EVET yani değeri "1" olacak ayarları listeliyorum…
LP_KLOG=
USR_ALERT=
DET_SF=
cron (zamanlanmış görevler) kısmına herhangi bir şekilde ekleyin…
*/1 * * * * root /etc/apf/ad/antidos -a >> /dev/null 2>&1
pek cron ile aranız iyi değil ise crontab -e yazarak nano yada pico ile açılan ekrana bu yukarıda yazılanları ekleyin altına üstüne fark etmez… başta yazılan 1 1dk da 1 kez olarak antidos taraması yapacak ne kadar sık olursa bu sunucuyu o kadar yoracak 5 veya 10 yapabilirsiniz…
Fazla birşey anlatmaya gerek yok netstat üzerinde ençok bağlantı oluşturanı yine bizim belirleyeceğimiz oranlarda APF yardımı ile banlıyor…
Kurulum
mkdir /usr/local/ddos
wget -q http://www.ni.net.tr/dosyalar/ddos.zip
cp ddos.zip /usr/local/ddos
cd /usr/local/ddos
unzip ddos.zip
chmod 0755 /usr/local/ddos/ddos.sh
cp -s /usr/local/ddos/ddos.sh /usr/local/sbin/ddos
İsterseniz cron üzerine eklersiniz ama ÖNERMİYORUM
/usr/local/ddos/ddos.sh --cron > /dev/null 2>&1
konsolda her ddos yazışınızda netstat komudu ile sistemde bulunanların ip numaralarını listeleyecektir
Ayar Doyası: /usr/local/ddos/ddos.conf (vim nano pico ne varsa açın )
NO_OF_CONNECTIONS= her ip başına bağlantı sınırı standart 100
EMAIL_TO= e-posta adresiniz
BAN_PERIOD= ban süresi
Cron üzerine eklemezseniz saldırı oldugu anda konsolda sadece ddos yazmanız yeterli olacaktır o sizin yerinize işlem yapar APF ile belirlenen sınırı aşanları banlar…