[HowTo] mod_evasive für Apache2

marneus

Registered User
Dieses HowTo ist nur für Apache2 geeignet!

Getestet wurde dieses HowTo auf folgendem System:
  • SuSe 9.3
  • Apache 2.x - Prefork

  1. Aktuelles Paket runterladen
  2. In /usr/local/src/mod_evasive entpacken
  3. In das Verzeichnis mod_evasive wechseln
  4. Mit dem Editor Deiner Wahl mod_evasive20.c öffnen
  5. Die Zeile 45 umändern in
    Code:
    #define MAILER  "/bin/mail -t %s"
  6. Je nachdem, welchen Apache Du wie einsetzt, folgenden APXS ausführen, um das Modul zu kompilieren.
    Apache2:
    Code:
    /usr/sbin/apxs2 -cia mod_evasive20.c
    Apache2-Prefork:
    Code:
    /usr/sbin/apxs2-prefork -cia mod_evasive20.c
  7. Eine eigene Conf-Datei für mod_evasive anlegen
    Code:
    touch /etc/apache2/conf.d/mod_evasive.conf
  8. Mit dem Editor Deiner Wahl folgenden Inhalt (je nachdem ob Prefork oder nicht) in die eben erstellte mod_evasive.conf
    Apache2:
    Code:
    LoadModule evasive20_module     /usr/lib/apache2/mod_evasive20.so
    Apache2-Prefork:
    Code:
    LoadModule evasive20_module     /usr/lib/apache2-prefork/mod_evasive20.so
    und danach dann danach bei beiden folgendes in die gleiche Datei:
    Code:
    <IfModule mod_evasive20.c>
      DOSHashTableSize 3097
      DOSPageCount 5
      DOSSiteCount 100
      DOSPageInterval 2
      DOSSiteInterval 2
      DOSBlockingPeriod 600
      DOSEmailNotify deine@email-adresse.de
    </IfModule>
  9. rcapache2 stop
  10. rcapache2 start

Das war's dann auch schon. Nun einfach mal mit der mitgelieferten test.pl den Server versuchen zu "nuken":
Code:
cd /usr/src/mod_evasive
perl test.pl
Am Anfang kommen HTTP OK und dann sollte es sich auf 403 Forbidden Antworten ändern. Geschieht dies, ist alles glatt gelaufen!

Schritt 4 & 5 mit Dank an Freel@ncer14! Bei Fragen, einfach PN oder in den folgenden Thread schauen.
 
Last edited by a moderator:
Kurze Ergänzung:
Für SuSE findet man apxs2 im Paket apache2-devel.

Für Debian ist die Mail-Einstellung (Punkt 5) zu überspringen.
Für die Punkte 7 und 8 muß natürlich das Verzeichnis /etc/apache2/mods-available/ verwendet und der Symlink nach ./mods-enabled/ gesetzt werden.

huschi.
 
worker

