OpenSSH 8.2-udgivelse med understøttelse af FIDO/U2F to-faktor-autentifikationsenheder

Efter fire måneders udvikling præsenteret udgivelse OpenSSH 8.2, en open source-implementering af klient og server til arbejde med SSH 2.0- og SFTP-protokoller.

En central forbedring i OpenSSH 8.2-udgivelsen er muligheden for at bruge to-faktor-autentifikation ved hjælp af enheder, der understøtter protokollen U2F, udviklet af alliancen FIDO. U2F muliggør oprettelse af omkostningseffektive hardware tokens til bekræftelse af brugerens fysiske tilstedeværelse, hvor interaktionen sker via USB, Bluetooth eller NFC. Sådanne enheder markedsføres som et middel til to-faktor autentificering på websteder, understøttes allerede af de fleste webbrowsere og produceres af forskellige producenter, herunder Yubico, Feitian, Thetis og Kensington.

For at interagere med enheder, der bekræfter brugerens tilstedeværelse, er der tilføjet nye nøgletyper «ecdsa-sk» og «ed25519-sk» i OpenSSH, som anvender ECDSA og Ed25519 digitale signaturalgoritmer sammen med SHA-256 hash. Interaktionsprocedurerne med tokenen er blevet flyttet til et mellemliggende bibliotek, som indlæses på samme måde som biblioteket til understøttelse af PKCS#11 og fungerer som en wrapper over biblioteket. libfido2, der giver midler til kommunikation med tokens over USB (understøtter FIDO U2F/CTAP 1 og FIDO 2.0/CTAP 2 protokoller). Det mellemlag, der er forberedt af udviklerne af OpenSSH, er indarbejdet i hovedbiblioteket libfido2, ligesom er HID-driveren til OpenBSD. For at aktivere U2F kan du bruge den seneste version af kodebasen fra

For at autentificere og generere nøglen skal du angive parameteren «SecurityKeyProvider» i indstillingerne eller sætte miljøvariablen SSH_SK_PROVIDER og angive stien til det eksterne bibliotek libsk-libfido2.so (export SSH_SK_PROVIDER=\/path\/to\/libsk-libfido2.so). Det er muligt at kompilere OpenSSH med indbygget understøttelse af mellemliggende bibliotek (—with-security-key-builtin); i så fald skal parameteren «SecurityKeyProvider=internal» angives.
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 oprettede nøglepar blive gemt i «~\/ .ssh\/id_ecdsa_sk» og kan bruges ligesom andre nøgler.

Den offentlige nøgle (id_ecdsa_sk.pub) skal kopieres til serveren i authorized_keys-filen. På serversiden kontrolleres kun den digitale signatur, mens interaktionen med tokenen sker på klientsiden (det er ikke nødvendigt at installere libsk-libfido2 på serveren, men serveren skal understøtte nøgletypen «ecdsa-sk»). Den genererede private nøgle (id_ecdsa_sk) fungerer i bund og grund som en descriptor for nøglen, der danner den reelle nøgle kun i kombination med den hemmelige sekvens, der opbevares på U2F-tokenens side. Hvis nøgle id_ecdsa_sk falder i hænderne på en angriber, skal den også have adgang til den hardware-baserede token for at kunne autentificere; ellers er den private nøgle, der er gemt i id_ecdsa_sk-filen, ubrugelig.

Desuden kræves der som standard lokalt bekræftelse af brugerens fysiske tilstedeværelse ved udførelse af enhver operation med nøgler (både ved generering og autentificering), for eksempel ved at berøre sensoren på tokenet, hvilket vanskeliggør udførelsen af fjernafgørende angreb på systemer med tilsluttet token. Som et ekstra sikkerhedstræk kan der ved opstart af ssh-keygen også angives en adgangskode for at få adgang til nøglefilen.

I den nye version af OpenSSH er der også offentliggjort en kommende nedgradering af algoritmer, der bruger SHA-1-hashes, i forbindelse med forøgelsen effektiviteten af kollisionsangreb med et givet præfiks (omkostningerne ved at finde en kollisionsvurdering er cirka 45.000 dollars). I en af de kommende udgivelser planlægges det at deaktivere algoritmen for digitale signaturer baseret på den offentlige nøgle "ssh-rsa" som standard, hvilket nævnes i den oprindelige RFC for SSH-protokollen og forbliver udbredt i praksis (for at tjekke anvendelsen af ssh-rsa i dine systemer kan du prøve at tilslutte via ssh med indstillingen "-oHostKeyAlgorithms=-ssh-rsa").

