Modsecurity ist ein wirklich feines Tool für den Apache Webserver um sich gegen sogenannte CrossSiteScripting Attacken zu schützen. Leider ist die Version 2.5 derart heftig gestrickt, das mod_security nahezu alle Anfragen verbietet. Insbesondere das Zusammenspiel mit fertigen PHP Skripten wie Joomla funktioniert mit eingeschaltetem ModSecurity nicht mehr oder nur noch bedingt.
In ModSecurity 2.5 wurden die Regeln aus dem Tool 'phpids' übernommen. Diese Regeln gehören zu den base_rules und liegen in: /etc/httpd/modsecurity.d/base_rules/modsecurity_crs_41_phpids_filters.conf
Um weiter mit PHP Skripten wie Joomla, Typo3, etc. arbeiten zu können, ist es unabdingbar die Apache Konfiguration hinsichtlich mod_security anzupassen.
Um nicht die kompletten phpids filter abzuschalten ist ein wenig arbeit nötig. Dazu muss die Datei: /var/log/httpd/modsec_audit.log auf Einträge überprüft werden.
Schlägt mod_security nun zu und zeigt auf dem Screen etwas wie:
Forbidden You don't have permission to access /administrator/index.php on this server.
suchen wir uns aus: /var/log/httpd/modsec_audit.log die Anfrage heraus. Wir benötigen die sogenannte ID der Regel. Außerdem sollte geklärt werden, dass der Eintrag auch von unserer eigenen IP Adresse kam. Nicht das eine Regeln deaktiviert wird, die eventuell gerade von einem potentiellen Angreifer kam.
Anschließend wechseln wir in die Konfigurationsdatei des Webservers (.htaccess Einträge werden in mod_security 2.5. nicht mehr berücksichtigt)
In die Konfigurationsdatei des Webservers fügen wir den folgenden Einträg zu:
<LocationMatch "/administrator/index.php"> SecRuleRemoveById 958705 958700 </LocationMatch>
Wobei die ID 958705 die gerade gefundene ID war, bei der mod_security zugeschlagen hat. Weitere ID's werden mit einem Leerzeichen getrennt einfach hintereinander angehängt. Anschließen wir der Webserver neu gestartet. Die Regeln 958705 und 958700 sind nun deaktiviert, sofern die Anfrage bei /administrator/index.php aufläuft.
Eine interessante aber nicht zu empfehlende Variante wäre:
<LocationMatch "/administrator/index.php"> SecRuleEngine Off </LocationMatch>
Mit dieser Einstellung wird mod_security für die Datei /administrator/index.php komplett abgeschaltet.
Oder sogar:
<LocationMatch "/administrator/"> SecRuleEngine Off </LocationMatch>
Mit dieser Einstellung wird mod_security für den Ordner /administrator/ komplett abgeschaltet.
Weiterführende Links:
http://php-ids.org http://www.modsecurity.org
|