hello all. sorry I not write german language :(

thanks for document Huschi.

Huschi:

I'm using plesk 8.0.1 on suse linux 9.3

murat:~ # locate apxs
/usr/sbin/apxs2
/usr/sbin/apxs2-prefork
/usr/sbin/apxs2-worker
/usr/share/apache2/manual/programs/apxs.html
/usr/share/apache2/manual/programs/apxs.html.en
/usr/share/apache2/manual/programs/apxs.html.ko.euc-kr
/usr/share/apache2/manual/programs/apxs.xml
/usr/share/apache2/manual/programs/apxs.xml.ko
/usr/share/apache2/manual/programs/apxs.xml.meta
murat:~ #

line 4 apache-worker.
is it necesarry to add this or some things... If there is a problem can you help me???
:confused:
 
Ich habe auch Suse 9.3 und habe es so gemacht wie hier steht
bekomme aber am ende eine Fehlermeldung :confused:

/usr/local/src/mod_evasive # /usr/sbin/apxs2-prefork -cia mod_evasive20.c
/usr/share/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -g -fPIC -Wall -fno-strict-aliasing -D_LARGEFILE_SOURCE -DAP_HAVE_DESIGNATED_INITIALIZER -DLINUX=2 -D_REENTRANT -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE -DAP_DEBUG -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -I/usr/include/apache2-prefork -I/usr/include/apache2 -I/usr/include/apache2 -c -o mod_evasive20.lo mod_evasive20.c && touch mod_evasive20.slo
mod_evasive20.c: In function `access_checker':
mod_evasive20.c:212: warning: implicit declaration of function `getpid'
mod_evasive20.c:212: warning: long int format, int arg (arg 3)
mod_evasive20.c: At top level:
mod_evasive20.c:327: warning: no previous prototype for `ntt_node_create'
mod_evasive20.c: In function `destroy_hit_list':
mod_evasive20.c:301: warning: control reaches end of non-void function
mod_evasive20.c: In function `create_hit_list':
mod_evasive20.c:118: warning: control reaches end of non-void function
/usr/share/apache2/build/libtool --silent --mode=link gcc -o mod_evasive20.la -rpath /usr/lib/apache2-prefork -module -avoid-version mod_evasive20.lo
/usr/share/apache2/build/instdso.sh SH_LIBTOOL='/usr/share/apache2/build/libtool' mod_evasive20.la /usr/lib/apache2-prefork
/usr/share/apache2/build/libtool --mode=install cp mod_evasive20.la /usr/lib/apache2-prefork/
cp .libs/mod_evasive20.so /usr/lib/apache2-prefork/mod_evasive20.so
cp .libs/mod_evasive20.lai /usr/lib/apache2-prefork/mod_evasive20.la
cp .libs/mod_evasive20.a /usr/lib/apache2-prefork/mod_evasive20.a
ranlib /usr/lib/apache2-prefork/mod_evasive20.a
chmod 644 /usr/lib/apache2-prefork/mod_evasive20.a
PATH="$PATH:/sbin" ldconfig -n /usr/lib/apache2-prefork
----------------------------------------------------------------------
Libraries have been installed in:
/usr/lib/apache2-prefork

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib/apache2-prefork/mod_evasive20.so
apxs:Error: Config file /etc/apache2/httpd2-prefork.conf not found.
h897777:/usr/local/src/mod_evasive #

ich habe keine httpd2-prefork.conf habe nur eine httpd.conf ?
 
Last edited by a moderator:
Hallo,

...
Je nachdem, welchen Apache Du wie einsetzt, folgenden APXS ausführen, um das Modul zu kompilieren.
...

Dan hast du das wohl nicht ganz aufmerksam gelesen :)
 
Ich habe Apache2-Prefork es kommt mit beiden Befehlen die gleiche meldung :confused:
wenn ich in der Dadei /etc/apache2/conf.d/mod_evasive.conf
LoadModule evasive20_module

/usr/lib/apache2-prefork/mod_evasive20.so
und <IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 5
DOSSiteCount 100
DOSPageInterval 2
DOSSiteInterval 2
DOSBlockingPeriod 600
DOSEmailNotify deine@email-adresse.de
</IfModule>

einfüge bietet er mir meine Webseiten zum Downloaden an :confused:
nach ein paar mal reloaden bleibt die Seite Weiss
 
Last edited by a moderator:
Hat keiner eine Idee wo der Fehler sein könnte
ich habe Suse 9.3 und Apache/2.0.53
ich habe nochmal versucht zu installieren aber ohne erfolg :(
der Fehler ist der gleiche wenn ich /usr/sbin/apxs2-prefork -cia mod_evasive20.c ausführe bekomme ich am ende eine Fehlermeldung

chmod 755 /usr/lib/apache2-prefork/mod_evasive20.so
apxs:Error: Config file /etc/apache2/httpd2-prefork.conf not found.
h897777:/usr/local/src/mod_evasive #

Die httpd2-prefork.conf habe ich gar nicht bei mir gibt es nur httpd.conf
kann es sein das es bei meiner Version gar nicht geht ? oder gibt es da noch eine andere Version ?

ich habe auch schon Run $APACHE_ROOT/bin/apxs -i -a -c mod_evasive20.c versucht da kommt das gleiche
 
@Mario101
Ich hatte die gleiche Meldung wie du beim Basteln. Allerdings läuft es bei mir trotzdem wunderbar.

Ich hab allerdings auch etwas anderes in der modul.conf stehen.
Code:
LoadModule evasive20_module     /usr/lib/apache2/mod_evasive20.so
 
@DarkAngel

ich benutze die prefork Varieante

@Huschi

ich denke das ich eine std. Apache-Verzeichnis Strucktur habe ist ein Strato Image :confused:
 
@Huschi

Also ich habe /usr/lib/apache2-prefork/mod_evasive20.so drinn stehen

@v40

das ist schon merkwürdig :confused:

ich habe mal über Google nach den Fehler meldungen gesucht aber nichts gefunden
das tool scheint nicht weit verbreitet zu sein
mod_evasive20.c: In function `access_checker':
mod_evasive20.c:212: warning: implicit declaration of function `getpid'
mod_evasive20.c:212: warning: long int format, int arg (arg 3)
mod_evasive20.c: At top level:
mod_evasive20.c:327: warning: no previous prototype for `ntt_node_create'
mod_evasive20.c: In function `destroy_hit_list':
mod_evasive20.c:301: warning: control reaches end of non-void function
mod_evasive20.c: In function `create_hit_list':
mod_evasive20.c:118: warning: control reaches end of non-void function

Vieleicht habe ich eine Falsche Version erwischt ?

Apache Evasive Maneuvers Module
For Apache 1.3 and 2.0
Copyright (c) Deep Logic, Inc.
Version 1.10 [2005.0117]
 
Last edited by a moderator:
@Mario101
Nun auch ich habe das normale Strato image und es funktioniert so wie ich es geschrieben hatte. Wie kommst du darauf das du die prefork variante hast? Weil bei nen "top" prefork mit hinter steht? Wenn ja hab ich auch trotzdem geht es mit den normlen Apache2 Verzeichnis. Wie wär es mit einfach mal ausprobieren? =)
 
