Shopware auf der Überholspur - Sicherer Betrieb durch Modsecurity mit Elastic und Kubernetes

Lernen Sie in diesem Artikel, wie Ihre Daten und die Ihrer Kunden sicher mit einer internen Web Application Firewall (WAF) geschützt werden können und warum dies sinnvoll ist. Wir zeigen Ihnen Codeauszüge innerhalb einer kurzen Anleitung mit Tipps und Tricks.

Setup

In unserem hier dargestellten Szenario haben wir folgende Komponenten im Einsatz:

  • Shopware
  • NGINX Webserver
  • ModSecurity v3
  • Managed Kubernetes (Openstack by OVHcloud)
  • ELK Stack

Die spezielle Herausforderung hierbei liegt bei der Trennung der Logs, da das Standardlogging rein über stdout funktioniert.

Warum eine Web Application Firewall sinnvoll ist und was sie genau macht

Das Open Web Application Security Project (OWASP) kategorisiert jährlich die größten Gefahren im Internet mit dem Ziel für mehr Sicherheit in Anwendungen und Diensten des World Wide Webs zu sorgen

Die aktuellen OWSAP TOP 10 besteht aus folgenden Gefahrenquellen:

  • Injektion
  • Defekte Authentifizierung
  • Offenlegung sensibler Daten
  • Externe XML Entitäten (XXE)
  • Defekte Zugriffskontrolle
  • Fehlkonfiguration
  • Cross-site-Scripting
  • Unsichere Deserialisierung
  • Verwendung von Komponenten mit bekannten Schwachstellen
  • Unzureichende Protokollierung und Überwachung

Eine Studie von Verizon verdeutlicht einen Anstieg von Angriffen auf Webanwendungen von 48 % auf 80 % innerhalb von 2020 auf 2021. Die Tendenz für 2022 ist steigend.

Aus diesem Grund ist eine Absicherung Ihrer E-Commerce-Plattform essenziell für die Datensicherheit. Folgende Abbildung veranschaulicht diese Absicherung mit einer zweistufigen WAF. Die Abbildung veranschaulicht exemplarisch den Datenverkehr von echten Usern und Angriffszenarien und den Schutz durch eine Web Application Firewall.

Ein echter User geht über ihre Domain zum Shopsystem. Ein Hackangriff kann wahlweise über die Domain URL oder der IP Range vom Hostingprovider stattfinden. Daher ist es ratsam ein zweistufiges WAF-Konzept zu betreiben. Eine externe (bspw. mit Cloudflare) und eine interne, innerhalb des LAN vor der Anwendung (mit modsecurity).  

Wir nutzen in diesem Fall ModSecurity als interne WAF. ModSecurity ist eine regelbasierte Engine, die Webanfragen mit ein Regelwerk filtert. Wenn die Prüfung erfolgreich ist, wird die HTTP-Anfrage an den Shop weitergeleitet. Wenn sie fehlschlägt, blockiert sie die Anfrage.

Über das Regelwerk lassen sich folgende Schwachstellen überwachen: 

  • SQL injection and Blind SQL injection.
  • Cross Site Scripting (XSS).
  • OS Command Injection and remote command access.
  • File name injection.
  • ColdFusion, PHP and ASP injection.
  • E-Mail Injection
  • HTTP Response Splitting.
  • Universal PDF XSS.
  • Trojans & Backdoors Detection

Die externe WAF, welche in der Regel von einem Anbieter gemanaged wird, würde zudem einen erweiterten Schutz bedeuten, mit dem auch beispielsweise Zero-Day Attacken frühzeitig geblockt werden können.

Doch was ist notwendig, um die interne Web Application Firewall aufzusetzen? Im Folgenden zeigen wir dir, wie du es umsetzen kannst!

Konfiguration Modsecurity

Für eine einfache Übermittlung wurde die ModSecurity so eingestellt, dass die Einträge im JSON Format gespeichert werden. Hierdurch wird im weiteren Verlauf die Transformation in die ELK Stack Objekte sehr vereinfacht.

Folgende Annotations müssen am Ingress hinzugefügt werden, damit Modsecurity aktiviert ist:

ModSecurity Config:

Weiterhin muss der Ingress Controller so angepasst werden, dass er zwischen reinen NGINX Logs und denen von Modsecurity unterscheidet. Hierfür muss folgender Auszug integriert werden.

Dem Pod wird ein weiterer Container hinzugefügt, welcher die ModSecurity Logs seperiert:

Konfiguration Filebeat

