Izdaja OpenSSH 8.2 s podporo za žetone dvofaktorske avtentikacije FIDO/U2F

Po štirih mesecih razvoja predstavljeno sprostitev OpenSSH 8.2, odprta odjemalska in strežniška izvedba za delo prek protokolov SSH 2.0 in SFTP.

Ključna izboljšava v izdaji OpenSSH 8.2 je bila možnost uporabe dvofaktorske avtentikacije z uporabo naprav, ki podpirajo protokol U2F, ki ga je razvilo zavezništvo FIDO. U2F omogoča ustvarjanje poceni žetonov strojne opreme za preverjanje fizične prisotnosti uporabnika, interakcijo z njim prek USB, Bluetooth ali NFC. Takšne naprave se promovirajo kot sredstvo dvofaktorske avtentikacije na spletnih mestih, podpirajo jih že glavni brskalniki in jih proizvajajo različni proizvajalci, vključno z Yubico, Feitian, Thetis in Kensington.

Za interakcijo z napravami, ki potrjujejo prisotnost uporabnika, sta bili OpenSSH dodani novi tipi ključev “ecdsa-sk” in “ed25519-sk”, ki uporabljata algoritma digitalnega podpisa ECDSA in Ed25519 v kombinaciji z zgoščevanjem SHA-256. Postopki za interakcijo z žetoni so postavljeni v vmesno knjižnico, ki je naložena na podoben način kot knjižnica za podporo PKCS#11 in je ovoj na vrhu knjižnice libfido2, ki ponuja orodja za komunikacijo z žetoni preko USB (podprta sta protokola FIDO U2F/CTAP 1 in FIDO 2.0/CTAP 2). Vmesna knjižnica libsk-libfido2, ki so jo pripravili razvijalci OpenSSH vključena v jedro libfido2, kot tudi gonilnik HID za OpenBSD.

Za avtentikacijo in generiranje ključa morate v nastavitvah določiti parameter “SecurityKeyProvider” ali nastaviti spremenljivko okolja SSH_SK_PROVIDER, ki označuje pot do zunanje knjižnice libsk-libfido2.so (izvoz SSH_SK_PROVIDER=/path/to/libsk-libfido2. torej). Možno je zgraditi openssh z vgrajeno podporo za knjižnico plasti (--with-security-key-builtin), v tem primeru morate nastaviti parameter »SecurityKeyProvider=internal«.
Nato morate zagnati »ssh-keygen -t ecdsa-sk« ali, če so ključi že ustvarjeni in konfigurirani, se povezati s strežnikom s pomočjo »ssh«. Ko zaženete ssh-keygen, bo ustvarjeni par ključev shranjen v »~/.ssh/id_ecdsa_sk« in ga je mogoče uporabiti podobno kot druge ključe.

Javni ključ (id_ecdsa_sk.pub) je treba kopirati na strežnik v datoteko authorized_keys. Na strani strežnika se preverja samo digitalni podpis, na strani odjemalca pa se izvaja interakcija z žetoni (na strežnik vam ni treba namestiti libsk-libfido2, vendar mora strežnik podpirati tip ključa “ecdsa-sk”) . Ustvarjeni zasebni ključ (id_ecdsa_sk) je v bistvu ročaj ključa, ki tvori pravi ključ samo v kombinaciji s tajnim zaporedjem, shranjenim na strani žetona U2F. Če ključ id_ecdsa_sk pade v roke napadalcu, bo moral za avtentikacijo pridobiti tudi dostop do strojnega žetona, brez katerega je zasebni ključ, shranjen v datoteki id_ecdsa_sk, neuporaben.

Poleg tega je privzeto pri izvajanju kakršnih koli operacij s ključi (tako med ustvarjanjem kot med preverjanjem pristnosti) potrebna lokalna potrditev fizične prisotnosti uporabnika, na primer predlaga se dotik senzorja na žetonu, kar otežuje izvaja oddaljene napade na sisteme s povezanim žetonom. Kot drugo obrambno linijo lahko med zagonsko fazo ssh-keygen določite tudi geslo za dostop do datoteke ključev.

Nova različica OpenSSH je napovedala tudi prihajajočo opustitev algoritmov, ki uporabljajo zgoščene vrednosti SHA-1 zaradi napredovanje učinkovitost napadov trka z dano predpono (strošek izbire trka je ocenjen na približno 45 tisoč dolarjev). V eni od prihajajočih izdaj nameravajo privzeto onemogočiti možnost uporabe algoritma digitalnega podpisa javnega ključa »ssh-rsa«, ki je omenjen v izvirnem RFC za protokol SSH in ostaja razširjen v praksi (za testiranje uporabe ssh-rsa v vaših sistemih, se lahko poskusite povezati prek ssh z možnostjo »-oHostKeyAlgorithms=-ssh-rsa«).

