Verëffentlechung vun OpenSSH 8.2 mat Ënnerstëtzung fir FIDO / U2F Zwee-Faktor Authentifikatioun Tokens

No véier Méint Entwécklung presentéiert Fräisetzung OpenSSH 8.2, eng oppe Client- a Serverimplementatioun fir iwwer d'SSH 2.0 a SFTP Protokoller ze schaffen.

Eng Schlësselverbesserung an der Verëffentlechung vun OpenSSH 8.2 war d'Fäegkeet zwee-Faktor Authentifikatioun ze benotzen mat Apparater déi de Protokoll ënnerstëtzen U2F, vun der Allianz entwéckelt Fido. U2F erlaabt d'Schafe vu Low-Cost Hardware Tokens fir d'physikalesch Präsenz vum Benotzer z'iwwerpréiwen, mat hinnen iwwer USB, Bluetooth oder NFC ze interagéieren. Esou Geräter ginn als Mëttel vun zwee-Faktor Authentifikatioun op Websäiten gefördert, si scho vu grousse Browser ënnerstëtzt a gi vu verschiddene Hiersteller produzéiert, dorënner Yubico, Feitian, Thetis a Kensington.

Fir mat Apparater ze interagéieren, déi d'Präsenz vum Benotzer bestätegen, goufen nei Schlësseltypen "ecdsa-sk" an "ed25519-sk" op OpenSSH bäigefüügt, déi d'ECDSA an Ed25519 digital Ënnerschrëft Algorithmen benotzen, kombinéiert mat dem SHA-256 Hash. Prozedure fir Interaktioun mat Tokens ginn an enger Tëschenzäitbibliothéik gesat, déi op eng ähnlech Manéier wéi d'Bibliothéik fir PKCS # 11 Ënnerstëtzung gelueden ass an e Wrapper uewen op der Bibliothéik ass luef 2, déi Tools ubitt fir mat Tokens iwwer USB ze kommunizéieren (FIDO U2F / CTAP 1 a FIDO 2.0 / CTAP 2 Protokoller ginn ënnerstëtzt). Zwëschenbibliothéik libsk-libfido2 virbereet vun OpenSSH Entwéckler abegraff an de Kär libfido2, wéi och HID Chauffer fir OpenBSD.

Fir e Schlëssel ze authentifizéieren an ze generéieren, musst Dir de Parameter "SecurityKeyProvider" an den Astellunge spezifizéieren oder d'SSH_SK_PROVIDER Ëmfeldvariabel setzen, wat de Wee an d'extern Bibliothéik beweist libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2. also). Et ass méiglech openssh mat agebauter Ënnerstëtzung fir d'Schichtbibliothéik ze bauen (--with-security-key-builtin), an dësem Fall musst Dir de "SecurityKeyProvider=intern" Parameter setzen.
Als nächst musst Dir "ssh-keygen -t ecdsa-sk" lafen oder, wann d'Schlësselen scho erstallt a konfiguréiert sinn, verbannen mat dem Server mat "ssh". Wann Dir ssh-keygen leeft, gëtt de generéierte Schlësselpaar an "~/.ssh/id_ecdsa_sk" gespäichert a kann ähnlech wéi aner Schlësselen benotzt ginn.

Den ëffentleche Schlëssel (id_ecdsa_sk.pub) soll op de Server an der autoriséierter_keys Datei kopéiert ginn. Op der Server Säit gëtt nëmmen déi digital Ënnerschrëft verifizéiert, an d'Interaktioun mat Tokens gëtt op der Client Säit gemaach (Dir musst net libsk-libfido2 um Server installéieren, awer de Server muss den "ecdsa-sk" Schlësseltyp ënnerstëtzen) . De generéierte private Schlëssel (id_ecdsa_sk) ass wesentlech e Schlësselhandtak, deen e richtege Schlëssel bilden nëmmen a Kombinatioun mat der geheimer Sequenz, déi op der U2F Token Säit gespäichert ass. Wann den id_ecdsa_sk Schlëssel an d'Hänn vun engem Ugräifer fällt, fir d'Authentifikatioun ze passéieren, muss hien och Zougang zum Hardware Token kréien, ouni deen de private Schlëssel, deen an der id_ecdsa_sk Datei gespäichert ass, nëtzlos ass.