Für die Überführung der Log Einträge aus dem modsecurity Audit log gibt es 2 Varianten.

  • Elastic Agent: ModSecurity Audit log
  • File Beat

Da die Realisierung über File Beat für Kubernetes besser geeignet ist, gehen wir im weiteren Verlauf auf diese Variante ein.

Um die zuvor seperierten Logs in den ELK Stack zu übertragen, verwenden wir die filebeat.autodiscover Funktion. 

Wir trennen die Logs über das Label "kubernetes.container.name". Dies ist notwendig, da das Audit File ansonsten mit dem aktuellen Standard NGINX Pipeline von elastic verarbeitet werden würde und dieses mit jedem neuen Release automatisch überschrieben wird. Damit wir die Nachrichten besser von einander trennen können, haben wir zudem, wie oben beschrieben, Modsecurity die Erweiterung "mod-security-logger" in Kubernetes angefügt.

Konfiguration Elastic Pipeline

Da wir, wie oben beschrieben, JSON Formate übermitteln, ist die Pipeline in Elastic rein auf die Transformation dieses Objektes beschränkt. Hierfür bietet elastic eine vordefinierte Methode "json" an. Diese muss zweimal hintereinander ausgeführt werden, um eine automatische Transformation durchzuführen. Warum das so ist, fragen Sie bitte nicht ;).

Folgend dargestellt ein beispielhafter Angriff, der die ".env" Datei versucht zu öffnen.

{"transaction":{"client_ip":"5.147.64.XXX","time_stamp":"Tue Jun 28 20:47:07 2022","server_id":"ffbd70bb61277107b0608c3d2be5824751fecdce","client_port":58758,"host_ip":"10.2.0.XXX","host_port":443,"unique_id":"70b0ae977efcb4521a4795c94bc87c9b","request":{"method":"GET","http_version":2.0,"uri":"/Products/RNA-Extraction/.env"},"response":{"http_code":403},"producer":{"modsecurity":"ModSecurity v3.0.5 (Linux)","connector":"ModSecurity-nginx v1.0.2","secrules_engine":"Enabled","components":["OWASP_CRS/3.3.2\""]},"messages":[{"message":"Restricted File Access Attempt","details":{"match":"Matched \"Operator `PmFromFile' with parameter `restricted-files.data' against variable `REQUEST_FILENAME' (Value: `/Products/RNA-Extraction/.env' )","reference":"o24,5v4,29t:utf8toUnicode,t:urlDecodeUni,t:normalizePathWin,t:lowercase","ruleId":"930130","file":"/etc/nginx/owasp-modsecurity-crs/rules/REQUEST-930-APPLICATION-ATTACK-LFI.conf","lineNumber":"105","data":"Matched Data: /.env found within REQUEST_FILENAME: /products/rna-extraction/.env","severity":"2","ver":"OWASP_CRS/3.3.2","rev":"","tags":["application-multi","language-multi","platform-multi","attack-lfi","paranoia-level/1","OWASP_CRS","capec/1000/255/153/126","PCI/6.5.4"],"maturity":"0","accuracy":"0"}},{"message":"Inbound Anomaly Score Exceeded (Total Score: 5)","details":{"match":"Matched \"Operator `Ge' with parameter `5' against variable `TX:ANOMALY_SCORE' (Value: `5' )","reference":"","ruleId":"949110","file":"/etc/nginx/owasp-modsecurity-crs/rules/REQUEST-949-BLOCKING-EVALUATION.conf","lineNumber":"80","data":"","severity":"2","ver":"OWASP_CRS/3.3.2","rev":"","tags":["application-multi","language-multi","platform-multi","attack-generic"],"maturity":"0","accuracy":"0"}}]}}

Aus diesem JSON Array sind für die weitere Analyse folgende Attribute besonders wichtig:

  • modsecurity.transaction.client_ip - Angreifer ip
  • modsecurity.transaction.messages.details.file - Angreifer Name
  • modsecurity.transaction.messages.details.ruleId <- modsecurity regel
  • modsecurity.transaction.messages.details.match: Detailinformationen
  • modsecurity.transaction.request.uri - URL Aufruf

Ausnahmen hinzufügen

Nach Aktivierung der WAF kann es vorkommen, dass einige gewollte Zugriffe blockiert werden.
Diese unterscheiden sich je nach Applikation und eingesetzten Erweiterungen und müssen daher individuell ermittelt werden.
Will man Ausnahmen für diese Zugriffe hinzufügen, ist folgendes zu tun:

  1. modsecurity.transaction.messages.details.ruleId - aus diesem Feld kann die ID der Regel entnommen werden. Beispiel: "932115"

