Sicherheitgilt für Debian 12, Ubuntu 24.04, Pi OS
Wie sehe ich fehlgeschlagene Anmeldeversuche unter Linux?
Der Server ist per SSH aus dem Internet erreichbar, und man möchte wissen, wer es versucht: welche Adressen, welche Benutzernamen, wie oft. Und wer war zuletzt wirklich angemeldet?
Lösung
Kurz: sudo lastb listet fehlgeschlagene Anmeldungen, last die erfolgreichen. Für SSH liefert journalctl -u ssh die genaueren Einträge mit Benutzername und Adresse.
Fehlgeschlagene Anmeldungen
sudo lastb | head -20
Jede Zeile zeigt Benutzername, Zugang, Herkunftsadresse und Zeit. lastb liest die Datei
/var/log/btmp und braucht deshalb sudo.
Erfolgreiche Anmeldungen
last -a | head -20
-a schreibt die Herkunftsadresse ans Zeilenende, wo sie nicht abgeschnitten wird.
last reboot zeigt die Neustarts.
Genauer: das SSH-Protokoll
sudo journalctl -u ssh --since today | grep -E "Failed|Invalid"
„Invalid user“ heißt, dass es den Benutzernamen gar nicht gibt, „Failed password“, dass das Passwort falsch
war. Unter manchen Systemen heißt der Dienst sshd statt ssh.
Die häufigsten Angreifer zählen
sudo lastb -i | awk '{print $3}' | sort | uniq -c | sort -rn | head
-i gibt die Adressen als Zahlen aus. Wer immer wieder auftaucht, gehört gesperrt. Das
übernimmt fail2ban automatisch.
Nachträge
Wie leere ich die Listen?
Mit sudo truncate -s 0 /var/log/btmp für die Fehlversuche und
sudo truncate -s 0 /var/log/wtmp für die erfolgreichen Anmeldungen. Die Dateien bleiben dabei
mit ihren Rechten erhalten. Normalerweise ist das nicht nötig, logrotate hält sie klein.
lastb zeigt nichts an, obwohl es Angriffe gibt
Dann fehlt die Datei /var/log/btmp oder sie ist leer, weil logrotate sie gerade neu begonnen
hat. Ältere Einträge stehen in /var/log/btmp.1 und lassen sich mit
sudo lastb -f /var/log/btmp.1 lesen. Das Journal ist die verlässlichere Quelle.