Zousätzlech, par défaut, wann Dir all Operatioune mat Schlësselen ausféiert (souwuel während der Generatioun wéi och während der Authentifikatioun), ass lokal Bestätegung vun der kierperlecher Präsenz vum Benotzer erfuerderlech, zum Beispill gëtt proposéiert de Sensor op der Token ze beréieren, wat et schwéier mécht Remote Attacken op Systemer mat engem verbonne Token ausféieren. Als eng aner Verteidegungslinn kann e Passwuert och während der Startphase vum ssh-keygen spezifizéiert ginn fir op d'Schlësseldatei ze kommen.

Déi nei Versioun vun OpenSSH huet och déi zukünfteg Ofschafung vun Algorithmen mat SHA-1 Hashes ugekënnegt wéinst Promotioun d'Effizienz vun Kollisiounsattacken mat engem bestëmmte Präfix (d'Käschte fir eng Kollisioun auswielen gëtt op ongeféier 45 dausend Dollar geschat). An enger vun de kommende Verëffentlechunge plangen se d'Fähigkeit auszeschalten fir den ëffentleche Schlëssel digital Ënnerschrëft Algorithmus "ssh-rsa" ze benotzen, deen am Original RFC fir den SSH Protokoll ernimmt gëtt a verbreet an der Praxis bleift (fir d'Benotzung ze testen). vun ssh-rsa an Äre Systemer, kënnt Dir probéieren iwwer ssh mat der Optioun "-oHostKeyAlgorithms = -ssh-rsa" ze verbannen).

Fir den Iwwergank op nei Algorithmen an OpenSSH ze glatteren, an enger zukünfteg Verëffentlechung gëtt d'UpdateHostKeys-Astellung par défaut aktivéiert, déi automatesch Clienten op méi zouverlässeg Algorithmen migréieren. Recommandéiert Algorithmen fir Migratioun enthalen rsa-sha2-256/512 baséiert op RFC8332 RSA SHA-2 (ënnerstëtzt zënter OpenSSH 7.2 a benotzt par défaut), ssh-ed25519 (ënnerstëtzt zënter OpenSSH 6.5) an ecdsa-sha2-nistp256/384 baséiert op RFC521 ECDSA (ënnerstëtzt zënter OpenSSH 5656).

Am OpenSSH 8.2 ass d'Fäegkeet fir mat "ssh-rsa" ze verbannen nach ëmmer verfügbar, awer dësen Algorithmus gouf aus der CASignatureAlgorithms Lëscht geläscht, déi d'Algorithmen definéiert erlaabt fir nei Zertifikater digital z'ënnerschreiwen. Ähnlech ass den diffie-hellman-group14-sha1 Algorithmus vun den ënnerstëtzte Standard Schlësselaustausch Algorithmen geläscht ginn. Et gëtt bemierkt datt d'Benotzung vu SHA-1 an Certificaten mat engem zousätzleche Risiko assoziéiert ass, well den Ugräifer onlimitéiert Zäit huet fir no enger Kollisioun fir en existent Zertifika ze sichen, während d'Zäit vum Attack op Hostschlësselen duerch d'Verbindungszäit limitéiert ass (LoginGraceTime) ).

ssh-keygen lafen elo als Standard op den rsa-sha2-512 Algorithmus, deen zënter OpenSSH 7.2 ënnerstëtzt gëtt, wat Kompatibilitéitsprobleemer erstellen kann wann Dir probéiert Zertifikater ze veraarbecht, déi an OpenSSH 8.2 ënnerschriwwe sinn op Systemer déi eeler OpenSSH Releases lafen (fir d'Thema ëmzegoen wann Wann Wann eng Ënnerschrëft generéieren, kënnt Dir explizit "ssh-keygen -t ssh-rsa" spezifizéieren oder d'ecdsa-sha2-nistp256/384/521 Algorithmen benotzen, zanter OpenSSH 5.7 ënnerstëtzt).