Nun folgenden Eintrag unterhalb von "nginx.ingress.kubernetes.io/modsecurity-snippet: |" hinzufügen:

SecRuleRemoveById 932115

Konfiguration Elastic Kibana Dashboard

Für die Aufbereitung der Log im ELK Stack stellen wir euch folgendes von uns definiertes Dashboard zur Verfügung: Dieses zeigt eine Gruppierung der Angreifer nach Uhrzeit, Angriffstyp , Angriffsregion sowie die eigentlichen Angriffe.

Marc Achsnich
Team Lead synaigy GmbH

Vertiefe dein Wissen mit uns

Jetzt Blog abonnieren und keine News mehr verpassen

✔️kostenlos ✔️jede Woche News ✔️Expertenwissen

Blog 13.06.22

Shopware 6 mit Kubernetes

In diesem Artikel stellen wir euch vor, wie Shopware 6 in Kubernetes betrieben werden kann und warum dies sinnvoll ist. Wir zeigen euch Codeauszüge und eine kurze Anleitung mit Tipps und Tricks.

Referenz

Biotechnologieunternehmen – Shop-Migration auf Shopware 6

Ein Biotechnologieunternehmen aus Köln entwickelt innovative Produkte, die die Qualität, den Komfort und die Geschwindigkeit von molekularbiologischen Standardprotokollen verbessern.

Lösung

Shopware

Profitiere von unserer langjährigen Zusammenarbeit mit Shopware und unserer Erfahrung aus einer Vielzahl an erfolgreichen Projekten als Shopware-Partner.

Blog 28.06.22

Webinar: „Shopware auf der Überholspur“

Erfahre in einem ersten Überblick mehr über die Komponenten für einen erfolgreichen Onlineshop-Hosting-Betrieb und die wesentlichen Faktoren für ein performantes System.

Referenz

BD Rowa™ – der Profi für automatische Warenlager

Von der digitalen Sichtwahl über Freiwahl und Schaufenster bis hin zum QR-Code-Shopping: Bei BD Rowa sind nicht nur die Produkte innovativ und zuverlässig, sondern auch die Digital Services.

Referenz

VYSYO – Zeit- & Kostenersparnisse dank neuester Technologien

Einsatz neuester Technologien verhilft dem Unternehmen VYSYO, Ressourcen effizient einzusetzen und die Qualität datengetriebener Arbeit zu erhöhen.

Referenz

HUDORA GmbH

Die Hudora GmbH ist ein traditionsreicher deutscher Hersteller von Sport-, Spiel- und Freizeitprodukten mit Sitz in Remscheid.

Referenz

EMW Stahl Service – Aufbau eines digitalen Service-Centers

Kundenzentrierung als Leitlinie für ein modernes Kunden- und Informationsmanagement.

Referenz

dentona – Digital Shift für die Zahntechnikinnovatoren

dentona digitalisiert Produkte und Prozesse. Neben Gipsen und Modellsystemen umfasst das Sortiment jetzt auch 3D-Drucker und Scanner – ein erfolgreicher Schritt in die digitale Zukunft der Branche.

Blog 12.11.21

Shopware Masterclass brytes Teil1

Durch die situative Personalisierung von entscheidungsrelevanten Elementen einer Website wird eine neue Dimension der User Experience erschaffen. Das steigert sowohl die Kundenzufriedenheit als auch Umsatz und Marge.

Blog 30.11.21

Shopware Masterclass brytes Teil2

Durch die situative Personalisierung von entscheidungsrelevanten Elementen einer Website wird eine neue Dimension der User Experience erschaffen. Das steigert sowohl die Kundenzufriedenheit als auch Umsatz und Marge. Wie Webseitenbesucher psychografisch analysiert, verstanden und bei der Entscheidungsfindung unterstützt werden, haben wir auf dem Shopware Community Day in einer Masterclass vorgestellt. Schaut euch hier Teil 2 an.

News

synaigy ist nun auch Shopware Technologiepartner!

synaigy ist schon lange Shopware Gold Partner. Nun haben wir aber den nächsten Schritt gemacht und arbeiten auch als Technologiepartner zusammen. Die Entwicklung unserer brytes-App für den Shopware Store war hierfür ausschlaggebend.

Blog 07.12.23

Shopwares Vision für die digitale Zukunft des E-Commerce

