Nach viermonatiger Entwicklung Die Veröffentlichung von OpenSSH 8.4, einer offenen Implementierung von Client und Server zur Nutzung der Protokolle SSH 2.0 und SFTP.
Hauptänderungen:
- Änderungen, die die Sicherheit betreffen:
- Im ssh-agent wird bei der Verwendung von FIDO-Schlüsseln, die nicht zur Authentifizierung über SSH erstellt wurden (der Schlüsselidentifikator beginnt nicht mit der Zeichenfolge „ssh:“), jetzt überprüft, dass die Nachricht mit Methoden signiert wird, die im SSH-Protokoll verwendet werden. Diese Änderung verhindert die Weiterleitung des ssh-agent an entfernte Hosts mit FIDO-Schlüsseln, um zu blockieren, dass diese Schlüssel zur Erstellung von Signaturen für Web-Authentifizierungsanfragen verwendet werden können (der umgekehrte Fall, bei dem der Browser eine SSH-Anfrage signieren kann, wurde durch die Verwendung des Präfixes „ssh:“ im Schlüsselidentifikator ursprünglich ausgeschlossen).
- Im ssh-keygen wird beim Erstellen eines residenten Schlüssels die Unterstützung der Erweiterung credProtect aktiviert, die in der FIDO 2.1-Spezifikation beschrieben ist und zusätzlichen Schutz für Schlüssel bietet, indem vor jeder Operation, die zur Extraktion des residenten Schlüssels aus dem Token führen kann, eine PIN-Code-Eingabe verlangt wird.
- Änderungen, die möglicherweise die Kompatibilität beeinträchtigen:
- Zur Unterstützung von FIDO/U2F wird empfohlen, die Bibliothek libfido2 mindestens in der Version 1.5.0 zu verwenden. Es ist teilweise auch die Verwendung älterer Versionen möglich, aber in diesem Fall sind Funktionen wie residente Schlüssel, PIN-Anfragen und die Verbindung mehrerer Token nicht verfügbar.
- Im ssh-keygen wurden die Daten für den Authentifikator, die zur Überprüfung der Bestätigung digitaler Signaturen erforderlich sind, in das Format der Bestätigungsinformationen eingefügt, die optional beim Generieren eines FIDO-Schlüssels gespeichert werden.
- Die API, die bei der Interaktion von OpenSSH mit der Schicht zur Ansprache von FIDO-Token verwendet wird, wurde geändert.
- Beim Erstellen einer portablen Version von OpenSSH ist nun automake erforderlich, um das Konfigurierungsskript und die zugehörigen Build-Dateien zu erstellen (wenn der Build aus einer veröffentlichten tar-Datei mit Quellcode durchgeführt wird, ist eine Neuregeneration von configure nicht erforderlich).
- In ssh und ssh-keygen wurde die Unterstützung für FIDO-Schlüssel hinzugefügt, die zur Bestätigung die Eingabe eines PIN-Codes erfordern. Zum Generieren von Schlüsseln mit PIN wurde in ssh-keygen die Option „verify-required“ hinzugefügt. Bei Verwendung solcher Schlüssel wird dem Benutzer vor der Durchführung der Signaturerstellung eine Aufforderung angezeigt, die die Bestätigung seiner Aktionen durch die Eingabe des PIN-Codes erfordert.
- In sshd wurde in der Konfiguration authorized_keys die Option „verify-required“ implementiert, die die Nutzung von Funktionen zur Verifizierung der Anwesenheit des Benutzers während der Token-Operationen erfordert. Der FIDO-Standard sieht mehrere Varianten solcher Verifizierung vor, jedoch wird derzeit in OpenSSH nur die PIN-basierte Überprüfung unterstützt.
- In sshd und ssh-keygen wurde die Unterstützung für die Überprüfung digitaler Signaturen hinzugefügt, die dem FIDO Webauthn-Standard entsprechen und die Verwendung von FIDO-Schlüsseln in Webbrowsern ermöglichen.
- In ssh in den Einstellungen CertificateFile,
ControlPath, IdentityAgent, IdentityFile, LocalForward und
RemoteForward ist die Verwendung von Umgebungsvariablen im Format „${ENV}“ zur Platzhaltersetzung erlaubt. - In ssh und ssh-agent wurde die Unterstützung der Umgebungsvariablen $SSH_ASKPASS_REQUIRE hinzugefügt, die verwendet werden kann, um das Aufrufen von ssh-askpass zu aktivieren oder zu deaktivieren.
- In ssh wurde in ssh_config unter der Direktive AddKeysToAgent die Möglichkeit zur Begrenzung der Gültigkeitsdauer des Schlüssels hinzugefügt. Nach Ablauf des festgelegten Limits werden die Schlüssel automatisch aus dem ssh-agent entfernt.
- In scp und sftp kann nun mithilfe des Flags „-A“ die Weiterleitung mit ssh-agent ausdrücklich erlaubt werden (standardmäßig ist die Weiterleitung deaktiviert).
- In den ssh-Einstellungen wurde die Unterstützung für den Platzhalter „%k“ hinzugefügt, der den Namen des Hostschlüssels definiert. Diese Funktion kann verwendet werden, um Schlüssel in separaten Dateien zu verteilen (zum Beispiel „UserKnownHostsFile ~/.ssh/known_hosts.d/%k“).
- Die Verwendung des Befehls „ssh-add -d -“ zum Lesen von Schlüsseln, die gelöscht werden sollen, aus stdin ist erlaubt.
- In sshd wird der Beginn und das Ende des Vorgangs zur Verbindungskappung, der durch die Konfiguration des Parameters MaxStartups geregelt wird, im Protokoll aufgezeichnet.
Die Entwickler von OpenSSH erinnerten auch an die bevorstehende Einstufung von Algorithmen, die Hashes SHA-1 verwenden, als obsolet, in Verbindung mit Die Effektivität von Kollisionangriffen mit einem bestimmten Präfix (die Kosten zur Auffindung einer Kollision werden auf etwa 45.000 Dollar geschätzt). In einer der nächsten Ausgaben ist geplant, die Verwendung des digitalen Signaturalgorithms mit öffentlichem Schlüssel „ssh-rsa“ standardmäßig zu deaktivieren, der im ursprünglichen RFC für das SSH-Protokoll erwähnt wird und in der Praxis nach wie vor weit verbreitet ist (um zu überprüfen, ob ssh-rsa in Ihren Systemen verwendet wird, können Sie versuchen, sich per SSH mit der Option „-oHostKeyAlgorithms=-ssh-rsa“ zu verbinden).
Um den Übergang zu neuen Algorithmen in OpenSSH zu erleichtern, wird in der nächsten Version standardmäßig die Einstellung UpdateHostKeys aktiviert, die es ermöglicht, Clients automatisch auf zuverlässigere Algorithmen umzustellen. Zu den empfohlenen Algorithmen für die Migration gehören rsa-sha2-256/512 basierend auf RFC8332 RSA SHA-2 (unterstützt seit OpenSSH 7.2 und standardmäßig verwendet), ssh-ed25519 (unterstützt seit OpenSSH 6.5) und ecdsa-sha2-nistp256/384/521 basierend auf RFC5656 ECDSA (unterstützt seit OpenSSH 5.7).
Quelle: opennet.ru
