AA_totem-wn_123rf-8482578_pictureguy66.jpg

© pictureguy66, 123rf.com

Apache absichern mit Mod_security

Stammeswächter

Das Apache-Modul Mod_security legt sich als Web Application Level Firewall zwischen Webserver und Browser, sodass es Angriffe frühzeitig erkennen und abwehren kann.

Miniserie: Apache-Module

URLs umschreiben mit Mod_rewrite LU 07/2011, S. 76 http://www.linux-community.de/22935
SSL-Authentifizierung mit Mod_ssl LU 08/2011, S. 42 http://www.linux-community.de/22936
Apache absichern mit Mod_security LU 09/2011, S. 70 http://www.linux-community.de/22937

Jeder, der heutzutage Dienste im Internet anbietet, stellt ein potenzielles Angriffsopfer dar. Neben gezielten Attacken geraten auch Würmer und automatisierte Angriffe immer mehr zum Risiko. Untersuchen Sie ruhig einmal die SSH-Protokolle des Webservers auf ungültige Anmeldungen – Sie werden Augen machen. Doch wie sichern Sie sich am besten ab? Bei Applikationen von Drittherstellern oder Projekten besteht noch die Hoffnung, dass der Anbieter Fehler rechtzeitig im Vorfeld bemerkt und behebt, doch auch hier gehen schnell mehrere Tage ins Land, bis die Distributoren neue Pakete bereitstellen. Und auch einige der bekanntesten Anwendungen geraten regelmäßig wegen neuer Sicherheitslücken in die Schlagzeilen – ein gewisses Restrisiko besteht daher immer.

Wesentlich mehr Kopfzerbrechen bereiten da selbst geschriebene Applikationen. Selbst wenn Sie ein umfangreiches Security-Auditing vornehmen, können Sie bei hausinternen Tools eher selten auf die "Weisheit der Vielen" zählen, wie sie Open-Source-Projekte auszeichnet. Die Sicherheit Ihrer Applikation gewährleisten Sie deshalb in mehreren Schritten.

Das Fundament sollte immer eine aktuelle und gewartete Distribution bilden, die automatisch – beispielsweise mittels des Ubuntu-Tools unattended-upgrades [1] – sicherheitskritische Aktualisierungen einspielt. Darauf installieren Sie eine Firewall wie ufw [2], mit der Sie alle unbenutzten Ports schließen. Zusätzliche Sicherheit erhalten Sie mit fail2ban [3], mit dem Sie die gängigsten Dienste überwachen und potenzielle Angriffswege verriegeln – etwa durch automatisches Aussperren von IP-Adressen, von denen in kurzen Abständen ungültige Anmeldungen kommen. Weitere Hinweise zu der Materie hält übrigens auch das Securing Debian Howto bereit [4].

Sicherheit im Modul

So gerüstet, machen Sie sich nun ans Absichern des Webservers selbst. Mit Mod_security steht dazu ein Modul für den beliebten Apache-Webserver bereit, das Sie bei dieser Aufgabe unterstützt. Einen rudimentären Schutz erreichen Sie auch mit anderen Modulen, wie dem Rewrite-Modul [5], oder aber mit IP-basierten Firewalls wie Iptables. Der entscheidende Unterschied: Mod_security versteht sich als sogenannte Application Level Firewall auf die Feinheiten des verwendeten Protokolls und lässt sich daher viel gezielter anpassen – es versteht die entsprechenden HTTP-Befehle versteht.

Anderen Apache-Modulen stehen in der Regel nur die Kopfzeilen der Anfrage zur Verfügung – also etwa Domain, Browser, Referer und angefragte Datei sowie der GET-Parameter – nicht aber der Inhalt des Datenpakets selbst. Ähnlich verhält es sich mit Iptables: Damit filtern Sie zwar IP-Adressen heraus und limitieren die Anzahl erlaubter Verbindungen pro Minute, aber tiefergehende HTTP-Filtermöglichkeiten bietet es nicht. Unter anderem haben Sie keinen Zugriff auf den POST-Parameter, den sich heutzutage viele Applikationen unter anderem für Datei-Uploads zunutze machen, was POST zum beliebten Einfallstor für Angriffe macht.