Im Gespräch mit mir erzählt dir Sebastian Hamann, CEO von Shopware, wie KI und innovative Technologien den E-Commerce transformieren können und wie Shopware den Markt für mittelständische Unternehmen mit Lösungen, die wirklich etwas bewegen, aufmischt. Sebastian verrät dir zudem, warum kundenzentrierter Markenaufbau und mutige Entscheidungen das A und O für zukünftigen, digitalen Erfolg sind.

Blog 05.07.24

Die Bedeutung der Datensouveränität

Datensouveränität ist nicht nur ein Marketing-Buzzword, sondern ein Erfolgsfaktor für Unternehmen, die in der globalen Wirtschaft ganz vorne mitspielen wollen. Die jüngste Bitkom-Studie zur Cloudsouveränität unterstreicht die wachsende Bedeutung von Cloud-Lösungen für deutsche Unternehmen und zeigt auf, dass 95 % der befragten Unternehmen Cloud Computing bereits im Einsatz haben oder noch nutzen wollen​.

Blog 04.10.22

Erhöhte Sicherheit durch Kubernetes

Die Sicherheit spielt beim Einsatz von Containern eine besonders wichtige Rolle. Das Open-Source-System Kubernetes hat sich zum Standard bei der Automatisierung, Bereitstellung, Skalierung und Verwaltung von Container-Anwendungen entwickelt und erfordert deshalb besonderes Augenmerk bei der Sicherheit.

Blog 09.02.24

Ein Public Cloud Cheat Sheet der führenden Cloud Provider

Der Blogbeitrag bietet dir einen umfassenden Überblick über die aktuelle Landschaft der Public Cloud, insbesondere im Kontext von OVHcloud als führendem europäischen Cloud-Computing-Unternehmen. Das "Public Cloud Cheat Sheet" ist ein nützlicher Wegweiser durch die komplexe Welt der Public Cloud, unterteilt in acht Disziplinen. Diese Disziplinen reichen von Speicherdiensten über Datenbanken, Rechnersysteme, Orchestrierung, Netzwerk, Data & Analytics, KI bis hin zum Management.

Blog 26.02.24

Kann der Hosting-Anbieter OVHcloud überzeugen?

Wenn du dich in der Welt des Cloud-Hostings bewegst, ist die Auswahl des richtigen Servers entscheidend für die Leistung, Zuverlässigkeit und Skalierbarkeit deiner Anwendungen. OVHcloud hat kürzlich eine neue Generation von Servern vorgestellt, doch wie gut sind diese wirklich? Um einen möglichst objektiven Vergleich anzustellen, haben wir uns für Geekbench entschieden. Aber was genau ist Geekbench und warum haben wir es für diesen Test gewählt?

Blog 14.04.25

OVHcloud vs. AWS – Wer bietet die bessere Leistung pro Euro?

In diesem Beitrag vergleichen wir die Block Storage-Angebote von OVHcloud und AWS auf Basis aktueller Benchmark-Daten und technischer Spezifikationen.

Blog 06.06.23

Cloud Sustainability als umweltbewusste Revolution

Cloud Sustainability bezeichnet das Bestreben der Cloud-Computing-Industrie, ökologisch, sozial und ökonomisch nachhaltig zu handeln. Dieser Artikel beleuchtet wichtige Aspekte der Cloud Sustainability, wie den Umweltschutz und die nachhaltige Lieferkette, und präsentiert beispielhafte Maßnahmen führender Cloud-Anbieter wie OVHcloud und Amazon Web Services (AWS). Erfahre, wie diese Unternehmen erneuerbare Energien nutzen, Emissionen reduzieren und auf Recycling sowie ethische Richtlinien setzen, um die Cloud-Infrastruktur umweltfreundlicher und nachhaltiger zu gestalten. Entdecke die Bedeutung von Cloud Sustainability und wie du als Unternehmen von einer nachhaltigen IT-Infrastruktur profitieren kannst.

Blog 26.05.23

Bare Metal trifft auf Public Cloud

Mit Bare Metal und Public Cloud bietet die OVHcloud zwei unterschiedliche Ansätze, um IT-Infrastruktur bereitzustellen. Beide stehen für unterschiedliche Vor und Nachteile. Mit Bare Metal mietet ein Kunde einen physische Server und erhält die vollständige Kontrolle über die Hardware, das Betriebssystem, die Netzwerk-Konfiguration und die darauf ausgeführten Anwendungen. Somit kann die IT-Infrastruktur komplett an individuelle Anforderungen angepasst werden. Diese Server sind somit speziell für einen Kunden reserviert und niemand anderes nutzt diese Ressourcen parallel.