Za gladek prehod na nove algoritme v OpenSSH bo v prihodnji izdaji privzeto omogočena nastavitev UpdateHostKeys, ki bo samodejno preselila odjemalce na bolj zanesljive algoritme. Priporočeni algoritmi za selitev vključujejo rsa-sha2-256/512, ki temelji na RFC8332 RSA SHA-2 (podprt od OpenSSH 7.2 in se uporablja privzeto), ssh-ed25519 (podprt od OpenSSH 6.5) in ecdsa-sha2-nistp256/384/521. na RFC5656 ECDSA (podprto od OpenSSH 5.7).

V OpenSSH 8.2 je še vedno na voljo možnost povezovanja s pomočjo »ssh-rsa«, vendar je bil ta algoritem odstranjen s seznama CASignatureAlgorithms, ki določa algoritme, dovoljene za digitalno podpisovanje novih potrdil. Podobno je bil algoritem diffie-hellman-group14-sha1 odstranjen iz podprtih privzetih algoritmov za izmenjavo ključev. Opozoriti je treba, da je uporaba SHA-1 v potrdilih povezana z dodatnim tveganjem, saj ima napadalec neomejen čas za iskanje kolizije za obstoječe potrdilo, medtem ko je čas napada na gostiteljske ključe omejen s časovno omejitvijo povezave (LoginGraceTime). ).

Zagon ssh-keygen je zdaj privzeto nastavljen na algoritem rsa-sha2-512, ki je podprt od OpenSSH 7.2 naprej, kar lahko povzroči težave z združljivostjo pri poskusu obdelave potrdil, podpisanih v OpenSSH 8.2, v sistemih, ki izvajajo starejše izdaje OpenSSH (za rešitev težave, ko Kdaj pri ustvarjanju podpisa lahko izrecno podate »ssh-keygen -t ssh-rsa« ali uporabite algoritme ecdsa-sha2-nistp256/384/521, ki so podprti od OpenSSH 5.7).

Druge spremembe:

  • V sshd_config je bila dodana direktiva Include, ki vam omogoča, da vsebino drugih datotek vključite na trenutni položaj konfiguracijske datoteke (glob maske lahko uporabite pri podajanju imena datoteke);
  • V ssh-keygen je bila dodana možnost »no-touch-required«, ki onemogoči potrebo po fizični potrditvi dostopa do žetona pri generiranju ključa;
  • V sshd_config je bila dodana direktiva PubkeyAuthOptions, ki združuje različne možnosti, povezane z avtentikacijo javnega ključa. Trenutno je podprta le zastavica »brez dotika«, da preskoči preverjanje fizične prisotnosti za preverjanje pristnosti žetona. Po analogiji je bila v datoteko authorized_keys dodana možnost »no-touch-required«;
  • Dodana možnost »-O write-attestation=/path« v ssh-keygen, da se omogoči pisanje dodatnih potrdil potrdil FIDO pri generiranju ključev. OpenSSH še ne uporablja teh potrdil, vendar jih je mogoče pozneje uporabiti za preverjanje, ali je ključ nameščen v zaupanja vredni trgovini strojne opreme;
  • V nastavitvah ssh in sshd je zdaj mogoče nastaviti način prioritete prometa prek direktive IPQoS LE DSCP (Vedenje manjšega napora na skok);
  • V ssh, ko nastavite vrednost »AddKeysToAgent=yes«, če ključ ne vsebuje polja za komentar, bo dodan v ssh-agent in kot komentar navede pot do ključa. IN
    ssh-keygen in ssh-agent zdaj tudi uporabljata oznake PKCS#11 in ime predmeta X.509 namesto poti knjižnice kot komentarje v ključu;

  • Dodana možnost izvoza PEM za ključe DSA in ECDSA v ssh-keygen;
  • Dodana nova izvršljiva datoteka, ssh-sk-helper, ki se uporablja za izolacijo knjižnice za dostop do žetonov FIDO/U2F;
  • Dodana možnost gradnje »--with-zlib« za ssh in sshd za prevajanje s podporo za knjižnico zlib;
  • V skladu z zahtevo RFC4253 je opozorilo o blokiranju dostopa zaradi preseganja omejitev MaxStartups na voljo v pasici, prikazani med povezavo. Za poenostavitev diagnostike glava procesa sshd, vidna pri uporabi pripomočka ps, zdaj prikazuje število trenutno preverjenih povezav in status omejitve MaxStartups;
  • V ssh in ssh-agentu se ob klicu programa za prikaz povabila na zaslonu, določenem prek $SSH_ASKPASS, zdaj dodatno posreduje zastavica z vrsto povabila: “potrdi” - potrditveno pogovorno okno (da/ne), “brez ” - informativno sporočilo, “prazno” — zahteva za geslo;
  • Dodana nova operacija digitalnih podpisov "find-principals" v ssh-keygen za iskanje v datoteki dovoljenih podpisnikov za uporabnika, povezanega z določenim digitalnim podpisom;
  • Izboljšana podpora za izolacijo procesa sshd v Linuxu z uporabo mehanizma seccomp: onemogočanje sistemskih klicev IPC, omogočanje clock_gettime64(), clock_nanosleep_time64 in clock_nanosleep().

Vir: opennet.ru

Dodaj komentar