Mod_security bietet zur Absicherung mehrere Komponenten, die Sie einzeln oder zusammen nutzen:

  • die Protokollierung ein- und ausgehender Verbindungen samt dazugehöriger Nutzdaten,
  • die Überwachung dieses Datenverkehrs auf Anomalien und deren Protokollierung, sowie
  • die automatische Abwehr von dabei entdeckten Angriffen.

In Verbindung mit dem Apache-Proxy-Modul stellen Sie die Funktionalität sogar ganzen Webclustern zur Verfügung, indem Sie Mod_security auf dem Gateway installieren und sämtlichen Verkehr darüber leiten. Dabei muss Mod_security nicht zwingend für alle Seiten aktiv sein, denn viele Optionen konfigurieren Sie auch bequem pro virtuellem Host oder gar pro Verzeichnis.

Datenschutz

Das umfangreiche Protokollieren und Auswerten von Zugriffsdaten kann datenschutzrechtliche Probleme aufwerfen. Bereits die Standardeinstellung von Apache bewegt sich rechtlich mindestens im Graubereich. Für die umfassende Analyse auch von Paketinhalten durch Mod_security sollten Sie sich, insbesondere bei kommerziellem Einsatz, vorher juristisch absichern.

Die Testumgebung

Unser Testsystem besteht aus einem aktuellen Ubuntu 11.04 "Natty Narwhal" mit funktionsfähigem Apache samt PHP-Modul. Zur Demonstration von Mod_security legen Sie bereits vor dessen Installation eine einfache PHP-Datei an, die beispielsweise nur folgenden Code enthält:

<?php
phpinfo();
?>

Rufen Sie die Datei im Browser nun mit dem Parameter ?file=/etc/shadow auf, passiert nichts Spektakuläres: Sie sehen wie erwartet die PHP-Infoseite (Abbildung 1), der unnütze Parameter wird schlichtweg ignoriert. Wir kommen aber gleich noch einmal darauf zurück.

Abbildung 1: Ohne Mod_security fängt Apache den unsicheren Parameter nicht ab.

Mod_security steht als vorcompiliertes Paket zur Verfügung, das Sie als Root mittels

# apt-get install libapache-mod-security

installieren. Die Installation überprüfen Sie anschließend über den Aufruf apachectl -M, der alle geladenen Module anzeigt. Enthält die Liste den Eintrag security2_module, hat alles geklappt, und Sie müssen nur noch die benötigten Datenverzeichnisse anlegen. Das erledigen Sie mittels folgender zwei Befehle:

# mkdir -p /var/log/apache2/modsecurity-data
# chown www-data: /var/log/apache2/modsecurity-data

Das geladene Modul allein nützt jedoch noch nichts: Ohne Konfiguration wird Mod_security ebenso wenig aktiv wie ein Iptables ohne keine Regeln, das dann alle Pakete durchlässt.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Kommentare

Infos zur Publikation

LU 03/2018 NEUE DISTRIBUTIONEN

Digitale Ausgabe: Preis € 5,95
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Internet abschalten
Karl-Heinz Hauser, 20.02.2018 20:10, 0 Antworten
In der Symbolleiste kann man das Kabelnetzwerk ein und ausschalten. Wie sicher ist die Abschaltu...
JQuery-Script läuft nicht mit Linux-Browsern
Stefan Jahn, 16.02.2018 12:49, 2 Antworten
Hallo zusammen, ...folgender goldener Code (ein jQuery-Script als Ergebnis verschiedener Exper...
XSane-Fotokopie druckt nicht mehr
Wimpy *, 30.01.2018 13:29, 2 Antworten
openSuse 42.3 KDE 5.8.7 Seit einem Software-Update druckt XSane keine Fotokopie mehr aus. Fehler...
TOR-Browser stürzt wegen Wikipedia ab
Wimpy *, 27.01.2018 14:57, 0 Antworten
Tor-Browser 7.5 based on Mozilla Firefox 52.8.0 64-Bit. Bei Aufruf von http: oder https://de.wi...
Wifikarte verhindert Bootvorgang
Maik Kühn, 21.01.2018 22:23, 1 Antworten
iwlwifi-7265D -26 failed to load iwlwifi-7265D -25 failed to load iwlwifi-7265D -24 failed to l...