HowTo: mod_security 2.5 Debian Etch installieren

Um mod_security in der brandneuen Version 2.5 aus den Sources zu compilien, müssen zunächst diverse Libraries und Pakete nachinstalliert werden.

Nachfolgende Step-by-Step Anleitung geht von einem bereits installierten und funktionstüchtigen Apache2 Setup aus den Distributionspackages von Debian Etch aus.

1. Nachinstallieren der benötigten Pakete

apt-get update
apt-get install apache2.2-common flex libc6-dev gcc openssl libxml2 libxml2-dev lua5.1 \
libpcre3-dev libapr1 libapr1-dev libapreq2-dev aprsd libaprutil1 libaprutil1-dev g++ \
cpp cpp-4.1 libstdc++5 libstdc++6 libstdc++6-4.1-dev

2. Einbinden der von mod_security benötigten Apache2 Module

a2enmod unique_id
 
nano /etc/apache2/apache2.conf
 
Falls noch nicht vorhandenen folgende Zeile einfügen:
LoadFile /usr/lib/libxml2.so

Danach einmal den Webserver neustarten und wenn soweit alles geklappt hat, ist die Hälfte bereits geschafft.

3. Falls nicht schon vorhanden apxs (apxs2) installieren

Dieser Step kommt auf die Version eures Webservers an.

apache2 -V
 
Zeigt euch die Version an. Sollte dort stehen:
<strong>Server MPM:     Prefork</strong>
Dann mittels apt-get die richtige apxs Version installieren und mit Step 4 fortfahren:
apt-get install apache2-prefork-dev
 
Ansonsten solltet ihr das Debian threaded Modell haben:
apt-get install apache2-threaded-dev

4. Sources von mod_security 2.5 compilieren

cd /usr/src
wget http://www.modsecurity.org/download/modsecurity-apache_2.5.0.tar.gz
tar xfz modsecurity-apache_2.5.0.tar.gz
cd modsecurity-apache_2.5.0/apache2
./configure --with-apxs=/usr/bin/apxs2
make
make test

Sollte es zu Fehlern im unter Step-4 genannten Ablauf kommen, liegt dies vermutlich an fehlenden Libraries. Ihr seid gerne eingeladen mich zu kontaktieren

5. Installation von mod_security

make install
mv ../rules /etc/apache2/modsecurity
##
mkdir /etc/apache2/logs
oder den Pfad zur Logdatei anpassen in der Datei /etc/apache2/modsecurity/modsecurity_crs_10_config.conf
##
 
Einfügen von mod_security in die Datei /etc/apache2/apache2.conf:
 
LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so
Include /etc/apache2/modsecurity/*.conf

6. Starten des Apachen mit mod_security

/etc/init.d/apache2 restart

Wenn nun der Apache2 startet hat alles geklappt und euer Webserver ist gegen Angriffe über PHP etc. schon ein ganzes Stück weiter geschützt.

Es ist jedem angeraten sowohl die Rules unter /etc/apache2/modsecurity anzuschauen als auch die Apache2 error_log oft zu kontrollieren, da hier alle abgewiesenen Zugriffe protokolliert werden.

Da es zu False Positive kommen wird, ist dies also vor allem in der Anfangszeit sehr wichtig.
Natürlich können die .conf Dateien unter /etc/apache2/modsecurity mittels einem Editor geprüft und editiert werden, sodass Regeln sehr einfach zu deaktivieren sind.

Ebenso das einfügen von Costum Rules z.B. dem Rulekit von Got Root?

Wie man solche Regeln erstellt und z.B. aus anderen Quellen wie Snort einbinden kann, werde ich in einem anderen Blogeintrag dokumentieren.

KategorienApache - PHP, Debian
  1. 25. Mai 2008, 15:16 | #1

    Schöne Anleitung, genau was ich suchte!

    Ich hätte nur ein paar kleine Anmerkungen, die mir während der Installation auffielen:
    1. Man kann auch einfach „a2enmod unique_id“ eingeben.
    2. Anstatt LoadFile und Include in die apache2.conf einzufügen empfiehlt es sich dem Beispiel des Apache zu folgen und die beiden Zeilen in /etc/apache2/mods-available/modsecurity.load abzulegen und nach /etc/apache2/mods-enabled/modsecurity.load einen symbolischen Link zu legen.
    3. Die LoadModule Zeile muss angepasst werden zu /usr/lib/apache2/modules/mod_security2.so , da er sonst in /etc/apache2/modules sucht und dort nichts findet.

  2. 25. Mai 2008, 22:19 | #2

    Hallo,

    gerne doch.

    1. Guter Punkt, wurde überarbeitet
    2. Geschmackssache
    3. Done

  3. 27. Mai 2008, 10:51 | #3

    Hallo,
    ich habe alles nach deinem Beispiel installiert, jedoch bekomme ich ein Fehlermeldung

    Forcing reload of web server (apache2)…apache2: Syntax error on line 64 of /etc/apache2/apache2.conf: Cannot load /etc/apache2/modules/mod_security2.so into server: /etc/apache2/modules/mod_security2.so: cannot open shared object file: No such file or directory

    ich bin alles nochmal durchgegangen, aber er findet das Verzeichniss nicht?

    Dank LG Jochen

  4. 27. Mai 2008, 11:15 | #4

    Hallo,

    dann hat Alexander recht und Debian hat hier still und heimlich etwas verändert.

    Die Zeile in der Konfigurationsdatei muss lauten:

    LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so

    Danach sollte alles bei dir laufen.

  5. 27. Mai 2008, 11:46 | #5

    Hallo,

    supper hat geklappt .
    Kann ich nun auch meine eigenen Regeln erstellen? Kennst du vielleicht eine gute Doku in deutsch?

    LG Jochen

  6. 4. Juni 2008, 13:10 | #6

    Debian hat als ServerRoot „/etc/apache2“ per default. Daher die Fehlermeldung bei Jochen.

  7. Robert
    9. Juli 2008, 21:25 | #7

    Hallo,
    danke für die Anleitung. Ich versuche schon längere Zeit die Modsecurity Console zu installieren – ohne Erfolg. Kann mir jemand hierbei helfen oder einen Tip/Link etc. geben?

    Danke und LG Robert

  8. Markus
    16. Juli 2008, 07:40 | #8

    Hi,

    bei der Installation der zusätzlichen Debian Pakete wird ein aprsd-Deamon auf dem Server gestartet, der im 2 Sekunden Takt eine Telnet Verbindung zu aprs.tamu.edu aufbauen möchte, ich möchte das aber nicht! Wird das Pakte aprsd wirklich benötigt?

    Markus

  9. paris
    12. August 2008, 08:51 | #9

    coole anleitung ich habe nur leider das problem das mod_security2 bei mir absolut nichts loggen will und ich weiss nicht warum. der pfad ist richtig das modul läuft und auch die config files werden eingebunden:( trotzdem keine einzige zeile logs. kann mir eventuell einer weiterhelfen?

  10. 11. November 2008, 14:21 | #10

    Hallo,

    wo gibt es eine ausführliche Beschreibung, am besten in deutsch, wie man eigene Regeln definiert?

  11. 9. Februar 2009, 00:43 | #11

    Hi all

    Danke für die Anleitung erstmal. Ich bin totaler anfänger deswegen meine Fragen:

    Es lief alles gut bis bei Punkt 5

    make install #####(LIEF GUT)
    mv ../rules /etc/apache2/modsecurity #####(GEHT NICHT siehe unten fehler)
    ## (Weiss nicht hab keine meldung erhalten
    mkdir /etc/apache2/logs (lief gut)
    oder den Pfad zur Logdatei anpassen in der Datei /etc/apache2/modsecurity/modsecurity_crs_10_config.conf Hab nix gemacht
    ##

    Einfügen von mod_security in die Datei /etc/apache2/apache2.conf:

    LoadModule security2_module /usr/lib/apache2/modules/mod_security2.so
    Include /etc/apache2/modsecurity/*.conf

    Fehler:
    srv20d4:/usr/src/modsecurity-apache_2.5.7/apache2# mv ../rules /etc/apache2/modsecurity
    mv: Aufruf von stat für â../rulesâ nicht möglich: Datei oder Verzeichnis nicht gefunden

    Habe ich etwas falsch gemacht? wie kann ich prüfen ob ich es richtig installiert habe? erkenne ich das in der phpinfo

    Danke für die Hilfe

  12. moby
    6. April 2009, 13:18 | #12

    hilfe!

    versuche seit ewig modsecurity aufm ubuntuserver zum laufen zu bringen und krieg an der gleichen stelle immer die gleiche fehlermeldung:

    /etc/apache2/modsecurity-apache_2.5.9/apache2# sudo ./configure –with-apxs=/usr/bin/apxs2

    checking for g++… g++

    checking for C++ compiler default output file name… a.out

    checking whether the C++ compiler works… yes

    checking whether we are cross compiling… no

    checking for suffix of executables…

    checking for suffix of object files… o

    checking whether we are using the GNU C++ compiler… yes

    checking whether g++ accepts -g… yes

    checking for gcc… gcc

    checking whether we are using the GNU C compiler… yes

    checking whether gcc accepts -g… yes

    checking for gcc option to accept ISO C89… none needed

    checking how to run the C preprocessor… gcc -E

    checking for a BSD-compatible install… /usr/bin/install -c

    checking whether ln -s works… yes

    checking whether make sets $(MAKE)… yes

    checking for ranlib… ranlib

    checking for perl… /usr/bin/perl

    checking for grep that handles long lines and -e… /bin/grep

    checking for egrep… /bin/grep -E

    checking for ANSI C header files… yes

    checking for sys/types.h… yes

    checking for sys/stat.h… yes

    checking for stdlib.h… yes

    checking for string.h… yes

    checking for memory.h… yes

    checking for strings.h… yes

    checking for inttypes.h… yes

    checking for stdint.h… yes

    checking for unistd.h… yes

    checking fcntl.h usability… yes

    checking fcntl.h presence… yes

    checking for fcntl.h… yes

    checking limits.h usability… yes

    checking limits.h presence… yes

    checking for limits.h… yes

    checking for stdlib.h… (cached) yes

    checking for string.h… (cached) yes

    checking for unistd.h… (cached) yes

    checking for an ANSI C-conforming const… yes

    checking for inline… inline

    checking for C/C++ restrict keyword… __restrict

    checking for size_t… yes

    checking whether struct tm is in sys/time.h or time.h… time.h

    checking for uint8_t… yes

    checking for stdlib.h… (cached) yes

    checking for GNU libc compatible malloc… yes

    checking for working memcmp… yes

    checking for atexit… yes

    checking for fchmod… yes

    checking for getcwd… yes

    checking for memset… yes

    checking for strcasecmp… yes

    checking for strchr… yes

    checking for strdup… yes

    checking for strerror… yes

    checking for strncasecmp… yes

    checking for strrchr… yes

    checking for strstr… yes

    checking for strtol… yes

    configure: looking for Apache module support via DSO through APXS

    configure: found apxs at /usr/bin/apxs2

    configure: checking httpd version

    configure: httpd is recent enough

    checking for libpcre config script… /usr/bin/pcre-config

    configure: using ‚-L/usr/lib -lpcre‘ for pcre Library

    checking for libapr config script… /usr/bin/apxs2

    apxs:Error: Unknown option: -.

    apxs:Error: Unknown option: -.

    apxs:Error: Unknown option: f.

    apxs:Error: Unknown option: -.

    apxs:Error: Unknown option: f.

    Usage: apxs -g [-S =] -n

    apxs -q [-S =] …

    apxs -c [-S =] [-o ] [-D [=]]

    [-I ] [-L ] [-l ] [-Wc,]

    [-Wl,] [-p] …

    apxs -i [-S =] [-a] [-A] [-n ] …

    apxs -e [-S =] [-a] [-A] [-n ] …

    apxs:Error: Unknown option: -.

    Usage: apxs -g [-S =] -n

    apxs -q [-S =] …

    apxs -c [-S =] [-o ] [-D [=]]

    [-I ] [-L ] [-l ] [-Wc,]

    [-Wl,] [-p] …

    apxs -i [-S =] [-a] [-A] [-n ] …

    apxs -e [-S =] [-a] [-A] [-n ] …

    apxs:Error: Unknown option: -.

    Usage: apxs -g [-S =] -n

    apxs -q [-S =] …

    apxs -c [-S =] [-o ] [-D [=]]

    [-I ] [-L ] [-l ] [-Wc,]

    [-Wl,] [-p] …

    apxs -i [-S =] [-a] [-A] [-n ] …

    apxs -e [-S =] [-a] [-A] [-n ] …

    apxs:Error: Unknown option: -.

    Usage: apxs -g [-S =] -n

    apxs -q [-S =] …

    apxs -c [-S =] [-o ] [-D [=]]

    [-I ] [-L ] [-l ] [-Wc,]

    [-Wl,] [-p] …

    apxs -i [-S =] [-a] [-A] [-n ] …

    apxs -e [-S =] [-a] [-A] [-n ] …

    configure: *** apr library not found.

    configure: error: apr library is required

    root@modsec:/etc/apache2/modsecurity-apache_2.5.9/apache2#

    ich hab alle apr pakete die ich so finden konnte nachinstalliert da tut sich nix;( komme nicht weiter,hilfe!finde dazu NIX im netz!

    Wäre über Hilfe echt dankbar!

    GRuß,

    moby

  13. Dominik
    6. April 2009, 13:20 | #13

    Hallo moby,

    das HowTo bezieht sich auf mod_security Version 2.5.0
    In Version 2.5.9 gab es einige Änderungen die nicht gerade Debian/Ubuntu freundlich sind.

    Ich habe bisher selbst nur einmal versucht die aktuelle Version unter Debian zu compilieren, was
    mir jedoch in Version 2.5.9 auf die schnelle ebenfalls nicht gelang.

    Da ich anschließend auf Version 2.5.0 zurück gegangen bin und keine Zeit für großartige Fehlersuche hatte,
    kann ich dir da leider auch nicht helfen.

    ~ Dominik

  14. Robby
    26. Juni 2009, 17:21 | #14

    Hallo,

    füge das der configure Zeile hinzu, dann müsste es auch mit einer neueren Version (2.5.9) gehen.
    –with-apr=/Pfad/zu/apr-1-config

    Cya

  15. 1. März 2011, 09:14 | #15

    Moin,

    nah dran,
    hat letztenendes bei mir so geklappt:

    ./configure –with-apxs=/usr/bin/apxs2 –with-pcre=/usr –with-apr=/usr/bin/apr-1-config –with-apu=/usr/bin/apu-1-config

    Einzeiler versteht sich.
    Gruß
    eo

  1. 9. Mai 2009, 00:52 | #1
  2. 5. Mai 2010, 13:41 | #2