Good to Know Database

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?

Von 3 Min. Lesezeit

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.

Quellen