WAF Logging mit Kafka

Als Teil von DevSecOps und als «first line of defense» ist der Einsatz von Web Application Firewalls nicht mehr wegzudenken. Im Rahmen meiner Master-Thesis habe ich mich mit dem Thema „Wie mit Apache Kafka ein effizientes und komfortables Analyseinstrument geschaffen wird“ beschäftigt.

Ausgangslage

Zur Steigerung der Effizienz und Qualität setzt Puzzle auf DevSecOps und Continuous Integration (CI) and -Delivery (CD). Als «first line of defense» wird eine Web Application Firewall (WAF) eingesetzt, welche laufend durch den WAF Application Manager überwacht wird. Zusätzlich werden Applikationen bereits vor der Auslieferung gegen das Regelwerk der WAF getestet. Die Überwachung einer WAF wird in der Regel mit der Analyse von Log-Dateien derselben sichergestellt. Allfällige Erkenntnisse fliessen zurück an die betroffenen Applikationen oder führen zu einer Anpassung des Regelwerks der WAF.

Die Analyse der riesigen Log-Dateien und die anschliessende Weiterverarbeitung der Erkenntnisse wird heute primär manuell oder mit primitiven technischen Mitteln erledigt. Die Log-Dateien enthalten jedoch eine unübersichtlich grosse Menge an Log-Einträgen, was die manuelle Überwachung aufwendig und fehleranfällig macht.

Es besteht das Risiko, dass kritische Einträge übersehen oder nicht rechtzeitig behandelt werden und dadurch Sicherheitsprobleme oder Betriebsbehinderungen entstehen können. Durch das manuellen Vorgehen ist die Nachvollziehbarkeit nicht gewährleistet und detaillierte Auswertungen sind nicht oder nur mit erheblichem Aufwand möglich. Für die eingesetzte WAF existiert bis dato kein Standardsoftwareprodukt, welches die Analyse oder Überwachung der Log-Dateien vereinfacht.

Ziel

Im Rahmen meiner Master-Thesis habe ich ein Software-Produkt entwickelt, das aggregierte Log-Einträge und weitere Daten der WAFs in «near realtime» darstellt und eine nachvollziehbare, effiziente Behandlung ermöglicht. Für die Verarbeitung und Persistierung der Daten wird Apache-Kafka verwendet werden.

 
Figure 1. Architektur Bausteinsicht

Ergebnis

Das Software-Produkt setzt sich aus verschiedenen JAVA-Komponenten zusammen, welche über den Apache-Kafka-Cluster interagieren. Im ersten Schritt werden die WAF-Logdaten mit Hilfe des Connectors in einem Kafka Topic persistiert. Die Rohdaten werden durch den Stream Processor aggregiert und in weiteren Topics gespeichert. Mit Kafka Streams prozessiert die StreamProcessor-Komponente die unterschiedlichen Meldungstypen der WAFs und erstellt gleichzeitig eine zeitbasierte Aggregation (Windowing) als Datenbasis für die Diagrammdarstellung. Der Consumer bezieht die prozessierten Daten und stellt sie schliesslich der VueJS-Web-Applikation über Websockets bereit. Mit der neuen Software erhält der Benutzer ein praktisches Instrument, um sich einen schnellen Überblick über die aktuelle Situation der WAFs zu verschaffen. Neben den Diagrammen mit den wichtigsten Kennzahlen werden ihm alle Meldungen in einer Tabellenkomponente zur Weiterverarbeitung aufgeführt.

Kommentare sind geschlossen.