Aner Ännerungen:

  • Eng Include-Direktiv gouf op sshd_config bäigefüügt, wat Iech erlaabt den Inhalt vun anere Dateien op der aktueller Positioun vun der Konfiguratiounsdatei ze enthalen (Globmasken kënne benotzt ginn wann Dir de Dateinumm spezifizéiert);
  • D'Optioun "no-touch-required" gouf op ssh-keygen bäigefüügt, wat de Besoin deaktivéiert fir den Zougang zum Token kierperlech ze bestätegen wann de Schlëssel generéiert;
  • Eng PubkeyAuthOptions-Direktiv gouf op sshd_config bäigefüügt, déi verschidde Optiounen am Zesummenhang mat der ëffentlecher Schlësselauthentifikatioun kombinéiert. De Moment gëtt nëmmen de "no-touch-required" Fändel ënnerstëtzt fir kierperlech Präsenzkontrolle fir Token Authentifikatioun ze sprangen. Analogie ass d'Optioun "no-touch-required" an d'autoriséiert_keys Datei bäigefüügt;
  • D'Optioun "-O schreiwen-attestation=/path" op ssh-keygen bäigefüügt fir zousätzlech FIDO Attestationzertifikater ze schreiwen wann Dir Schlësselen generéiert. OpenSSH benotzt dës Certificaten nach net, awer si kënne spéider benotzt ginn fir z'iwwerpréiwen datt de Schlëssel an engem vertrauenswürdege Hardware Store plazéiert ass;
  • An den ssh an sshd Astellungen ass et elo méiglech de Verkéier Prioritéit Modus iwwer d'IPQoS Direktiv ze setzen LE DSCP (Lower-Effort Per-Hop Behuelen);
  • An ssh, wann Dir de Wäert "AddKeysToAgent = jo" setzt, wann de Schlëssel kee Kommentarfeld enthält, gëtt et op ssh-Agent bäigefüügt, wat de Wee zum Schlëssel als Kommentar bezeechent. IN
    ssh-keygen an ssh-Agent benotzen och elo PKCS # 11 Etiketten an der X.509 Sujet Numm amplaz vun der Bibliothéik Wee als Kommentaren am Schlëssel;

  • D'Fähigkeit bäigefüügt fir PEM fir DSA an ECDSA Schlësselen op ssh-keygen ze exportéieren;
  • En neien ausführbar bäigefüügt, ssh-sk-helper, benotzt fir d'FIDO / U2F Token Zougangsbibliothéik ze isoléieren;
  • Added "--with-zlib" Build Optioun fir ssh an sshd fir Kompiléierung mat zlib Bibliothéik Ënnerstëtzung;
  • Am Aklang mat der Fuerderung vum RFC4253 gëtt eng Warnung iwwer Zougangsblockéierung wéinst Iwwerschreiden vun MaxStartups Limiten am Banner geliwwert, deen während der Verbindung ugewise gëtt. Fir d'Diagnostik ze vereinfachen, weist de sshd-Prozess-Header, sichtbar wann Dir de ps-Utility benotzt, elo d'Zuel vun de momentan authentifizéierte Verbindungen an de Status vun der MaxStartups Limit;
  • An ssh an ssh-agent, wann Dir e Programm rufft fir eng Invitatioun um Bildschierm ze weisen, spezifizéiert iwwer $SSH_ASKPASS, gëtt e Fändel mat der Aart vun der Invitatioun elo zousätzlech iwwerdroen: "confirméieren" - Bestätegungsdialog (jo / nee), "keen " - Informatiounsmessage, "eidel" - Passwuert Ufro;
  • Eng nei digital Ënnerschrëft Operatioun "find-Prinzipien" op ssh-keygen bäigefüügt fir d'Erlaabt-Signer Datei fir de Benotzer mat enger spezifizéierter digitaler Ënnerschrëft ze sichen;
  • Verbesserte Ënnerstëtzung fir sshd Prozess Isolatioun op Linux benotzt de seccomp Mechanismus: IPC System Uriff auszeschalten, erlaabt clock_gettime64 (), clock_nanosleep_time64 an clock_nanosleep ().

Source: opennet.ru

Setzt e Commentaire