For at lette overgangen til de nye algoritmer i OpenSSH vil der i en af de kommende udgaver blive inkluderet indstillingen UpdateHostKeys som standard, der automatisk vil overføre klienter til mere pålidelige algoritmer. Blandt de anbefalede algoritmer til migration nævnes rsa-sha2-256/512 baseret på RFC8332 RSA SHA-2 (understøttet siden OpenSSH 7.2 og bruges som standard), ssh-ed25519 (understøttet siden OpenSSH 6.5) og ecdsa-sha2-nistp256/384/521 baseret på RFC5656 ECDSA (understøttet siden OpenSSH 5.7).

I version 8.2 af OpenSSH er muligheden for at oprette forbindelse ved hjælp af 'ssh-rsa' stadig tilgængelig, men denne algoritme er fjernet fra listen over CASignatureAlgorithms, som definerer de tilladte algoritmer til digitale signaturer af nye certifikater. Tilsvarende er algoritmen diffie-hellman-group14-sha1 blevet fjernet fra de standardunderstøttede nøgleudvekslingsalgoritmer. Det bemærkes, at brugen af SHA-1 i certifikater indebærer en yderligere risiko, da en angriber har ubegribelig tid til at finde kollisioner for et eksisterende certifikat, mens tiden for angreb på hostnøgler er begrænset af timeout for forbindelse (LoginGraceTime).

Når ssh-keygen nu udføres, bruges som standard algoritmen rsa-sha2-512, som understøttes fra og med OpenSSH 7.2, hvilket kan skabe kompatibilitetsproblemer, når man forsøger at behandle certifikater, der er underskrevet i OpenSSH 8.2, på systemer med ældre versioner af OpenSSH (for at omgå problemet ved signaturdannelse kan man eksplicit angive 'ssh-keygen -t ssh-rsa' eller bruge algoritmerne ecdsa-sha2-nistp256/384/521, som understøttes fra OpenSSH 5.7).

Andre ændringer:

  • I sshd_config er der tilføjet direktivet Include, som gør det muligt at inkludere indhold fra andre filer i den nuværende position i konfigurationsfilen (glob-mønstre kan anvendes ved angivelse af filnavn);
  • I ssh-keygen er der tilføjet en mulighed 'no-touch-required', der deaktiverer behovet for fysisk bekræftelse af adgang til tokenet ved nøjegenerering;
  • I sshd_config er der tilføjet direktivet PubkeyAuthOptions, der kombinerer forskellige muligheder relateret til autentifikation med offentlige nøgler. I øjeblikket understøttes kun flaget 'no-touch-required' for at omgå kontrol af fysisk tilstedeværelse ved autorisation via token. Tilsvarende er muligheden 'no-touch-required' blevet tilføjet til authorized_keys-filen.
  • I ssh-keygen er der tilføjet en mulighed "-O write-attestation=/path", der muliggør skrivning af ekstra attestation certifikater FIDO under nøglegenerering. OpenSSH bruger endnu ikke disse certifikater, men de kan senere bruges til at bekræfte placeringen af nøglen i et betroet hardwarelager;
  • I indstillingerne for ssh og sshd er det nu muligt at angive en prioriteringsindstilling for trafik via direktivet IPQoS; LE DSCP (Lower-Effort Per-Hop Behavior);
  • I ssh, når værdien "AddKeysToAgent=yes" er indstillet, hvis nøglen ikke indeholder et kommentarfelt, bliver den tilføjet til ssh-agent med stien til nøglen som kommentar. I
    ssh-keygen og ssh-agent anvendes der nu også PKCS#11-tags og X.509-subjekt navne som kommentarer til nøglen i stedet for stien til biblioteket;
  • I ssh-keygen er der tilføjet mulighed for eksport af PEM for DSA- og ECDSA-nøgler;
  • Der er tilføjet en ny udførelsesfil ssh-sk-helper, der bruges til at isolere biblioteket til adgang til FIDO/U2F tokens;
  • I ssh og sshd er der tilføjet en kompilationsmulighed "—with-zlib" for at kompilere med støtte for zlib-biblioteket;
  • I henhold til kravene i RFC4253 vises der en advarsel i banneret ved forbindelse om blokering af adgang på grund af overskridelse af MaxStartups grænser. For nemmere diagnose vises der i processen sshd's header, som ses ved brug af ps-værktøjet, antallet af autentificerede forbindelser i øjeblikket og status for MaxStartups grænsen;
  • I ssh og ssh-agent, når programmet til at vise prompten, der er angivet via $SSH_ASKPASS, kaldes, overføres nu også et flag med prompttypen: "confirm" — bekræftelsesdialog (yes/no), "none" — informationsbesked, "blank" — passwordprompt;
  • I ssh-keygen er der tilføjet en ny operation med digitale signaturer "find-principals" til at søge i brugerens allowed-signers-fil, der er knyttet til den angivne digitale signatur;
  • Støtten til isolation af sshd-processen i Linux er forbedret ved hjælp af seccomp-mekanismen: systemopkald IPC er forbudt, og clock_gettime64(), clock_nanosleep_time64 og clock_nanosleep() er tilladt.

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster