Was ist eine Erkennungsregel?
Eine Erkennungsregel (Detection Rule) ist eine Bedingung, die in Logzeilen nach Spuren eines Angriffs sucht und bei einem Fund einen Alarm auslöst. So muss niemand mehr tausende Zeilen von Hand lesen.
Eine Bank will wissen, wenn jemand in einer Minute zwanzigmal ein falsches Passwort tippt. Genau das schreibt eine Regel auf.
Am Ende dieser Lektion
Notiz
Ich kann eine Regel schreiben, die einen Angriff in Logzeilen findet.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Erkennungsregel | eine Bedingung, die Logzeilen prüft und Alarm auslöst | |
| Muster | ein Text, nach dem die Regel in jeder Zeile sucht | Failed password |
| Treffer | eine Zeile, die zum Muster passt | |
| Schwellenwert | die Zahl von Treffern, ab der der Alarm kommt | |
| Zeitfenster | ein Zeitraum, in dem die Treffer gezählt werden | 60 Sekunden |
| Falscher Treffer | ein Treffer, hinter dem kein Angriff steckt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eine Regel prüft jede Zeile gegen ein Muster
Die einfachste Regel geht alle Zeilen durch. Passt eine Zeile zum Muster, ist sie ein Treffer.
Das Muster ist ein Stück Text, etwa Failed password. In der Shell prüft grep ein solches Muster, in Python der Ausdruck muster in zeile.
Drei Arten von Regeln
| Art | Die Frage | Beispiel |
|---|---|---|
| Muster | Kommt dieser Text vor? | Eine Zeile mit „Failed password“ |
| Zählen | Wie oft kommt er vor? | Mehr als 20 Treffer am Tag |
| Zeitfenster | Wie oft kommt er in kurzer Zeit vor? | Mehr als 5 Treffer in 60 Sekunden |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein Muster auf drei Zeilen anwenden
printf 'Failed password for root\nAccepted password for lena\nFailed password for admin\n' | grep -c "Failed"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine Regel auf das Weblog anwenden: Zugriff verweigert
grep -c '" 403 ' case/var/log/nginx/access.logHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Eine Zählregel braucht einen Schwellenwert
Ein einzelner Fehlversuch ist normal. Jeder Mensch vertippt sich. Darum zählt die Regel die Treffer und meldet erst ab einer Zahl.
Diese Zahl ist der Schwellenwert. Ist er zu niedrig, melden sich viele falsche Treffer. Ist er zu hoch, übersieht die Regel den Angriff.
Eine Zählregel in Python
zeilen = [
"02:11:03 Failed password for root from 203.0.113.9",
"02:11:07 Failed password for root from 203.0.113.9",
"02:11:12 Accepted password for lena from 192.0.2.10",
"02:11:15 Failed password for admin from 203.0.113.9",
]
schwelle = 2 # Ändern Sie die Zahl auf 3 und starten Sie neu.
treffer = 0
for zeile in zeilen:
if "Failed password" in zeile:
treffer = treffer + 1
if treffer > schwelle:
print("Alarm: zu viele Fehlversuche")
else:
print("Kein Alarm")
Ein Zeitfenster zählt nur Treffer nah beieinander
Fünf Fehlversuche über einen ganzen Tag sind Alltag. Fünf in einer Minute sind verdächtig.
Darum zählt eine Fensterregel nur Treffer, die höchstens so weit auseinanderliegen wie das Fenster. Sie startet bei einem Treffer und zählt vorwärts, so weit das Fenster reicht.
Ein Beispiel: Fenster von 15 Sekunden
| Start (Sekunde) | Das Fenster endet bei | Treffer im Fenster |
|---|---|---|
| 5 | 20 | 4 (5, 9, 14, 20) |
| 9 | 24 | 3 (9, 14, 20) |
| 14 | 29 | 2 (14, 20) |
| 20 | 35 | 1 (20) |
| 70 | 85 | 1 (70) |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Ein häufiger Fehler
Warnung
Viele glauben, eine Regel sei gut, wenn sie keinen Angriff übersieht. Doch eine Regel, die ständig falsch auslöst, wird bald überhört. Prüfen Sie jede Regel an echten Logs. Zählen Sie die falschen Treffer und stellen Sie den Schwellenwert danach ein.
Weiterführend
Schreiben Sie in Worten eine Regel, die einen Scanner im Weblog erkennt. Er fragt viele Seiten ab, die es nicht gibt.
Nennen Sie das Muster, den Schwellenwert und das Zeitfenster. Sagen Sie, welcher falsche Treffer möglich wäre.