Die vier Einstellungen, die zählen
Wenn du nur zehn Minuten hast, sind es diese. Sie erledigen den Großteil dessen, was täglich gegen deinen Server läuft.
# Keine Passwörter mehr
PasswordAuthentication no
# Auch nicht über den Umweg PAM
KbdInteractiveAuthentication no
# root nie direkt
PermitRootLogin no
# Nur Mitglieder dieser Gruppe
AllowGroups ssh-nutzerEin Drop-in unter sshd_config.d/ überlebt Paketaktualisierungen ohne Konflikte mit der Hauptdatei. Die niedrige Nummer ist Absicht: sshd nimmt den ersten gefundenen Wert, und Distributionen legen eigene Dateien ab, etwa 50-redhat.conf auf RHEL (setzt unter anderem X11Forwarding yes) oder 50-cloud-init.conf in Cloud-Images. Eine 99--Datei würde gegen beide verlieren.
- PasswordAuthentication noDamit sind sämtliche Brute-Force-Versuche erledigt, unabhängig davon, wie gut das Passwort war. Voraussetzung: Dein Schlüssel liegt vorher in authorized_keys und du hast die Anmeldung getestet.
- KbdInteractiveAuthentication noOhne diese Zeile bleibt bei manchen Distributionen ein zweiter Weg zur Passwortabfrage offen, über PAM. Die Abschaltung der ersten Option allein genügt also nicht.
- PermitRootLogin noroot ist der einzige Kontoname, den jeder Angreifer kennt. Administration läuft über ein persönliches Konto plus sudo, nur so ist im Nachhinein nachvollziehbar, wer was getan hat.
- AllowGroups statt AllowUsersEine Gruppe pflegst du an einer Stelle, eine Benutzerliste in der Konfiguration jedes Servers. Ab dem zweiten Host ist die Gruppe die einzige Variante, die auf Dauer gepflegt wird.
sudo groupadd -f ssh-nutzer
sudo usermod -aG ssh-nutzer $USER
sudo sshd -t # Syntaxprüfung, IMMER zuerst
sudo systemctl reload ssh # Debian/Ubuntu
sudo systemctl reload sshd # RHEL/Rocky/Alma
# In einem NEUEN Terminal testen, altes offen lassen
ssh -v $USER@serversshd -t fängt genau die Tippfehler ab, die dich sonst aussperren. Ein reload statt restart lässt bestehende Sitzungen am Leben.