Gerade probiert

/usr/local/src/mod_evasive # /usr/sbin/apxs2 -cia mod_evasive20.c
/usr/share/apache2/build/libtool --silent --mode=compile gcc -prefer-pic -O2 -march=i586 -mcpu=i686 -fmessage-length=0 -Wall -g -fPIC -Wall -fno-strict-aliasing -D_LARGEFILE_SOURCE -DAP_HAVE_DESIGNATED_INITIALIZER -DLINUX=2 -D_REENTRANT -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE -DAP_DEBUG -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations -pthread -I/usr/include/apache2 -I/usr/include/apache2 -I/usr/include/apache2 -c -o mod_evasive20.lo mod_evasive20.c && touch mod_evasive20.slo
mod_evasive20.c: In function `access_checker':
mod_evasive20.c:212: warning: implicit declaration of function `getpid'
mod_evasive20.c:212: warning: long int format, int arg (arg 3)
mod_evasive20.c: At top level:
mod_evasive20.c:327: warning: no previous prototype for `ntt_node_create'
mod_evasive20.c: In function `destroy_hit_list':
mod_evasive20.c:301: warning: control reaches end of non-void function
mod_evasive20.c: In function `create_hit_list':
mod_evasive20.c:118: warning: control reaches end of non-void function
/usr/share/apache2/build/libtool --silent --mode=link gcc -o mod_evasive20.la -rpath /usr/lib/apache2 -module -avoid-version mod_evasive20.lo
/usr/share/apache2/build/instdso.sh SH_LIBTOOL='/usr/share/apache2/build/libtool' mod_evasive20.la /usr/lib/apache2
/usr/share/apache2/build/libtool --mode=install cp mod_evasive20.la /usr/lib/apache2/
cp .libs/mod_evasive20.so /usr/lib/apache2/mod_evasive20.so
cp .libs/mod_evasive20.lai /usr/lib/apache2/mod_evasive20.la
cp .libs/mod_evasive20.a /usr/lib/apache2/mod_evasive20.a
ranlib /usr/lib/apache2/mod_evasive20.a
chmod 644 /usr/lib/apache2/mod_evasive20.a
PATH="$PATH:/sbin" ldconfig -n /usr/lib/apache2
----------------------------------------------------------------------
Libraries have been installed in:
/usr/lib/apache2

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,--rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
chmod 755 /usr/lib/apache2/mod_evasive20.so
[activating module `evasive20' in /etc/apache2/httpd2-prefork.conf]
h89777:/usr/local/src/mod_evasive #
 
Last edited by a moderator:
Eigentlich meinte ich das du das hier in deine Modul.conf eintragen sollst
Code:
LoadModule evasive20_module     /usr/lib/apache2/mod_evasive20.so
Du hast es ja mit den -prefork verzeichnis versucht
 
