modsec2iptables: Fehlermeldung in suexec.log

JamesG

Registered User
Hi!,

ich habe bei mir versucht modsec2iptables zum laufen zu bringen.
Wer noch nicht weis, was es ist, hier kurze Beschreibung und installationsanleitung: http://www.fbis.ch/index-de.php?page=13&frameset=4

Leider bekomme ich folgende Fehlermeldungen in der: "suexec.log":

[2006-02-27 06:36:36]: uid: (10021/benutzer) gid: (10001/10001) cmd: modsec2iptables
[2006-02-27 06:36:36]: command not in docroot (/usr/sbin/modsec2iptables)
[2006-02-27 06:38:27]: uid: (10014/benutzer2) gid: (10001/10001) cmd: modsec2iptables
[2006-02-27 06:38:27]: command not in docroot (/usr/sbin/modsec2iptables)
[2006-02-27 06:38:27]: uid: (10014/benutzer3) gid: (10001/10001) cmd: modsec2iptables
[2006-02-27 06:38:27]: command not in docroot (/usr/sbin/modsec2iptables)
[2006-02-27 06:49:08]: uid: (10020/benutzer4) gid: (10001/10001) cmd: modsec2iptables
[2006-02-27 06:49:08]: command not in docroot (/usr/sbin/modsec2iptables)
[2006-02-27 06:49:08]: uid: (10020/benutzer5) gid: (10001/10001) cmd: modsec2iptables
[2006-02-27 06:49:08]: command not in docroot (/usr/sbin/modsec2iptables)

Ich benutze "Plesk" auf einem RootDS, "benutzer..", ist einfach der Benutzer, den ich in "Plesk" als "User" für eine bestimmte Domain angelegt habe.

Ich hoffe, ich habe genug Informationen gegeben...

Kennt jemand das Problem, bzw.: weis, wie man es beheben kann???

thx,
JamesG
 
Wo hast Du den Befehl 'SecFilterDefaultAction' eingebunden?
Poste am besten mal die ganze Datei.

huschi.
 
Hi,

anbei die ganze mod-security.conf:
Guin: habe ich nicht vergessen...

Code:
<IfModule mod_security.c>

# Only inspect dynamic requests
# (YOU MUST TEST TO MAKE SURE IT WORKS AS EXPECTED)
#SecFilterEngine DynamicOnly

SecFilterEngine On

# Reject requests with status 500
SecFilterDefaultAction "deny,log,status:500,exec:/usr/sbin/modsec2iptables"

# Some sane defaults
SecFilterScanPOST On
SecFilterCheckURLEncoding On
SecFilterCheckCookieFormat On
SecFilterCheckUnicodeEncoding On
SecFilterNormalizeCookies On
# enable version 1 (RFC 2965) cookies
SecFilterCookieFormat 1

SecServerResponseToken On

#If you want to scan the output, uncomment these
#SecFilterScanOutput On
#SecFilterOutputMimeTypes "(null) text/html text/plain"

# Accept almost all byte values
SecFilterForceByteRange 1 255

# Server masking is optional
#fake server banner - NOYB used - no one needs to know what we are using
SecServerSignature "NOYB"

#SecUploadDir /tmp
#SecUploadKeepFiles On

# Only record the interesting stuff
SecAuditEngine RelevantOnly
SecAuditLog /var/log/apache2/modsec_audit_log

# You normally won't need debug logging
SecFilterDebugLevel 0
SecFilterDebugLog /var/log/apache2/modsec_debug_log

#And now, the rules
#Remove any of these Include lines you do not use or have rules for.

#First, add in your exclusion rules:
#These MUST come first!
Include /etc/modsecurity/exclude.conf

#Application protection rules
Include /etc/modsecurity/rules.conf

#Comment spam rules
Include /etc/modsecurity/blacklist.conf

#Bad hosts, bad proxies and other bad players
Include /etc/modsecurity/blacklist2.conf

#Bad clients, known bogus useragents and other signs of malware
Include /etc/modsecurity/useragents.conf

#Known bad software, rootkits and other malware
Include /etc/modsecurity/rootkits.conf

#Signatures to prevent proxying through your server 
#only rule these rules if your server is NOT a proxy
Include /etc/modsecurity/proxy.conf

Include /etc/modsecurity/recons.conf
Include /etc/modsecurity/badips.conf
Include /etc/modsecurity/jitp.conf

#Additional rules for Apache 2.x ONLY!  Do not add this line if you use Apache 1.x
Include /etc/modsecurity/apache2-rules.conf
</IfModule>
MOD: CODE-Tag gesetzt
 
Last edited by a moderator:
Mmmmh, es scheint wohl am Apache zu hängen. Egal was für ein Perl-Script er ausführen soll, er schickt es an suExec. suExec hat aber einen festen DocumentRoot und will nicht darüber hinaus...

Lösungsvorschläge:
a) suExec ausschalten.
b) Das Ding in den DocumentRoot von suExec verschieben.

huschi.
 
Huschi said:
Mmmmh, es scheint wohl am Apache zu hängen. Egal was für ein Perl-Script er ausführen soll, er schickt es an suExec. suExec hat aber einen festen DocumentRoot und will nicht darüber hinaus...

Lösungsvorschläge:
a) suExec ausschalten.
b) Das Ding in den DocumentRoot von suExec verschieben.

huschi.

Das würde stimmen, denn in der suexec.log habe ich mehr über ausgeführte Scripte stehen und es sind keine Fehlermeldungen...
Die Option Nr.2: wie mach ich das?

thx,
JamesG
 
Last edited by a moderator:
Huschi said:
Mit "suexec2 -V" den eingestellten DocumentRoot auslesen. (Z.B. "/var/www/")
Und dann die Datei dahin kopieren.

