mod_security und SecRuleInheritance

lixx

New Member
Hallo Leute!

Ich habe eine Frage zur Direktive "SecRuleInheritance". Aber von Anfang an: Ich habe auf meinem Apache Server mod_security 2 installiert und hatte danach immer Probleme beim übermitteln von Formular-Daten. Aber nur dann, wenn in einem Form-Feld eine URL ("http://www.xxx.tld") vorkam. Bei selbstgebastelten PHP-Programmen hatte ich damit keine Probleme, nur bei Programmen wie Typo3 und phpBB. Ich habe dann folgende Direktiven versucht:
Code:
<Directory /var/www/vhosts/dom.com/httpdocs>
    SecRuleEngine Off
    SecRequestBodyAccess Off
</Directory>
Das hat soweit für Formular-Felder auch funktioniert. Nur wenn nun in einem Link eine URL war (Beispiel Typo3, Cache löschen: "http://dom.com/typo3/tce_db.php?vC=d7f8ae14c1&redirect=http%3A%2F%2Fdom.com%2Ftypo3%2Falt_menu.php&cacheCmd=all") klappte es wieder nicht.

Jetzt habe ich die Direktive SecRuleInheritance gefunden, mit der nun alles klappt. Das finde ich natürlich toll! Leider habe ich keinen Dunst, was diese eigentlich bewirkt. Meine modsecurity-Kenntnisse und mein Englisch reichen leider nicht aus um die Doku auf www.modsecurity.org zu verstehen. Und bei Google finde ich auch keine deutschen Sachen dazu.

Kann mir bitte jemand sagen ob die Abschaltung dieser Direktive, also
Code:
<Directory /var/www/vhosts/dom.com/httpdocs>
    SecRuleInheritance Off
</Directory>
nicht mehr Schaden anrichtet als es nützt?

Danke euch im Voraus!

lg lixx
 
Wieso schaltest Du nicht einfach nur die verantwortliche Regel aus..?
Je nach Konfiguration bekommst Du ja mit der Fehlermeldung (im Browser und im Log..) eine Trigger-ID.. Anhand dieser dann die Regel aus den configs raussuchen, die Rule-ID abgleichen und diese dann wie folgt abschalten:

Code:
<Location /var/www/vhosts/dom.com/httpdocs>
    SecRuleRemoveById 12345
</Location>

...dann schalteste nicht gleich alle geerbten Regeln ab...

Hoffe geholfen zu haben,
stimpy
 
Wieso schaltest Du nicht einfach nur die verantwortliche Regel aus..?

Danke für Deine Antwort. Habe mal Deinen Rat befolgt und in die vhost.conf folgendes gesetzt:
Code:
<Directory /var/www/vhosts/domain.com/httpdocs>
#    SecRuleInheritance Off
    SecRuleRemoveById 300018
    SecRuleRemoveById 300040
</Directory>
Wollte jede Regelverletzung in der modsec_debug.log nacheinander deaktivieren und komme nun zu einem Log-Eintrag, der keine ID mehr anbietet.
Code:
[12/Aug/2008:16:49:35 +0200] [domain.com/sid#b86b24b8][rid#b8ab3c70][/typo3/tce_db.php][1] Access denied with code 500 (phase 2). Pattern match "\\.php\\?.*=(https?|ftp)\\:/.*(cmd|command)=" at REQUEST_URI.

Was kann ich da jetzt machen?
 
Er sagt Dir ja den Pattern, der zutraf:

Code:
"\\.php\\?.*=(https?|ftp)\\:/.*(cmd|command)="

Findest Du den nicht bei Deinen Regeln? Da sollte dann eigentlich eine id bei stehen..

...Und Du kannst SecRuleRemoveById uebrigens mehrere ids uebergeben:

Code:
SecRuleRemoveById 300018 300040

Gruss,
stimpy
 
Findest Du den nicht bei Deinen Regeln? Da sollte dann eigentlich eine id bei stehen..

Nein, da steht keine ID:
Code:
#Generic PHP remote file injection
SecRule REQUEST_URI "!(/do_command)" chain
SecRule REQUEST_URI "\.php\?.*=(https?|ftp)\:/.*(cmd|command)="

Und Du kannst SecRuleRemoveById uebrigens mehrere ids uebergeben:

Ah! toll, das gefällt mir ;)
 