Habe jetzt nochmal die Halbe Nacht probiert hat keiner mehr eine Idee was ich noch machen könnte :(

kann es sein das die rechte vieleicht nicht stimmen

drwxr-xr-x 3 root root 4096 2006-11-18 16:52 .
drwxr-xr-x 4 root root 4096 2006-11-17 16:35 ..
-rw-r--r-- 1 root root 1373 2006-11-18 13:50 CHANGELOG
-rw-r--r-- 1 root root 26 2006-11-18 13:50 .cvsignore
drwxr-xr-x 2 root root 4096 2006-11-18 16:52 .libs
-rw-r--r-- 1 root root 18103 2006-11-18 13:50 LICENSE
-rwxr-xr-x 1 root root 470 2006-11-18 13:50 Makefile.tmpl
-rwxr-xr-x 1 root root 18245 2006-11-18 13:50 mod_evasive20.c
-rw-r--r-- 1 root root 826 2006-11-18 16:52 mod_evasive20.la
-rw-r--r-- 1 root root 330 2006-11-18 16:52 mod_evasive20.lo
-rw-r--r-- 1 root root 38648 2006-11-18 16:52 mod_evasive20.o
-rwxr-xr-x 1 root root 0 2006-11-18 16:52 mod_evasive20.slo
-rwxr-xr-x 1 root root 19395 2006-11-18 13:50 mod_evasive.c
-rw-r--r-- 1 root root 15621 2006-11-18 13:50 mod_evasiveNSAPI.c
-rw-r--r-- 1 root root 14269 2006-11-18 13:50 README
-rwxr-xr-x 1 root root 406 2006-11-18 13:50 test.pl
 
Last edited by a moderator:
Hier nochmal die Schreibrechte von /usr/share/apache2/build



drwxr-xr-x 2 root root 4096 2006-05-02 11:05 .
drwxr-xr-x 5 root root 4096 2006-02-01 19:13 ..
-rwxr-xr-x 1 root root 6700 2006-02-01 19:08 apr-config-prefork
-rwxr-xr-x 1 root root 6699 2006-02-01 19:13 apr-config-worker
-rw-r--r-- 1 root root 5725 2006-02-01 19:13 apr_rules.mk
-rwxr-xr-x 1 root root 5588 2006-02-01 19:08 apu-config-prefork
-rwxr-xr-x 1 root root 5587 2006-02-01 19:13 apu-config-worker
-rwxr-xr-x 1 root root 1267 2006-02-01 19:13 config.nice
-rw-r--r-- 1 root root 4668 2006-02-01 19:13 config_vars.mk
-rw-r--r-- 1 root root 4716 2006-02-01 19:08 config_vars.mk-prefork
-rw-r--r-- 1 root root 4705 2006-02-01 19:13 config_vars.mk-worker
-rwxr-xr-x 1 root root 2714 2006-02-01 19:13 instdso.sh
-rw-r--r-- 1 root root 870 2006-02-01 19:13 library.mk
-rwxr-xr-x 1 root root 206317 2006-02-01 19:13 libtool
-rw-r--r-- 1 root root 769 2006-02-01 19:13 ltlib.mk
-rw-r--r-- 1 root root 830 2006-02-01 19:13 program.mk
-rw-r--r-- 1 root root 6788 2006-02-01 19:13 rules.mk
-rw-r--r-- 1 root root 1229 2006-02-01 19:13 special.mk
 
Google und man wird es kaum glauben, auch die Homepage des Projekts gibt Auskunft darüber, was mod_evasive überhaupt macht. Aber um etwas installieren zu wollen sollte man doch schon vorher wissen, was das überhaupt ist, oder täusche ich mich da?

Ich bin so frei und poste dir einmal ein Quote aus dem ersten Ergebnis aus der Google Suche nach dem Suchwort mod_evasive.

Das Apache Modul mod_evasive soll den Apachen gegen DDos-Angriffe schützen.
mod_evasive legt die IP-Adresse des anfragenden Clients in einer internen Hash-Tabelle ab, und zählt, wie oft dasselbe Objekt innerhalb einer definierten Zeitspanne angefordert wird.
Wenn die Anzahl der Aufrufe einen bestimmten Grenzwert erreicht, erhält der Client eine 403 Fehlermeldung.

Quelle: mod_evasive - apacheblog.de
 
Back
Top