Passwortlogin über SSH unter Ubuntu deaktivieren
Oder: Warum Sicherheitseinstellungen immer getestet werden müssen
Eine der ersten Dinge, die ich bei einem neuen Server immer anpasse ist die sshd_config
, der Login über SSH mittels Passwort wird deaktiviert:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
PasswordAuthentication no
PermitEmptyPasswords no
KbdInteractiveAuthentication no
UsePAM no
Normalerweise geht man davon aus, das die Einträge funktionieren. Meist testet man den Login dann vom eigenen PC aus und stellt zufrieden die Verwendung des Zertifikates fest.
Cloud Init
Natürlich wird Ubuntu aber heutzutage mit Cloud-Init ausgeliefert und seit Ubuntu 20.04 bringt dies direkt eine neue Config-Datei namens /etc/ssh/sshd_config.d/50-cloud-init.conf
mit, die eine einzige Zeile enthält:
PasswordAuthentication yes
Da das Einbinden des Verzeichnisses sshd_config.d
sehr weit oben in der sshd_config
stattfindet, ist dies fast immer das erste Vorkommen der PasswordAuthentication
Direktive. Das bedeutet, dass der hier angegebene Wert erhalten bleibt und die Passwortauthentifizierung trotz aller anderen Einstellungen aktiviert bleibt.
Um die Möglichkeit, sich mit einem Passwort anzumelden, vollständig zu deaktivieren, muss diese Datei daher gelöscht oder bearbeitet werden. Da diese Datei jedoch nur einem Zweck dient, kann sie mit gutem Gewissen gelöscht werden.
Abschließende Bemerkungen
- Dieser Sachverhalt zeigt deutlich, dass Sicherheitseinstellungen immer getestet werden müssen, egal wie sorgfältig man die Konfiguration durchführt, und zwar auch aus der Sicht eines externen Kontextes, in diesem Fall die Anmeldung ohne eigenes Zertifikat zu erzwingen.
- WTF Canonical?