huschi.

server1:~# suexec2 -V
-bash: suexec2: command not found

habe es auch mit "suexec" versucht:


server1:~# suexec -V
-bash: suexec: command not found

thx,
JamesG
 
Nutze die Macht: Nutze find, locate oder whereis.

Normalerweise versteckt es sich hier: /usr/sbin/suexec2

huschi.
 
Huschi said:
Nutze die Macht: Nutze find, locate oder whereis.

Normalerweise versteckt es sich hier: /usr/sbin/suexec2

huschi.

OK,

Ich habe direkt nach suexec2 gesucht und das gefunden:

/opt/psa/suexec/psa-suexec2 (da ist nur eine Datei drinnen)
/usr/lib/apache2/suexec2 (kein Ordner)
/usr/lib/apache2/suexec2.saved_by_psa (kein Ordner)
/usr/share/man/man8/suexec2.8.gz

nun wie finde ich den eingestellten DocumentRoot raus, mit "locate was", aber was?

thx,
JamesG
 
Last edited by a moderator:
JamesG said:
nun wie finde ich den eingestellten DocumentRoot raus, mit "locate was", aber was?
Mit dem Parameter -V wie oben schon beschrieben.

Du mußt die Teile des Puzzle's schon selber zusammen fügen.

huschi.
 
Hi,

jetzt habe ich modsec2iptables in ein meiner Webs hineinkopiert, die Pfade in mod_security.conf angepasst:

cp modsec2iptables /var/www/vhosts/meinedomain/httpdocs

und zur Sicherheit nochmalls: chmod u+s /var/www/vhosts/meinedomain/httpdocs

jetzt kommt die Fehlermeldung:

uid: (10001/bunutzer) gid: (10001/10001) cmd: modsec2iptables
[2006-04-12 15:41:11]: file is either setuid or setgid: (/var/www/vhosts/meinedomain/httpdocs/modsec2iptables)

thx,
JamesG
 
Last edited by a moderator:
Jetzt habe ich suexec abgeschaltet: "a2dismod suexec"

nun kommt der fehler:

server1:/etc/apache2/mods-available# /etc/init.d/apache2 restart
Forcing reload of web server: Apache2Syntax error on line 16 of /var/www/vhosts/meinedomain/conf/httpd.include:
Invalid command 'SuexecUserGroup', perhaps mis-spelled or defined by a module not included in the server configuration
 
Nun, der letzte Fehler ist leicht zu erklaeren.

In httpd.include gibt es eine Anweisung SuexecUserGroup welche nur mit suexec anwendbar ist.
 
Ich bin ehrlich gesagt auch etwas enttäuscht, daß die mod_security in diesem Falle grundsätzlich im Kontext des VirtualHost's agiert. Das stört doch wirklich gewaltig. Obwohl in der Doku von mod_security steht, daß suExec umschift wird... :(
Lösung hab ich in dem Fall keine mehr parat.

huschi.
 
Huschi said:
Ich bin ehrlich gesagt auch etwas enttäuscht, daß die mod_security in diesem Falle grundsätzlich im Kontext des VirtualHost's agiert. Das stört doch wirklich gewaltig. Obwohl in der Doku von mod_security steht, daß suExec umschift wird... :(
Lösung hab ich in dem Fall keine mehr parat.

huschi.

Wirklich schade:(
vieleicht findet sich eines Tages ne Lösung...

Danke,
JamesG
 
modsec2iptables und mod_security (failed)

Ich versuche auch schon länger "modsec2iptables" mit mod_security (1.9.5) zu verwenden. (Suse 9.3)

"modsec2iptables" wird auch aufgerufen, nur steht dann im Logfile von "mod_security" ein "failed".
Code:
mod_security-executed: /usr/sbin/modsec2iptables (failed)

Nun gut, schauen wir uns die "Error"-Meldungen mal an:
[error_log] <- Apache

Code:
Executing command "/usr/sbin/modsec2iptables" [[B]hostname[/B] "blabla.de"] [uri "/"]
File execution failed: modsec2iptables (End of file found) [[B]hostname[/B] "blabla.de"] [uri "/"]

hostname: hier steht meine Domain ??

Wo könnte der Haken sein? -> End of file found ?

In der "mod_security.conf" steht:

Code:
SecFilterDefaultAction "deny,log,status:500,exec:/usr/sbin/modsec2iptables"
Muss man hier nicht auch die IP mitgeben?
Bin etwas verwirrt, weil bei "mod_evasive" die IP mit "%s" übergeben wird.

Ein "modsec2iptables -s" funktioniert an der Console.
Verzeichnis /var/lock/modsec2iptables ist angelegt. Rechte entsprechend gesetzt. In Verbindung mit "mod_evasive" wird dort auch geschrieben.

Nachtrag:

Eben in das Log "suexec.log" geschaut:

Code:
08-05 15:52:41]: uid: (1000/userxxx) gid: (60006/60006) cmd: modsec2iptables
08-05 15:52:41]: command not in docroot (/usr/sbin/modsec2iptables)

Tja, damit wären wir wieder am Anfang des Threads...

Nachtrag 2:

"modsec2iptables" nun testhalber in die Webroot verschoben, damit "suexec" nicht flennt.

Code:
[2007-08-05 18:15:41]: uid: (1000/userxxx) gid: (60006/60006) cmd: modsec2iptables
[2007-08-05 18:15:41]: [B]file is either setuid or setgid[/B]: (/home/c/domain.de/public_html/modsec2iptables)

Könnte man das messbaren Fortschritt nennen? Und: Ich mag "suexec" nicht! =)

Beste Grüße
Rico
 
Last edited by a moderator:
Back
Top