Frigivelse af OpenSSH 8.2 med understøttelse af FIDO/U2F to-faktor autentificeringstokens

Efter fire måneders udvikling præsenteret релиз OpenSSH 8.2, en åben klient- og serverimplementering til at arbejde via SSH 2.0- og SFTP-protokollerne.

En vigtig forbedring i udgivelsen af ​​OpenSSH 8.2 var muligheden for at bruge to-faktor-godkendelse ved hjælp af enheder, der understøtter protokollen U2F, udviklet af alliancen Fido. U2F tillader oprettelsen af ​​billige hardware-tokens for at verificere brugerens fysiske tilstedeværelse, interagere med dem via USB, Bluetooth eller NFC. Sådanne enheder promoveres som et middel til to-faktor autentificering på websteder, understøttes allerede af større browsere og produceres af forskellige producenter, herunder Yubico, Feitian, Thetis og Kensington.

For at interagere med enheder, der bekræfter brugerens tilstedeværelse, er nye nøgletyper "ecdsa-sk" og "ed25519-sk" blevet tilføjet til OpenSSH, som bruger ECDSA og Ed25519 digitale signaturalgoritmer, kombineret med SHA-256 hash. Procedurer for interaktion med tokens placeres i et mellembibliotek, som indlæses på samme måde som biblioteket til PKCS#11-understøttelse og er en indpakning oven på biblioteket libfido2, som giver værktøjer til at kommunikere med tokens over USB (protokollerne FIDO U2F/CTAP 1 og FIDO 2.0/CTAP 2 understøttes). Mellembibliotek libsk-libfido2 udarbejdet af OpenSSH-udviklere inkluderet ind i kernen libfido2, samt HID driver til OpenBSD.

For at godkende og generere en nøgle skal du angive parameteren "SecurityKeyProvider" i indstillingerne eller indstille miljøvariablen SSH_SK_PROVIDER, der angiver stien til det eksterne bibliotek libsk-libfido2.so (eksporter SSH_SK_PROVIDER=/path/to/libsk-libfido2. så). Det er muligt at bygge openssh med indbygget understøttelse af lagbiblioteket (--with-security-key-builtin), i dette tilfælde skal du indstille "SecurityKeyProvider=internal" parameteren.
Dernæst skal du køre "ssh-keygen -t ecdsa-sk" eller, hvis nøglerne allerede er oprettet og konfigureret, oprette forbindelse til serveren ved hjælp af "ssh". Når du kører ssh-keygen, vil det genererede nøglepar blive gemt i "~/.ssh/id_ecdsa_sk" og kan bruges på samme måde som andre nøgler.

Den offentlige nøgle (id_ecdsa_sk.pub) skal kopieres til serveren i filen authorized_keys. På serversiden er det kun den digitale signatur, der verificeres, og interaktion med tokens udføres på klientsiden (du behøver ikke at installere libsk-libfido2 på serveren, men serveren skal understøtte nøgletypen "ecdsa-sk") . Den genererede private nøgle (id_ecdsa_sk) er i det væsentlige et nøglehåndtag, der kun danner en rigtig nøgle i kombination med den hemmelige sekvens, der er gemt på U2F-tokensiden. Hvis id_ecdsa_sk-nøglen falder i hænderne på en angriber, skal han for at bestå autentificering også få adgang til hardwaretokenet, uden hvilket den private nøgle, der er gemt i id_ecdsa_sk-filen, er ubrugelig.

Derudover kræves der som standard, når der udføres operationer med nøgler (både under generering og under autentificering), lokal bekræftelse af brugerens fysiske tilstedeværelse, f.eks. foreslås det at røre ved sensoren på tokenet, hvilket gør det vanskeligt at udføre fjernangreb på systemer med et tilsluttet token. Som en anden forsvarslinje kan en adgangskode også angives under opstartsfasen af ​​ssh-keygen for at få adgang til nøglefilen.

Den nye version af OpenSSH annoncerede også den kommende afskrivning af algoritmer ved hjælp af SHA-1 hashes pga. forfremmelse effektiviteten af ​​kollisionsangreb med et givet præfiks (omkostningerne ved at vælge en kollision anslås til ca. 45 tusind dollars). I en af ​​de kommende udgivelser planlægger de som standard at deaktivere muligheden for at bruge den offentlige nøgle digitale signaturalgoritme "ssh-rsa", som er nævnt i den originale RFC for SSH-protokollen og forbliver udbredt i praksis (for at teste brugen af ssh-rsa i dine systemer, kan du prøve at oprette forbindelse via ssh med muligheden "-oHostKeyAlgorithms=-ssh-rsa").

For at udjævne overgangen til nye algoritmer i OpenSSH vil UpdateHostKeys-indstillingen som standard være aktiveret i en fremtidig udgivelse, hvilket automatisk vil migrere klienter til mere pålidelige algoritmer. Anbefalede algoritmer til migrering inkluderer rsa-sha2-256/512 baseret på RFC8332 RSA SHA-2 (understøttet siden OpenSSH 7.2 og brugt som standard), ssh-ed25519 (understøttet siden OpenSSH 6.5) og ecdsa-sha2-nistp256/384 baseret på RFC521 ECDSA (understøttet siden OpenSSH 5656).

