Wie findet man einen Angriff im Log?
Einen Angriff im Log finden heißt, die Aufzeichnung der Anmeldungen eines Servers zu lesen und die Adresse zu erkennen, die eingebrochen ist. Das ist wichtig, weil ein Einbruch zwischen Hunderten harmloser Fehlversuche steckt und eingedämmt werden muss, bevor er sich ausbreitet.
Die meisten Fehlversuche stammen von Robotern, die nie hineinkommen. Einige sind der Besitzer, der sich vertippt. Eine Adresse ist anders: Sie scheitert immer wieder, und dann gelingt es ihr.
Am Ende dieser Lektion
Notiz
Ich kann einen Einbruch in einem Log finden, eindämmen und die Abhilfe nennen.
Schlüsselwörter
| Begriff | Was er bedeutet |
|---|---|
| Log | eine Datei, in der ein System aufschreibt, was geschah, jeweils eine Zeile |
| Brute Force | viele Passwörter ausprobieren, bis eines passt |
| Quelladresse | die Netzadresse, von der eine Verbindung kam |
| Eindämmung | den Schaden stoppen, bevor er sich ausbreitet, noch vor der Reparatur der Ursache |
| Rauschen | Logzeilen, die beunruhigen und nichts bedeuten |
| Wendepunkt | die eine Tatsache, die einen Angriff vom Rauschen trennt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Erst zählen, dann fragen, wer hineinkam
Der Fall ist eine Kopie des SSH-Logs eines Servers, im Ordner case. Er ist schreibgeschützt, damit der Beweis bleibt, wie er ist.
Eine große Zahl ist für sich noch kein Angriff. Zählen Sie zuerst die Fehlversuche je Adresse. Fragen Sie dann, welche Adressen je hineinkamen.
Fehlgeschlagene Anmeldungen je Adresse zählen
grep "Failed password" case/var/log/auth.log | awk '{for (i = 1; i <= NF; i++) if ($i == "from") print $(i + 1)}' | sort | uniq -c | sort -rn | head -n 3Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die ersten drei
Der Run schrieb drei Zeilen, jede mit einer Zahl und einer Adresse. Auf der Testmaschine waren die Zahlen 260, 70 und 3. Die Adressen sind für alle Studierenden dieses Labs dieselben.
Die Adresse mit 260 Fehlversuchen ist die lauteste. Laut heißt nicht gefährlich: Hören Sie hier nicht auf.
Wer kam hinein, und von wo?
awk '$6 == "Accepted" {print $9, $11}' case/var/log/auth.log | sort | uniq -cHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Adressen speichern, die hineinkamen
awk '$6 == "Accepted" {print $11}' case/var/log/auth.log | sort -u > akzeptiert.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Welche laute Adresse kam auch hinein?
awk '$6 == "Failed" {for (i = 1; i <= NF; i++) if ($i == "from") print $(i + 1)}' case/var/log/auth.log | sort | uniq -c | awk '$1 >= 20 {print $2}' | sort | comm -12 - akzeptiert.txt | tee verdaechtig.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ihre erste erfolgreiche Anmeldung zeigen
grep Accepted case/var/log/auth.log | grep -F -f verdaechtig.txt | head -n 1Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was die vier Runs fanden
Der erste schrieb drei Gruppen. Der Administrator meldete sich von der Adresse des Büros an und einmal von der Adresse, an der er sich vertippt hatte. Ein drittes Konto kam zweimal von der verdächtigen Adresse hinein.
Der Run für den Wendepunkt schrieb eine Adresse. Sie scheiterte mindestens zwanzigmal und hatte dann Erfolg. Der letzte Run zeigte die Zeile ihres ersten Erfolgs, mit Uhrzeit und Konto.
Erst eindämmen, dann die Ursache beheben
Wenn Sie es wissen, gehen Sie in dieser Reihenfolge vor. Eindämmen ist schnell und lässt sich rückgängig machen. Beheben dauert länger und muss richtig sein.
Löschen Sie noch nichts. Der Beweis zeigt, was sonst noch berührt wurde.
Beispiel: von der Logzeile zur Abhilfe
| Schritt | Was Sie tun | Warum |
|---|---|---|
| Erkennen | Fehlversuche je Adresse zählen, dann sehen, wer hineinkam | Findet den Wendepunkt |
| Eindämmen | Das Konto sperren und die Adresse ablehnen | Der Eindringling kann es nicht mehr nutzen |
| Ursache beheben | Nur SSH-Schlüssel, eine Regel für den Port, keine Passwort-Anmeldung | Derselbe Versuch kann nicht mehr klappen |
| Prüfen | Hinterlassenes suchen: Schlüssel, Aufträge, neue Konten | Schließt einen zweiten Rückweg |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Eindämmen an einem eigenen Konto üben
Sie berühren kein Konto des Falls. Legen Sie ein Wegwerf-Konto namens demo7 an, sperren Sie es, lesen Sie seinen Zustand und entfernen Sie es.
Ein gesperrtes Konto kann sich nicht mit Passwort anmelden, und nichts wird gelöscht. Deshalb ist es der erste Schritt.
Das Wegwerf-Konto anlegen
sudo useradd -m -s /bin/bash demo7Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Sein Passwort sperren
sudo passwd -l demo7Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Seinen Zustand lesen
sudo passwd -S demo7Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Konto und Ordner entfernen
sudo userdel -r demo7Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Was die Konto-Runs ausgaben
Der Sperr-Run schrieb passwd: password changed.. Der Zustands-Run schrieb eine Zeile, die mit demo7 L beginnt. Der Buchstabe L heißt gesperrt. Ein Konto, das sich anmelden kann, zeigt P.
Der Lösch-Run kann eine Warnung über ein Mailpostfach schreiben. Sie ist harmlos, denn das Konto hatte nie Post.
Die zwei erzeugten Dateien löschen
rm akzeptiert.txt verdaechtig.txtHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Ein häufiger Fehler
Warnung
Viele sperren die Adresse mit den meisten Fehlversuchen und erklären den Vorfall für beendet. Diese Adresse kam nie hinein. Die, die es tat, ist leiser und noch drin. Fragen Sie immer, wer Erfolg hatte, und prüfen Sie, was er verändert hat.
Zum Weiterdenken: Was tat die Adresse noch?
Sehen Sie sich das Log des Webservers an, case/var/log/nginx/access.log. Führen Sie die zwei speichernden Runs noch einmal aus, um verdaechtig.txt neu anzulegen, und zählen Sie dann die Anfragen dieser Adresse mit grep -c -F -f verdaechtig.txt. Löschen Sie danach beide Dateien.
Schreiben Sie einen Satz: Was verlangte sie eine Stunde, bevor sie anfing, Passwörter zu raten?