Deaktivieren bestimmter OpenSSH-Schlüssel unter OpenBSD: Warum werden die entsprechenden „sshd_config“-Einträge ignoriert und warum generiert „ssh-keygen -A“ verbotene Schlüssel?

Deaktivieren bestimmter OpenSSH-Schlüssel unter OpenBSD: Warum werden die entsprechenden „sshd_config“-Einträge ignoriert und warum generiert „ssh-keygen -A“ verbotene Schlüssel?

Ich versuche, Folgendes auf meinen OpenBSD 6.9-Servern zu erreichen:

  1. Verbot der Verwendung aller Schlüssel außer dem ssh-ed25519auf beidenSERVERUndKLIENTSeiten.
  2. Beschränkung ssh-keygen -Ader Schlüsselgenerierung ausschließlich auf den autorisierten ssh-ed25519Algorithmus und sonst nichts.

Um dies zu erreichen, habe ich meinem die folgenden Zeilen hinzugefügt sshd_config:

HostKey /etc/ssh/ssh_host_ed25519_key
CASignatureAlgorithms ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

Ich habe meinem außerdem die folgenden Zeilen hinzugefügt ssh_config:

CASignatureAlgorithms ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
HostKeyAlgorithms ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

Ich habe alle Schlüssel außer dem autorisierten gelöscht.

SSHD neugestartet:

# rcctl restart sshd                                                                            
sshd(ok)
sshd(ok)

Nachdem ich durch Ausführen der folgenden Befehle überprüft habe, ob meine Einstellungen verwendet werden:

# ssh -Q HostbasedAcceptedAlgorithms
# ssh -Q HostKeyAlgorithms
# ssh -Q PubkeyAcceptedAlgorithms

Zu meiner Überraschung antworten sie alle mit Folgendem:

ssh-ed25519
[email protected]
[email protected]
[email protected]
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

Mit anderen Worten: Die wichtigsten Einschränkungen werden ignoriert.

Sicherheitshalber habe ich den Server sogar neugestartet, aber es gibt keinen Unterschied.

Eine mögliche Problemumgehung besteht darin, alle Schlüsseldateien außer der autorisierten zu entfernen. Das Init-Skript /etc/rcenthält jedoch eine Zeile, ssh-keygen -Adie alle fehlenden SSH-Schlüssel nach jedem Systemneustart neu generiert, bevor der SSHD-Daemon gestartet wird.einschließlich derjenigen verbotener Algorithmen!

Das Entfernen der Schlüssel löst das Problem also nicht.

Als zusätzliche Problemumgehung könnte ich die ssh-keygen -AZeile aus dem Init-Skript entfernen oder durch meinen benutzerdefinierten Algorithmus zur Schlüsselgenerierung ersetzen, aber das würde mich wieder dahin zurückführen, wo alles angefangen hat: Ich müsste mich immer wieder mit diesem Problem auseinandersetzen, z. B. nach jedem Systemupdate, wenn das OpenBSD-Team eine neue Version von veröffentlicht /etc/rc. Das automatische Entfernen dieser Zeile und das Testen einer derart schlampigen Problemumgehung auf einer großen Anzahl von Servern ist schwierig und kann zu einem massiven Netzwerkausfall führen, wenn etwas schief geht.

Daher habe ich meine Untersuchung fortgesetzt und mich in den Quellcode von vertieft ssh-keygen. Ich habe herausgefunden, dass es nicht möglich ist, das Verhalten des -ASwitches von außen, z. B. über Konfigurationsdateien, einzuschränken. Es wird nicht einmal ein Vortest durchgeführt, ob die Schlüssel autorisiert sind oder nicht, sondern die Schlüssel werden nur gemäß einer Liste von Algorithmen aus einem fest codierten Array generiert. Die einzige Möglichkeit, dies zu vermeiden, besteht darin, einen benutzerdefinierten Fork von zu bearbeiten, neu zu kompilieren und zu verwenden ssh-keygen, aber dann muss ich mich nach jedem OpenSSH-Update damit befassen ...

Ich habe eine Teillösung für andere Betriebssysteme gefunden, aber nicht für OpenBSD.

Kann mir bitte jemand eine passende Lösung zeigen? Warum werden meine sshd_configund ssh_configSchlüsselbeschränkungen ignoriert und wie kann ich ssh-keygen -Adie Generierung von Schlüsseln mit verbotenen Algorithmen stoppen?

Bevor jemand fragt: Alle anderen Einstellungen werden von OpenSSH in beiden Konfigurationsdateien verwendet, daher sind diese Konfigurationsdateien tatsächlich die, die geladen werden.

Vielen Dank für alle hilfreichen Antworten.

verwandte Informationen