[Apache2 + mod_security] Installiert, aber macht nix (Loggen oder Rules)

dev

Registered User
So, nun komme ich alleine leider nicht mehr weiter. Ich habe hier ein gut funktionierendes System:

• Debian Etch
• Apache 2.23
• PHP 5.irgendwas als fcgid + suexec

Heute wollte ich endlich den mod_security installieren, das binäre Paket habe ich von hier:

Index of /~agi/debian/libapache-mod-security2/2.5.x

in der /etc/apache2/apache2.conf habe ich dies eingetragen:

<IfModule mod_security.c>

SecRuleEngine On

SecAuditEngine On
SecAuditLog /var/log/apache/modsec-audit.log
SecAuditLogParts ABCFHZ
SecAuditLogType concurrent
SecAuditLogStorageDir /var/log/apache2/
SecAuditLogRelevantStatus ^[45]

SecDebugLog /var/log/apache2/modsec-debug.log
SecDebugLogLevel 5

#SecDefaultAction "log,deny,status:500,phase:2"
SecDefaultAction log,auditlog,deny,status:403,phase:2,t:none

SecRule REQUEST_URI|QUERY_STRING "dirty"

#Include /etc/apache2/mod-security/*.conf

</IfModule>


Ist sozusagen eine Basiskonfig mit einer Rule -> "dirty".

Mein generelles ApacheError-Log liegt in /var/log/apache2/error.log und sagt dass hier:

[Fri Oct 17 04:45:36 2008] [notice] ModSecurity for Apache/2.5.5 (ModSecurity: Open Source Web Application Firewall) configured.
[Fri Oct 17 04:45:36 2008] [notice] suEXEC mechanism enabled (wrapper: /usr/lib/apache2/suexec)
[Fri Oct 17 04:45:37 2008] [notice] Apache configured -- resuming normal operations

Das ist allerdings der einzige Pieps, den mod_sec macht. Es wird nichts geloggt und nichts geblockt. Auch in den ApacheLogs (error, access) zu den jeweiligen vHosts steht nichts (jeder vHost hat bei mir seine eigene Logfiles, php.ini, tmp-Dir etc.).

Ich kann also 'ne URL wie *.tld/index.php?get=dirty eingeben (für einen meiner vHosts) und die index.php wird trotzdem normal geparst. Logfiles wie oben angegeben (modsec-*.log) existieren nicht. Und beim Debuglevel 5 müsste ja einiges anfallen?!

Hat jemand 'ne Idee dazu?
 
Last edited by a moderator:
Den Pfad wo du siehst was mod_security macht hast du aber angegeben
Code:
SecAuditLog /var/log/apache2/modsec-audit.log
mit
Code:
tail -f /var/log/apache2/modsec-audit.log

kannst du auch sofort sehe, was passiert. Exsitieren die Dateien denn schon ? Wenn nicht
Code:
touch /var/log/apache2/modsec-audit.log
touch /var/log/apache2/modsec-debug.log
erstellen lassen.

Ach überings deine Pfad angabe für die modsec-audit.log ist falsch. Alles wird in /var/log/apache2 gespeichert. Außer du hast ein extra Verzeichnis erstellt.
 
Last edited by a moderator:
Hello LinuxNetBox,

danke für Deine Mühe und das Finden des Fehlers, ist korrigiert.

Ich habe alles befolgt und trotz aller penetrierenden Maßnahmen sieht es in diesem Bereich der Logs traurig wie eh und je aus. Chmod 777 habe ich nur testweise gesetzt, auch mit 640 ergab sich nichts:

/var/log/apache said:
0 -rwxrwxrwx 1 root adm 0 2008-10-17 11:29 modsec-audit.log
0 -rwxrwxrwx 1 root adm 0 2008-10-17 11:29 modsec-debug.log


Wieso wird das Ding inititalisiert und macht dann nichts?
 
Mach mal bitte folgenden Test. Erstelle eine datei in dem default Verzeichniss von Apache2
z.B. test.php mit folgendem Inhalt
Code:
<? 
    file $text=$_GET['file'];
    echo "Content of File $text";
    echo `cat $text`;
?>

Dann rufe die url mit nachfolgender syntax auf http://.../test.php?file=/etc/passwd

Dies sollte zu einer Fehlermeldung kommen und in der modsec-audit.log einen Logeintrag geben.

Die Rule bitte dann auf folgendes ändern:
Code:
SecRule REQBODY_PROCESSOR_ERROR "!@eq 0" \
"phase:2,t:none,log,deny,msg:'Failed to parse request body.',severity:2"

SecRule MULTIPART_STRICT_ERROR "!@eq 0" \
"phase:2,t:none,log,deny,msg:'Multipart request body \
failed strict validation: \
PE %{REQBODY_PROCESSOR_ERROR}, \
BQ %{MULTIPART_BOUNDARY_QUOTED}, \
BW %{MULTIPART_BOUNDARY_WHITESPACE}, \
DB %{MULTIPART_DATA_BEFORE}, \
DA %{MULTIPART_DATA_AFTER}, \
HF %{MULTIPART_HEADER_FOLDING}, \
LF %{MULTIPART_LF_LINE}, \
SM %{MULTIPART_SEMICOLON_MISSING}'"

SecRule MULTIPART_UNMATCHED_BOUNDARY "!@eq 0" \
"phase:2,t:none,log,deny,msg:'Multipart parser detected a possible unmatched boundary.'"
 
Last edited by a moderator:
Danke! Es läuft jetzt!

Ich habe den mod noch einmal neu installiert und zwar nach dieser Anleitung: HowtoForge Linux Tutorials Debian Etch apache2 mit Mod_Security 2.5.5 richtig installiert

Komischerweise lief diesmal alles nach 5 Minuten, er loggt und die Regeln werden auch angewandt.

Was habe ich heute anders gemacht?

• zunächst das "alte" mod-security entfernt
• für die Quelle

deb Index of /~agi/debian/libapache-mod-security2/2.5.x/etch ./

die Key-Warnungen entfernt
• mod-security erneut installiert
• die Regeln von der HowtoForge Seite genommen

So richtig kann ich mir das nicht erklären.

Eben habe ich noch die libxml2 + libxml2-dev installiert, da lief aber schon alles.

Naja, nun ist es fein und ich kann mich mal mit den Regeln beschäftigen und meine htaccess entlasten :)
 
Back
Top