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 vorhanden 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:
# Server MPM: Prefork
# Dann mittels apt-get die richtige apxs Version installieren und mit Step 4 fortfahren:
apt-get install apache2-prefork-dev
# Ansonsten solltet ihr die threaded Variante 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
# Den Pfad zur Logdatei anpassen: /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.
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.
Hallo,
gerne doch.
1. Guter Punkt, wurde überarbeitet
2. Geschmackssache
3. Done
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
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.
Hallo,
supper hat geklappt .
Kann ich nun auch meine eigenen Regeln erstellen? Kennst du vielleicht eine gute Doku in deutsch?
LG Jochen
Debian hat als ServerRoot "/etc/apache2" per default. Daher die Fehlermeldung bei Jochen.
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
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
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?
Hallo,
wo gibt es eine ausführliche Beschreibung, am besten in deutsch, wie man eigene Regeln definiert?
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
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
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
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
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