Das Buch "Safe DevOps. Effizienter Systembetrieb

Bild Hallo habrozhiteli! Eine Anwendung, die in der Cloud ausgeführt wird, hat viele Vorteile, ist jedoch gleichzeitig besonderen Bedrohungen ausgesetzt. Die Aufgabe der DevOps-Teams besteht darin, diese Risiken zu bewerten und den Schutz des Systems gegen sie zu stärken. Das Buch basiert auf der einzigartigen Erfahrung des Autors und bietet die wichtigsten strategischen Lösungen zum Schutz von Webanwendungen vor Angriffen, um Invasionsversuche zu verhindern. Sie werden sehen, wie Sie die Zuverlässigkeit durch automatisierte Tests, kontinuierliche Lieferung und wichtige DevOps-Prozesse sicherstellen können. Erfahren Sie, wie Sie in Ihrer Anwendung vorhandene Schwachstellen identifizieren, bewerten und beheben. Der Autor hilft Ihnen beim Navigieren in Cloud-Konfigurationen und wendet gängige Automatisierungstools an. Erfordert Linux-Kenntnisse und Kenntnisse der Standard-DevOps-Praktiken wie CI, CD und Unit-Tests.


Auszug. Kapitel 8. Protokollanalyse für Intrusion und Attack Detection


In diesem Kapitel:

  • Untersuchen von Komponenten auf Analyseebene in einer Protokollierungspipeline.
  • Erkennen Sie Eindringlinge und Angriffe mithilfe von Zeichenfolgensignaturen, Statistiken und historischen Daten.
  • Verwalten von Möglichkeiten zur optimalen Benachrichtigung von Benutzern.

In Kapitel 7 haben Sie gelernt, wie Sie eine Protokollierungspipeline erstellen, die Protokolle aus der gesamten Infrastruktur sammelt, überträgt, analysiert und speichert und auch Zugriff darauf gewährt. Eine mehrstufige Pipeline schafft eine flexible Infrastruktur, in der Protokolle aus verschiedenen Quellen verwendet werden, um die Aktivität der Dienste des Unternehmens zu überwachen. Kapitel 7 gab einen Überblick über die Funktionen aller Ebenen der Pipeline. In diesem Kapitel konzentrieren wir uns auf die dritte Ebene - die Analyseebene - und beschäftigen uns mit Techniken und Codebeispielen zum Erkennen von Eindringlingen und Angriffen auf Dienste.

