Systemprotokolle auf anomale Einträge analysieren
In diesem Schritt lernen Sie, wie Sie Systemprotokolle analysieren, um Beweise für verdächtige Aktivitäten zu finden. Systemprotokolle sind Aufzeichnungen von Ereignissen, die auf dem System auftreten, und sie sind eine kritische Informationsquelle für die Sicherheitsüberwachung und forensische Analyse. Wir konzentrieren uns auf Authentifizierungsprotokolle, die Benutzeranmeldungen und Berechtigungserweiterungen verfolgen, und verwenden Standard-Linux-Tools wie grep, tail und journalctl, um anomale Einträge zu finden.
Die meisten Systemprotokolle auf einem Linux-System werden im Verzeichnis /var/log gespeichert. Eines der wichtigsten für die Sicherheit ist /var/log/auth.log, das ereignisbezogene Authentifizierungsereignisse aufzeichnet, einschließlich SSH-Anmeldungen und der Verwendung des sudo-Befehls. Beginnen wir damit, die letzten Zeilen dieser Datei mit dem Befehl tail anzuzeigen. Sie benötigen sudo, da diese Datei geschützt ist.
sudo tail /var/log/auth.log
Sie sehen eine Reihe von Einträgen mit Zeitstempeln. Das Format umfasst typischerweise das Datum, die Uhrzeit, den Hostnamen, den Prozess, der das Protokoll generiert hat, und die Ereignismeldung.
Jul 22 10:30:01 labex-vm sudo: labex : TTY=pts/0 ; PWD=/home/labex/project ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
Jul 22 10:30:01 labex-vm sudo: pam_unix(sudo:session): session opened for user root(uid=0) by (uid=1000)
Jul 22 10:30:01 labex-vm sudo: pam_unix(sudo:session): session closed for user root
Nun simulieren wir ein häufiges verdächtiges Ereignis: einen fehlgeschlagenen Anmeldeversuch. Angreifer versuchen oft, Passwörter für gültige oder gängige Benutzernamen zu erraten. Wir können dies simulieren, indem wir versuchen, uns mit einem nicht existierenden Benutzernamen wie baduser bei unserer eigenen Maschine (localhost) per SSH anzumelden.
ssh baduser@localhost
Das System fordert Sie zur Eingabe eines Passworts auf (Sie können labex als Passwort verwenden). Da der Benutzer nicht existiert, schlägt jedes Passwort fehl. Drücken Sie einfach Strg+C, um die Passwortabfrage abzubrechen und zum Terminal zurückzukehren. Der Verbindungsversuch schlägt fehl, wird aber protokolliert.
Nun jagen wir nach den Beweisen. Wir können den Befehl grep verwenden, um die Datei auth.log nach Zeilen zu filtern, die das Wort "Failed" enthalten. Dies isoliert schnell erfolglose Ereignisse.
sudo grep "Failed" /var/log/auth.log
Die Ausgabe zeigt nun deutlich den Protokolleintrag für unseren fehlgeschlagenen SSH-Anmeldeversuch, was ein starker Hinweis auf einen potenziellen Eindringversuch ist.
Jul 22 10:35:15 labex-vm sshd[12345]: Failed password for invalid user baduser from 127.0.0.1 port 54321 ssh2
Moderne Linux-Systeme, die systemd verwenden, verfügen auch über ein zentralisiertes Protokollsystem, das von journald verwaltet wird. Der Befehl journalctl ist ein leistungsstarkes Werkzeug zum Abfragen dieser Protokolle. Verwenden wir ihn, um denselben fehlgeschlagenen Anmeldeereignis zu finden, indem wir nach Nachrichten vom sshd-Prozess suchen. Beachten Sie, dass Sie sudo verwenden müssen, um systemweite Protokolle anzuzeigen.
sudo journalctl | grep sshd
Scrollen Sie durch die Ausgabe (mit den Pfeiltasten, und drücken Sie q zum Beenden) und Sie finden denselben "Failed password"-Eintrag. Um es noch einfacher zu machen, können Sie nach der Priorität der Nachrichten filtern. Bitten wir journalctl, nur Einträge mit der Priorität "error" (err) oder höher für den Dienst sshd anzuzeigen.
sudo journalctl -p err | grep sshd
Dieser Befehl liefert Ihnen eine viel prägnantere Ansicht nur der Fehlerbedingungen, was ihn für die Erkennung von Problemen sehr effizient macht.
-- Logs begin at ... --
Jul 22 10:35:15 labex-vm sshd[12345]: Failed password for invalid user baduser from 127.0.0.1 port 54321 ssh2
-- End of logs --
Schließlich können Sie auch manuell Nachrichten in die Protokolle einfügen, indem Sie den Befehl logger verwenden. Dies ist nützlich für benutzerdefinierte Skripte, um Sicherheitsereignisse zu melden. Erstellen wir eine benutzerdefinierte Warnung.
logger "SECURITY-ALERT: Unauthorized file access detected in /etc"
Suchen Sie nun nach dieser spezifischen Warnung in den Systemprotokollen.
sudo grep "SECURITY-ALERT" /var/log/syslog
Sie sehen Ihre benutzerdefinierte Nachricht, die zeigt, wie Sie Ihre eigene Überwachung mit der Protokollierungsfunktion des Systems integrieren können.
Jul 22 10:40:00 labex-vm labex: SECURITY-ALERT: Unauthorized file access detected in /etc
Sie haben nun die Grundlagen der Navigation in Systemprotokollen gelernt, um Beweise für anomale und potenziell bösartige Aktivitäten zu finden.