mod_evasive e un modul Apache care oferă o metodă eficientă de protecție împotriva atacurilor HTTP de tip DoS, DDoS sau brute force. Protecția există datorită unor tabele de tip hash (Key->Value) interne care includ IP-urile vizitatorilor și URI-urile vizitate. Când se cere de prea multe ori aceeași pagină într-un interval de o secundă IP-ul vizitatorului este blocat pentru o perioadă de timp. De asemenea se blochează și când se fac mai mult de 50 de cereri de la aceeași adresă IP, pe același proces apache.
Ultima variantă stabilă a mod_evasive e 1.10.1 și o putem instala urmând pașii de mai jos:
Code:
[root@server ~]# mkdir install
[root@server ~]# cd install
[root@server ~/install]# wget http://www.zdziarski.com/projects/mod_evasive/mod_evasive_1.10.1.tar.gz
[root@server ~/install]# tar -zxvf mod_evasive_1.10.1.tar.gz
x mod_evasive/
x mod_evasive/.cvsignore
x mod_evasive/LICENSE
x mod_evasive/Makefile.tmpl
x mod_evasive/README
x mod_evasive/mod_evasive.c
x mod_evasive/mod_evasive20.c
x mod_evasive/mod_evasiveNSAPI.c
x mod_evasive/test.pl
x mod_evasive/CHANGELOG
[root@server ~/install]# cd mod_evasive
[root@server ~/install/mod_evasive]# /usr/local/sbin/apxs -cia mod_evasive.c
cc -DLOGIN_CAP -funsigned-char -O2 -fno-strict-aliasing -pipe -DDOCUMENT_LOCATION=
"/usr/local/www/data" -DDEFAULT_PATH="/bin:/usr/bin:/usr/local/bin" -DHARD_SERVER_LIMIT=
512 -fpic -DSHARED_MODULE -I/usr/local/include/apache -c mod_evasive.c
[activating module `evasive' in /usr/local/etc/apache/httpd.conf]
cp mod_evasive.so /usr/local/libexec/apache/mod_evasive.so
chmod 755 /usr/local/libexec/apache/mod_evasive.so
cp /usr/local/etc/apache/httpd.conf.new /usr/local/etc/apache/httpd.conf
rm /usr/local/etc/apache/httpd.conf.new
[root@server ~/install/mod_evasive]#
După cum se vede, am downloadat ultima versiune de mod_evasive, am dezarhivat-o folosind comanda tar -zxvf mod_evasive_1.10.1.tar.gz și apoi am instalat modulul folosind binarul apxs, care vine cu instalarea serverului apache /usr/local/sbin/apxs -cia mod_evasive.c. E posibil ca în funcție de sistemul de operare folosit sau de modul de personalizare a instalării apache locația fișierului apxs să difere caz în care trebuie să căutați calea corectă către binar.
Dacă versiunea serverului apache e 2.x, nu 1.3 ca în cazul serverului pe care am instalat, trebuie să înlocuiți parametrul transmis binarului apxs din mod_evasive.c în mod_evasive20.c.
În mod normal apxs modifică fișierul httpd.conf pentru a include modulul. Putem verifica dacă a fost introdus folosind comanda awk:
Code:
[root@server ~/install]# awk '/mod_evasive/' /usr/local/etc/apache/httpd.conf
LoadModule evasive_module libexec/apache/mod_evasive.so
AddModule mod_evasive.c
[root@server ~/install]#
De data asta modulul a fost adăugat corect. Dacă nu găsiți cele două linii în httpd.conf va trebui să editați manual fișierul și să le adăugați.
După instalare putem personaliza puțin modul de protecție adăugând următorul bloc de instrucțiuni în fișierul httpd.conf:
Code:
<ifmodule mod_evasive.c>
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 90
</ifmodule>
Cu toate că e un modul foarte util, se pare că autorul nu și-a făcut timp pentru a scrie un manual de instrucțiuni. Oricum, numele directivelor sunt sugestive pentru orice cunoscător al limbii engleze.
Pe lângă directivele de mai sus mai sunt cel puțin încă două care ar starni interesul. Prima este DOSWhitelist care permite crearea de excepții și se folosește de forma DOSWhitelist 1.2.3.4 unde 1.2.3.4 e IP-ul privilegiat. A doua este DOSSystemCommand cu ajutorul căreia putem determina modulul să interacționeze cu alte componente ale serverului – ex. firewall sau sistem de alertare. Pentru a bloca automat IP-urile care crează probleme putem folosi directiva DOSSystemCommand sub forma DOSSystemCommand “sudo -u root /sbin/ipfw -q add 51000 deny ip from %s to any in via em0″.
Articol preluat de la
http://www.lamp.ro