Mehr Sicherheit durch mod_security

Mod_Security ist eine Software Firewall, welche kontrolliert, welche Eingaben auf einem Apache gemacht und was für Daten übermittelt werden. Diese werden dann mit einer Handvoll Regeln verglichen, wodurch schädliche Abfragen erkannt und geblockt werden.

Unter Debian und Ubuntu heisst das benötigte Paket libapache-mod-security:

apt-get install libapache-mod-security -y

Nach dem Installieren aus den Paketquellen wird eine Datei unter /etc/apache2/conf.d/modsecurity2.conf angelegt und mit folgendem Inhalt ergänzt:

<ifmodule mod_security2.c>
Include conf.d/modsecurity/*.conf
</ifmodule>

Danach werden die nötigen Ordner erstellt und verlinkt:

sudo mkdir /var/log/apache2/mod_security
sudo ln -s /var/log/apache2/mod_security/ /etc/apache2/logs

Und die aktuellsten Regeln heruntergeladen:

sudo mkdir /etc/apache2/conf.d/modsecurity
cd /etc/apache2/conf.d/modsecurity
sudo wget http://www.modsecurity.org/download/modsecurity-core-rules_2.5-1.6.1.tar.gz
sudo tar xzvf modsecurity-core-rules_2.5-1.6.1.tar.gz
rm -f CHANGELOG LICENSE README modsecurity-core-rules_2.5-1.6.1.tar.gz

Nun noch das Modul aktivieren und Apache neustarten:

sudo a2enmod mod-security
sudo /etc/init.d/apache2 restart

Und von nun an wird der Apache durch Mod_Security geschützt.
Prüfen kann man das ganz einfach! Es muss eine Datei erstellt werden, mit folgendem Inhalt:

<?
        $secret_file = $_GET['secret_file'];
        include ($secret_file);
?>

Nun ruft man die Datei auf unter http://localhost/index.php?secret_file=/etc/passwd. Erhält man anstelle der /etc/passwd Datei die folgende Ausgabe, so arbeitet mod_security richtig:

Method Not Implemented
GET to /index.php not supported.

Doch Vorsicht: mod_security ist nicht überall geeignet. So hat zum Beispiel auch mein Hoster das eingesetzt, und musste es für meinen Blog deaktivieren, dass ich all die Code-Schnipsel posten kann 🙂

Wer von euch hatte denn schon mal wirkliche Angriffe auf seinem Webserver? Konntet ihr standhalten oder seid ihr eingebrochen? Und in welcher Art lief der Angriff ab?

6 Kommentare bei „Mehr Sicherheit durch mod_security

  1. Hoi Patrick
    Was bringt dir: include (‚/etc/passwd‘); ?
    Es ird zwar kein FEhler ausgegeben, aber im Log:
    include(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s):

    Das gleiche mit:
    $fp = fopen(‚/etc/passwd‘,’r‘);
    echo fread($fp,filesize(‚/etc/passwd‘));
    fclose($fp);

    fopen(): open_basedir restriction in effect. File(/etc/passwd) is not within the allowed path(s):

    open_basedir und der User kann diese Dateien auch nicht lesen.

    mod_security einfach zu installieren bringt meiner Meinung nach nicht viel. mod_security braucht für jede anwendung seine eigenen Regeln damit es wirklich das macht was es soll und nicht eben, mehr Probleme verursacht als was Anderes. open_basedir richtig eingestellt.

    Mod_security hat aber diverse Vorteile, nur hast du gerade ein schlechtes Beispiel genannt.

    1. Es geht nur darum zu zeigen, dass Mod-seurity auch greift und das tut es, denn ohne basedir zeigt es die Datei an. Also das Beispiel ist passend und erfüllt seinen Zweck!
      Und klar sind benutzerdefinierte Regeln besser, aber die Standard sind besser als nichts!

  2. Einfacher ist doch Lighttpd und lauter einzelne FCGI Prozesse für jede Domain zu nutzen und seine Software Up-to-date zu halten. Ich hab Mod_Sec 2 Jahre verwendet, und das einzige was es brachte, sind langsamere Webseiten.

    Den Jungs auf meinen Server hab ich eine einfache PHP Datei gegeben die alle Post und Get Parameter parst und per RegEx einfach bei Strings mit z.B. „..“ passwd, shadow, select, update, wget, curl, usw. die verarbeitung abbricht.
    Zusätzlich sind einige Funktionen wie system() in der php.ini gesperrt.

    Ein kleines bisschen mehr Arbeit, aber sicherer und schneller fand ich 🙂 Ansonsten, schau dir mal die gotroot.com regeln an 😉

  3. Hast du dir auch mal überlegt, ob du PHPIDS nutzen willst, das kann sehr gut gegen einfache Angriffe genutzt werden. https://phpids.org/ Ich habe ein Mediawiki-Plugin entwickelt, das kann relativ viel und lässt sich auch gut konfigurieren.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.