Die Protokollierungspipeline, die Mozilla beim Schreiben des Buches verwendet, ähnelt der in Kapitel 7 gezeigten. Die Pipeline wird verwendet, um den Status von Firefox-Clients ( Telemetrie genannt ) in einer natürlichen Umgebung zu überwachen, Anwendungs- und Dienstprotokolle zu verarbeiten und ungewöhnliche Aktivitäten zu erkennen. Das logische Zentrum der Pipeline befindet sich auf der Ebene der Analyse, die aus vielen kleinen Programmen besteht, die ständig nach etwas Ungewöhnlichem suchen. Diese kleinen Programme sind nicht so weit fortgeschritten, dass sie sich mit der Eingabe und Ausgabe von Protokollereignissen befassen. Daher übertragen sie diese Aufgabe an ein dediziertes Rechenzentrum - das Hindsight-Programm (http://mng.bz/m4gg), mit dem Plug-Ins für Datenströme analysiert werden sollen .

In diesem Kapitel werden wir Hindsight verwenden, um verschiedene Arten von Magazinen zu lesen und Original-Plugins zu schreiben, um sie zu analysieren.

HINWEIS

Beispielprotokolle und Plugins für dieses Kapitel finden Sie unter securing-devops.com/ch08/logging-pipeline . Sie müssen dieses Repository auf Ihren lokalen Computer kopieren und den Hindsight Docker-Container abrufen, um die Beispiele ausführen zu können.

Beginnen wir mit der Beschreibung der Anordnung der verschiedenen Teile der Analyseebene: Rückblick befindet sich in der Mitte, und die Sammel- und Speicherebenen befinden sich auf beiden Seiten. Dann werden wir über drei verschiedene Ansätze sprechen, um Eindringlinge und Angriffe zu erkennen. Im einfachsten Fall werden Zeichenfolgensignaturen verwendet, die Informationen zu bekannten Angriffen zum Senden von Benachrichtigungen enthalten. Als nächstes vergleichen wir die statistischen Modelle und den Ansatz mit Signaturen und lernen auch, wie sich diese beiden Ansätze ergänzen. Schauen wir uns abschließend an, wie Sie historische Benutzeraktivitätsdaten anwenden können, um verdächtige Bereiche zwischen Verbindungen zu identifizieren.

Der letzte Abschnitt des Kapitels befasst sich mit dem Senden von Benachrichtigungen. Es ist unwahrscheinlich, dass Sie jeden Tag Tausende von Benachrichtigungen von der Analyseebene erhalten möchten, die viel Lärm verursachen, anstatt nützlich zu sein. Wenn dies nicht geändert wird, betrachten Empfänger Benachrichtigungen als Spam und ignorieren sie. Im letzten Abschnitt dieses Kapitels werden die Best Practices für die Organisation des Versendens von Benachrichtigungen erläutert und Möglichkeiten zum genauen und effizienten Senden von Benachrichtigungen an Administratoren und Endbenutzer erörtert.

8.2. Erkennen von Angriffen mithilfe von Zeichenfolgensignaturen


Wenn Sie mit Protokollen arbeiten, arbeiten Sie mit Zeichenfolgen. Dies bedeutet, dass der einfachste Weg, Anzeichen von Betrug zu erkennen, darin besteht, die Protokolle mit einer Liste bekannter schädlicher Zeilen zu vergleichen. Es mag einfach erscheinen, aber genau in diesen Jahren war die Sicherheitsbranche tätig. Web Application Firewalls (WAFs), die Mitte der 2000er Jahre so beliebt waren, waren im Wesentlichen ein Repository für reguläre Ausdrücke, die mit jeder an eine Webanwendung gesendeten Anforderung verglichen wurden.

Verlassen Sie sich nicht auf reguläre Ausdrücke

Ich habe einmal für eine Bank gearbeitet, in der diese Art von Schutz weit verbreitet war. Das Sicherheitsteam war für die Unterstützung der WAF verantwortlich, die eine Vielzahl von Online-Diensten, einschließlich eines Handelsdienstes für Kunden, schützte. Jede an diesen Dienst gesendete Webanforderung durchlief Hunderte von regulären Ausdrücken, bevor sie zum Anwendungsserver gelangte. Einmal entschied sich ein Entwickler eines Online-Handelsserviceteams, sich diese regulären Ausdrücke anzusehen. Ich weiß nicht, was den Ingenieur dazu veranlasst hat, den Inhalt der Datei zu lesen, die hauptsächlich mit Schrägstrichen, Dollarsymbolen, Sternchen, Pluszeichen, Quadraten und Klammern gefüllt ist, aber er hat sie genommen. Und irgendwo in der 418. Zeile in einem komplexen regulären Ausdruck fand er eine verdächtige Kombination von „. +“. Zwei unschuldige Charaktere, die absolut alles schmerzlos weitergehen ließen: Dieser reguläre Ausdruck ähnelt dem Wert „alles zulassen“.

Unser Stolz ist die Firewall der Webanwendung für mehrere tausend Euro, die von einem ganzen Team unterstützt wird. Sie hat Hunderte von Überprüfungen regulärer Ausdrücke durchgeführt, die die Leistung beeinträchtigen und das Design eines bereits komplexen Systems komplizieren, um alles ungehindert zu überspringen. Natürlich haben wir das Problem bald behoben, aber mein Glaube an die Verwendung regulärer Ausdrücke zur Gewährleistung der Sicherheit ist seitdem nicht gestiegen. Wenn Sie diese Art von Schutzsystem in Ihrem Unternehmen implementieren möchten, berücksichtigen Sie dessen Komplexität, damit Ihnen dies nicht passiert.

Bei korrekter Verwendung können reguläre Ausdrücke zu einem leistungsstarken Werkzeug werden, aber sie sind unglaublich schwer zu schreiben, im Laufe der Zeit zu warten - noch schwieriger und ihre umfangreiche Implementierung ist teuer. Schauen Sie sich den regulären Ausdruck ((\% 3C) | <) ((\% 2F) | \ /) * [a-z0-9 \%] + ((\% 3E) |>) an. Sie werden nicht erraten, wofür es verwendet wird, daher sage ich Ihnen: Es kann verwendet werden, um nach Injektionen in HTTP-Anforderungszeichenfolgen zu suchen und das Vorhandensein von öffnenden und schließenden <> Ungleichheitszeichen und deren Inhalt aufzudecken. Sie erhalten diese Art von HTTP-Anforderungszeile von einem Angreifer, der versucht, schädlichen JavaScript-Code in Ihre Anwendung einzufügen, um einen Cross-Site-Scripting-Angriff zu erhalten, den wir in Kapitel 3 besprochen haben.

Dieser reguläre Ausdruck kann verwendet werden, um verdächtige Anforderungen zu identifizieren, die Injektionsversuche enthalten. Listing 8.7 zeigt einen Beispielparser, der dies implementiert, indem er in jedem der übertragenen NGINX-Zugriffsprotokolle nach Übereinstimmungen mit regulären Ausdrücken sucht. Der reguläre Ausdruck wird in der lokalen xss-Variablen gespeichert. Sein Wert wird mit jedem Fields [request] -Wert mit der Funktion rex.match () verglichen.

Wenn es Übereinstimmungen gibt, sendet die Funktion add_to_payload () eine Benachrichtigung, dass das Ausgabe-Plug-In empfangen und an das Ziel senden kann.

Listing 8.7. Ein Plugin, das Protokollnachrichten erkennt, die Angriffszeichen in der Abfragezeichenfolge enthalten


Bild

Eine Beispielausgabe dieses Plugins finden Sie in Listing 8.8. Es werden mehrere Benachrichtigungen von Beispielmagazinen generiert, von denen sich einige als falsch positiv herausstellten. Dies geschah teilweise, weil Beispielprotokolle mit dem ZAP Vulnerability Scanner künstlich erstellt wurden und weil Abfragezeichenfolgen keine HTML-Tags enthalten. Insbesondere hat dieser reguläre Ausdruck keine zu hohe Rate, um falsch positive Übereinstimmungen zu finden.

Listing 8.8. Beispiele für Benachrichtigungen, die vom XSS-Analyse-Plugin generiert wurden


Bild

Dies ist nur ein regulärer Ausdruck für eine bestimmte Angriffsart. Damit dieser Ansatz nützlich ist, müssen Sie mehr als nur reguläre Ausdrücke finden. Für den Anfang könnten Sie Signaturen aus verschiedenen Quellen sammeln und, da immer mehr verdächtige Zeichen in den Protokollen gefunden werden, die Größe Ihrer Datenbank schrittweise erhöhen.

Listing 8.9 zeigt eine modifizierte Version des XSS-Analysators, die nach verschiedenen Anzeichen eines Angriffs sucht (http://mng.bz/62h8). Dieses Skript zeigt, wie Sie mithilfe von Lua-Tabellen eine Liste von Attributen speichern und zyklisch zur Analyse eingehender Ereignisse verwenden können. In diesem Codebeispiel ist die verdächtige_terms-Tabelle eine einfache Zeilenreihe, die Teilzeichenfolgen verwendet, um nach regulären Ausdrücken zu suchen, was viel schneller ist. Die Tabelle verdächtig_terms verwendet das Schlüsselwertformat, um Beschriftungen zusammen mit dem Ausdruck zu speichern, um Sie daran zu erinnern, dass der Ausdruck gefunden werden sollte.

Listing 8.9. Suchen Sie mit Zeichenfolgen und Ausdrücken nach Anzeichen von Angriffen


Bild
Bild

Sie können diesen Analysator mit den am Anfang des Kapitels beschriebenen Testeinstellungen ausführen. Starten Sie den Docker-Container mit bereitgestellten Verzeichnissen, und die Analyse-Ausgabe wird in output / payload / analysis.suspicious_signatures.alerts.txt geschrieben. Das Plugin sendet Tausende von Benachrichtigungen, was erwartet wird, da diese Protokolle vom ZAP-Schwachstellenscanner generiert werden. Dieser Ansatz kann als erfolgreich angesehen werden, weist jedoch Mängel auf, die Sie berücksichtigen sollten.

  • Reguläre Ausdrücke sind schwer zu schreiben und noch schwerer zu lesen . Sie werden Fehler machen, die nicht einfach zu untersuchen sind und die stundenlanges schmerzhaftes Debuggen erfordern. Dieser Analysator enthält nur vier reguläre Ausdrücke, aber das Lesen dieses Teils des Codes ist bereits schwierig. Egal wie leistungsfähig und attraktiv das Tool für reguläre Ausdrücke sein mag, ich würde nicht empfehlen, ständig mit ihnen zu arbeiten.
  • Bei diesem Ansatz werden zu viele Benachrichtigungen generiert . Für das Internet geöffnete Webanwendungen erhalten viel ungewöhnlichen Datenverkehr, böswillig und weniger. Das Generieren von Benachrichtigungen für jedes ungewöhnliche Zeichen macht jedes Sicherheitsteam mehrere Wochen lang verrückt, selbst wenn die Rate der Fehlalarme niedrig ist. Anormaler Datenverkehr ist ein natürliches Ereignis für Dienste, die im Internet ausgeführt werden.

Sie können diese beiden Probleme beheben, indem Sie einen mathematischen Ansatz anwenden und dieses perfekte System zur Erkennung von Anomalien etwas weniger perfekt machen. Im nächsten Abschnitt werden wir uns ansehen, wie statistische Methoden zum Senden von Benachrichtigungen verwendet werden, wenn ein Schwellenwert überschritten wird, um das Rauschen der Anomalieerkennungslogik zu reduzieren.

Über den Autor


Zum Zeitpunkt des Schreibens leitet Julien Vehen das Operations Security Team bei Firefox, Mozilla. Er ist verantwortlich für die Erstellung, Implementierung und den Betrieb einer Sicherheitsstrategie für Webdienste, mit der täglich Millionen von Firefox-Benutzern interagieren. Julien konzentrierte sich Anfang der 2000er Jahre auf den Schutz von Netzwerkdiensten. Er begann als Systemadministrator unter Linux zu arbeiten und erhielt 2007 einen Master in Informationssicherheit.

»Weitere Informationen zum Buch finden Sie auf der Website des Herausgebers
» Inhalt
» Auszug

25% Rabatt auf Gutschein für Händler - DevOps

Nach Bezahlung der Papierversion des Buches wird ein elektronisches Buch per E-Mail verschickt.

Source: https://habr.com/ru/post/de468085/


All Articles