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 12/2017: Perfekte Videos

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

Broadcom Adapter 802.11n nachinstallieren
Thomas Mengel, 31.10.2017 20:06, 2 Antworten
Hallo, kann man nachträglich auf einer Liveversion, MX Linux auf einem USB-Stick, nachträglich...
RUN fsck Manually / Stromausfall
Arno Krug, 29.10.2017 12:51, 1 Antworten
Hallo, nach Absturz des Rechners aufgrund fehlendem Stroms startet Linux nicht mehr wie gewohn...
source.list öffnet sich nicht
sebastian reimann, 27.10.2017 09:32, 2 Antworten
hallo Zusammen Ich habe das problem Das ich meine source.list nicht öffnen kann weiß vlt jemman...
Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 6 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...