====== mod_security Modul ====== ==== Versionsinformation ==== * Webserver: Apache 2.4.x / Apache 2.2.x * mod_security Versionsnummer 2.9.1 * mod_security Regeln: OWASP CRS 3.0(gold) ==== Modulfunktion ==== Laut Webseite [[https://modsecurity.org/]] ermöglicht das Modul die den Betrieb einer Web Application Firewall und soll SQL Injections und Cross Site Scripting Attacks verhindern. ==== Installation ==== Das Modul von [[https://modsecurity.org/download.html]] herunterladen und installieren. Falls das Modul nicht für das genutzte Betriebssystem des Webservers verfügbar ist, empfiehlt es sich, es selbst zu kompilieren. Die Datei modsecurity.conf-recommended an den eigenen Server anpassen und als modsecurity.conf in das Verzeichnis mit den Webserverkonfigurationsdateien kopieren. Die Firewall - Regelsätze von [[https://github.com/SpiderLabs/owasp-modsecurity-crs/releases]] ebenfalls herunterladen. Die Konfigurationsdatei crs-setup.conf.example an den eigenen Server anpassen und zusammen mit den Firewall-Regeln aus dem rules Verzeichnis an die in der modsecurity.conf angegebene Stelle kopieren. Den Webserver neu starten. ==== Konfiguration ==== Es empfiehlt sich, die Konfigurationseinstellung **SecRuleEngine** in modsecurity.conf zuerst einaml auf **DetectionOnly** zu lassen, um zu verhindern, dass durch False Positives der Webserver seine Aufgaben nicht mehr wahrnimmt. Es kann Sinn machen, die RWTH IP-Adressen auf eine whitelist zu setzen. Das geht in der **REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf** Datei im Verzeichnis, in dem sich die Firewall-Regeln befinden. Syntax Beispiel: SecRule REMOTE_ADDR "@ipMatch xx.yy.aa.bb/16,xx.yy.aa.bb/16,xx.yy.aa.bb/16" "phase:1,id:1000,pass,nolog,ctl:ruleEngine=Off" Weiterhin können folgende Webserver-Dienste auch zu False Positives führen und müssen dann eventuell durch Ausnahmen erlaubt werden: * Webmail-Schnittstellen * SVN / GIT Schnittstellen * Editieren von CMS Inhalten * Download von Dateien mit bestimmten Endungen (z.B. .dat .dll .exe) * piwik Webanalytics * Shibboleth Anwendungen * selbst geschriebene php / sql Anwendungen ==== Weiterführende Links ==== * Drupal mit mod_security schützen: [[https://www.netnea.com/cms/2016/11/22/securing-drupal-with-modsecurity-and-the-core-rule-set-crs3/]] * Handling False Positives [[https://www.netnea.com/cms/apache-tutorial-8_handling-false-positives-modsecurity-core-rule-set/]] ==== Auswertung der Log-Dateien ==== Die Auswertung und Aufbereitung der Log-Dateien kann z.B. durch graylog [[https://www.graylog.org/]] vorgenommen werden: {{:it_best_practise:apache:graylog-timeline.png?800|}} {{:it_best_practise:apache:graylog-piechart.png?200|}}