I OpenSSH 8.2 er muligheden for at oprette forbindelse ved hjælp af "ssh-rsa" stadig tilgængelig, men denne algoritme er blevet fjernet fra listen CASignatureAlgorithms, som definerer de algoritmer, der er tilladt for digital signering af nye certifikater. På samme måde er diffie-hellman-group14-sha1-algoritmen blevet fjernet fra de understøttede standardnøgleudvekslingsalgoritmer. Det bemærkes, at brugen af ​​SHA-1 i certifikater er forbundet med yderligere risiko, da angriberen har ubegrænset tid til at søge efter en kollision for et eksisterende certifikat, mens tidspunktet for angreb på værtsnøgler er begrænset af forbindelsens timeout (LoginGraceTime ).

At køre ssh-keygen er nu standard til rsa-sha2-512-algoritmen, som er understøttet siden OpenSSH 7.2, hvilket kan skabe kompatibilitetsproblemer, når man forsøger at behandle certifikater, der er signeret i OpenSSH 8.2 på systemer, der kører ældre OpenSSH-udgivelser (for at omgå problemet, når Hvornår genererer en signatur, kan du eksplicit angive "ssh-keygen -t ssh-rsa" eller bruge ecdsa-sha2-nistp256/384/521 algoritmerne, understøttet siden OpenSSH 5.7).

Andre ændringer:

  • Et Include-direktiv er blevet tilføjet til sshd_config, som giver dig mulighed for at inkludere indholdet af andre filer på den aktuelle position af konfigurationsfilen (glob-masker kan bruges, når du angiver filnavnet);
  • Muligheden "no-touch-required" er blevet tilføjet til ssh-keygen, som deaktiverer behovet for fysisk at bekræfte adgangen til tokenet, når nøglen genereres;
  • Et PubkeyAuthOptions-direktiv er blevet tilføjet til sshd_config, som kombinerer forskellige muligheder relateret til offentlig nøglegodkendelse. I øjeblikket understøttes kun flaget "no-touch-required" for at springe fysisk tilstedeværelseskontrol over for token-godkendelse. Analogt er "no-touch-required" muligheden blevet tilføjet til filen authorized_keys;
  • Tilføjet "-O write-attestation=/path"-mulighed til ssh-keygen for at tillade, at yderligere FIDO-attestationscertifikater kan skrives ved generering af nøgler. OpenSSH bruger endnu ikke disse certifikater, men de kan senere bruges til at verificere, at nøglen er placeret i en betroet hardwarebutik;
  • I indstillingerne ssh og sshd er det nu muligt at indstille trafikprioriteringstilstanden via IPQoS-direktivet LE DSCP (Lavere-indsats per-hop adfærd);
  • I ssh, når du indstiller værdien "AddKeysToAgent=yes", hvis nøglen ikke indeholder et kommentarfelt, vil den blive tilføjet til ssh-agent, der angiver stien til nøglen som en kommentar. I
    ssh-keygen og ssh-agent bruger nu også PKCS#11-etiketter og X.509-emnenavnet i stedet for biblioteksstien som kommentarer i nøglen;

  • Tilføjet muligheden for at eksportere PEM til DSA og ECDSA nøgler til ssh-keygen;
  • Tilføjet en ny eksekverbar, ssh-sk-helper, brugt til at isolere FIDO/U2F token adgangsbiblioteket;
  • Tilføjet "--with-zlib" byggemulighed til ssh og sshd til kompilering med zlib-biblioteksunderstøttelse;
  • I overensstemmelse med kravet i RFC4253 er der en advarsel om adgangsblokering på grund af overskridelse af MaxStartups grænser i banneret, der vises under forbindelsen. For at forenkle diagnostik viser sshd-proceshovedet, som er synligt ved brug af ps-værktøjet, nu antallet af aktuelt godkendte forbindelser og status for MaxStartups-grænsen;
  • I ssh og ssh-agent, når et program kaldes for at vise en invitation på skærmen, angivet via $SSH_ASKPASS, sendes der nu yderligere et flag med typen af ​​invitation: "bekræft" - bekræftelsesdialog (ja/nej), "ingen ” - informativ besked, “tom” — anmodning om adgangskode;
  • Tilføjet en ny digital signatur-operation "find-principals" til ssh-keygen for at søge i den tilladte underskriver-fil for den bruger, der er knyttet til en specificeret digital signatur;
  • Forbedret understøttelse af sshd-procesisolering på Linux ved hjælp af seccomp-mekanismen: deaktivering af IPC-systemkald, tillader clock_gettime64(), clock_nanosleep_time64 og clock_nanosleep().

Kilde: opennet.ru

Tilføj en kommentar