Hm - das' ja heiss.. :)
Dann versuch ihr doch mal selbst eine id zu geben:

Code:
#Generic PHP remote file injection
SecRule REQUEST_URI "!(/do_command)" chain
SecRule REQUEST_URI "\.php\?.*=(https?|ftp)\:/.*(cmd|command)=" \
    "id:12345"

Gruss,
stimpy
 
Last edited by a moderator:
Dann versuch ihr doch mal selbst eine id zu geben:

Naja, das möchte ich verhindern. Diese Regeln werden ja regelmässig von gotroot.com aktuallisiert.

Aber zurück zum Anfang. die Direktive "SecRuleInheritance Off" würde alle Regeln deaktivieren. Habe ich das richtig verstanden? Aber was ist dann der Unterschied zur "SecRuleEngine Off"? Die übrigens nicht den gewünschten Effekt ergibt. Die Direktive "SecRequestBodyAccess Off" schaltet ja nur POST-Sendungen ab.

Mich wundert ja, dass ich der einzige mit dem Problem bin, und die mit der selben Frage, die ich gefunden habe, mit der Direktive "SecRuleEngine Off" anscheinend zufrieden sind.
 
Naja, das möchte ich verhindern. Diese Regeln werden ja regelmässig von gotroot.com aktuallisiert.

Ja, das macht Sinn.. ;)
Aber dann weiss ich auch nicht wirklich - so wie ich das verstehe, schaltet "SecRuleInheritance" nur die Vererbung von Globalen Regeln ab und waere somit "SecRuleEngine" eigentlich vorzuziehen - denke ich.. ;)
Aber wenn "SecRuleEngine Off" schon nicht funktioniert, ist da ja ganz grundlegend etwas merkwuerig..
Wo stellst Du das denn aus? In einer .htaccess oder direkt in der .conf eines eventuellen VirtualHosts?

Gruss,
stimpy
 
Wo stellst Du das denn aus? In einer .htaccess oder direkt in der .conf eines eventuellen VirtualHosts?

Direkt in der vhost.conf auf einem VS. Unter Plesk funktioniert, glaube ich, die .htaccess dafür gar nicht.

Aber dann weiss ich auch nicht wirklich - so wie ich das verstehe, schaltet "SecRuleInheritance" nur die Vererbung von Globalen Regeln ab und waere somit "SecRuleEngine" eigentlich vorzuziehen - denke ich.. ;)

Dann wede ich wohl mal die "SecRuleInheritance" beibehalten :D

lg lixx
 
...Funktioniert das denn?

Wie gesagt, ja. Mir gings nur darum, wenn ich schon mod_security installiert habe, dass ich damit nicht Tür und Tor öffne. Aber in jedem Beitrag, wo jemand ein ähnliches Problem hat, hat es immer geheißen: SecRuleEngine Off. Und das funktioniert bei mir nur bedingt.
 
Aber in jedem Beitrag, wo jemand ein ähnliches Problem hat, hat es immer geheißen: SecRuleEngine Off. Und das funktioniert bei mir nur bedingt

Ja, das ist es ja, was mich wundert.. ;)

Aber um Deine Frage ganz genau zu beantworten:

Mach halt..! ;) Tuer und Tor oeffnest Du ja insofern schon nicht, als dass mod_security ja nur einer von vielen Bausteinen in Deiner Sicherheitsstrategie sein sollte..
Klar waere es besser, nur die tatsaechlich stoerenden Regeln auszuschalten, aber wenn das aus oben genannten (ja sehr schluessigen) Gruenden nicht geht, geht's halt net..
Besser als ein komplettes "SecRuleEngine Off" ist es allemal, da es Dir ja wenigstens noch die Moeglichkeit laesst, fuer bestimmte Pfade eigene Regeln zu definieren..

Alles natuerlich nur meine Meinung... Wenn's jemand besser weiss, bin ich auch interessiert.. ;)

Gruss,
stimpy
 
Back
Top