Lëshimi i OpenSSH 8.2 me mbështetje për argumentet e vërtetimit me dy faktorë FIDO/U2F

Pas katër muajsh zhvillimi prezantuar lirimin OpenSSH 8.2, një implementim i hapur i klientit dhe serverit për të punuar nëpërmjet protokolleve SSH 2.0 dhe SFTP.

Një përmirësim kryesor në lëshimin e OpenSSH 8.2 ishte aftësia për të përdorur vërtetimin me dy faktorë duke përdorur pajisje që mbështesin protokollin U2F, zhvilluar nga aleanca Fido. U2F lejon krijimin e kodeve harduerike me kosto të ulët për të verifikuar praninë fizike të përdoruesit, duke ndërvepruar me ta nëpërmjet USB, Bluetooth ose NFC. Pajisjet e tilla promovohen si një mjet i vërtetimit me dy faktorë në faqet e internetit, tashmë mbështeten nga shfletuesit kryesorë dhe prodhohen nga prodhues të ndryshëm, duke përfshirë Yubico, Feitian, Thetis dhe Kensington.

Për të bashkëvepruar me pajisjet që konfirmojnë praninë e përdoruesit, në OpenSSH janë shtuar lloje të reja çelësash "ecdsa-sk" dhe "ed25519-sk", të cilat përdorin algoritmet e nënshkrimit dixhital ECDSA dhe Ed25519, të kombinuara me hash SHA-256. Procedurat për bashkëveprimin me token vendosen në një bibliotekë të ndërmjetme, e cila ngarkohet në mënyrë të ngjashme me bibliotekën për mbështetjen e PKCS#11 dhe është një mbështjellës në krye të bibliotekës libfido2, i cili ofron mjete për komunikimin me tokenat përmes USB (protokollet FIDO U2F/CTAP 1 dhe FIDO 2.0/CTAP 2 mbështeten). Biblioteka e ndërmjetme libsk-libfido2 e përgatitur nga zhvilluesit e OpenSSH të përfshira në thelbin libfido2, si dhe Shoferi HID për OpenBSD.

Për të vërtetuar dhe gjeneruar një çelës, duhet të specifikoni parametrin "SecurityKeyProvider" në cilësimet ose të vendosni ndryshoren e mjedisit SSH_SK_PROVIDER, duke treguar rrugën drejt bibliotekës së jashtme libsk-libfido2.so (eksporto SSH_SK_PROVIDER=/path/to/libsk-libfido2. kështu që). Është e mundur të ndërtohet openssh me mbështetje të integruar për bibliotekën e shtresave (--with-security-key-builtin), në këtë rast ju duhet të vendosni parametrin “SecurityKeyProvider=internal”.
Më pas duhet të ekzekutoni "ssh-keygen -t ecdsa-sk" ose, nëse çelësat janë krijuar dhe konfiguruar tashmë, lidheni me serverin duke përdorur "ssh". Kur ekzekutoni ssh-keygen, çifti i çelësave të krijuar do të ruhet në "~/.ssh/id_ecdsa_sk" dhe mund të përdoret në mënyrë të ngjashme me çelësat e tjerë.

Çelësi publik (id_ecdsa_sk.pub) duhet të kopjohet në server në skedarin autorized_keys. Në anën e serverit, verifikohet vetëm nënshkrimi dixhital dhe ndërveprimi me token kryhet në anën e klientit (nuk keni nevojë të instaloni libsk-libfido2 në server, por serveri duhet të mbështesë llojin e çelësit "ecdsa-sk") . Çelësi privat i gjeneruar (id_ecdsa_sk) është në thelb një dorezë çelësi, duke formuar një çelës të vërtetë vetëm në kombinim me sekuencën sekrete të ruajtur në anën e shenjës U2F. Nëse çelësi id_ecdsa_sk bie në duart e një sulmuesi, për të kaluar vërtetimin, atij do t'i duhet gjithashtu të ketë akses në tokenin e harduerit, pa të cilin çelësi privat i ruajtur në skedarin id_ecdsa_sk është i padobishëm.

Përveç kësaj, si parazgjedhje, kur kryeni ndonjë operacion me çelësat (si gjatë gjenerimit ashtu edhe gjatë vërtetimit), kërkohet konfirmimi lokal i pranisë fizike të përdoruesit, për shembull, propozohet të prekni sensorin në shenjë, gjë që e bën të vështirë kryejnë sulme në distancë në sisteme me një shenjë të lidhur. Si një linjë tjetër mbrojtjeje, një fjalëkalim mund të specifikohet gjithashtu gjatë fazës së fillimit të ssh-keygen për të hyrë në skedarin e çelësit.

Versioni i ri i OpenSSH njoftoi gjithashtu zhvlerësimin e ardhshëm të algoritmeve që përdorin hash SHA-1 për shkak të promovimin efektiviteti i sulmeve të përplasjes me një prefiks të caktuar (kostoja e zgjedhjes së një përplasjeje vlerësohet në afërsisht 45 mijë dollarë). Në një nga publikimet e ardhshme, ata planifikojnë të çaktivizojnë si parazgjedhje aftësinë për të përdorur algoritmin e nënshkrimit të çelësit publik "ssh-rsa", i cili përmendet në RFC origjinale për protokollin SSH dhe mbetet i përhapur në praktikë (për të testuar përdorimin të ssh-rsa në sistemet tuaja, mund të provoni të lidheni nëpërmjet ssh me opsionin “-oHostKeyAlgorithms=-ssh-rsa”).

Për të qetësuar kalimin në algoritme të reja në OpenSSH, në një version të ardhshëm do të aktivizohet si parazgjedhje cilësimi UpdateHostKeys, i cili automatikisht do të migrojë klientët në algoritme më të besueshme. Algoritmet e rekomanduara për migrim përfshijnë rsa-sha2-256/512 bazuar në RFC8332 RSA SHA-2 (mbështetur që nga OpenSSH 7.2 dhe përdoret si parazgjedhje), ssh-ed25519 (mbështetur që nga OpenSSH 6.5) dhe ecdsa-sha2-nistp256/384 bazuar në RFC521 ECDSA (mbështetur që nga OpenSSH 5656).

Në OpenSSH 8.2, aftësia për t'u lidhur duke përdorur "ssh-rsa" është ende e disponueshme, por ky algoritëm është hequr nga lista CASignatureAlgorithms, e cila përcakton algoritmet e lejuara për nënshkrimin dixhital të certifikatave të reja. Në mënyrë të ngjashme, algoritmi diffie-hellman-group14-sha1 është hequr nga algoritmet e paracaktuar të shkëmbimit të çelësave të mbështetur. Vihet re se përdorimi i SHA-1 në certifikata shoqërohet me rrezik shtesë, pasi sulmuesi ka kohë të pakufizuar për të kërkuar një përplasje për një certifikatë ekzistuese, ndërsa koha e sulmit në çelësat pritës është e kufizuar nga koha e lidhjes (LoginGraceTime ).

Ekzekutimi i ssh-keygen tani është i paracaktuar me algoritmin rsa-sha2-512, i cili mbështetet që nga OpenSSH 7.2, i cili mund të krijojë probleme të përputhshmërisë kur përpiqeni të përpunoni certifikatat e nënshkruara në OpenSSH 8.2 në sistemet që ekzekutojnë versione më të vjetra OpenSSH (për të zgjidhur problemin kur Kur duke gjeneruar një nënshkrim, mund të specifikoni në mënyrë eksplicite "ssh-keygen -t ssh-rsa" ose të përdorni algoritmet ecdsa-sha2-nistp256/384/521, të mbështetur që nga OpenSSH 5.7).

Ndryshime të tjera:

  • Një direktivë Include është shtuar në sshd_config, e cila ju lejon të përfshini përmbajtjen e skedarëve të tjerë në pozicionin aktual të skedarit të konfigurimit (maskat glob mund të përdoren kur specifikoni emrin e skedarit);
  • Opsioni "pa prekje nuk kërkohet" është shtuar në ssh-keygen, i cili çaktivizon nevojën për të konfirmuar fizikisht hyrjen në token gjatë gjenerimit të çelësit;
  • Një direktivë PubkeyAuthOptions është shtuar në sshd_config, e cila kombinon opsione të ndryshme që lidhen me vërtetimin e çelësit publik. Aktualisht, vetëm flamuri "nuk kërkohet prekje" mbështetet për të kapërcyer kontrollet e pranisë fizike për vërtetimin e tokenit. Për analogji, opsioni "nuk kërkohet prekje" është shtuar në skedarin e autorizuar_çelësat;
  • U shtua opsioni "-O write-attestation=/path" në ssh-keygen për të lejuar shkrimin e certifikatave shtesë të vërtetimit FIDO gjatë gjenerimit të çelësave. OpenSSH nuk i përdor ende këto certifikata, por ato mund të përdoren më vonë për të verifikuar që çelësi është vendosur në një dyqan harduerësh të besuar;
  • Në cilësimet ssh dhe sshd, tani është e mundur të vendosni mënyrën e prioritizimit të trafikut nëpërmjet direktivës IPQoS LE DSCP (Sjellja me përpjekje të ulëta për hop);
  • Në ssh, kur vendosni vlerën "AddKeysToAgent=po", nëse çelësi nuk përmban një fushë komenti, ai do t'i shtohet ssh-agent duke treguar rrugën drejt çelësit si koment. NË
    ssh-keygen dhe ssh-agent gjithashtu përdorin tani etiketat PKCS#11 dhe emrin e subjektit X.509 në vend të shtegut të bibliotekës si komente në çelës;

  • U shtua aftësia për të eksportuar PEM për çelësat DSA dhe ECDSA në ssh-keygen;
  • U shtua një ekzekutues i ri, ssh-sk-helper, i përdorur për të izoluar bibliotekën e aksesit të tokenit FIDO/U2F;
  • U shtua opsioni i ndërtimit "--with-zlib" në ssh dhe sshd për përpilim me mbështetjen e bibliotekës zlib;
  • Në përputhje me kërkesat e RFC4253, një paralajmërim për bllokimin e aksesit për shkak të tejkalimit të kufijve të MaxStartups jepet në bannerin e shfaqur gjatë lidhjes. Për të thjeshtuar diagnostikimin, titulli i procesit sshd, i dukshëm kur përdoret mjeti ps, tani shfaq numrin e lidhjeve të vërtetuara aktualisht dhe statusin e kufirit MaxStartups;
  • Në ssh dhe ssh-agent, kur thërrisni një program për të shfaqur një ftesë në ekran, të specifikuar përmes $SSH_ASKPASS, një flamur me llojin e ftesës tani transmetohet shtesë: "konfirmo" - dialog konfirmimi (po/jo), "asnjë ” - mesazh informues, “bosh” — kërkesë për fjalëkalim;
  • U shtua një operacion i ri i nënshkrimeve dixhitale "find-principals" në ssh-keygen për të kërkuar skedarin e nënshkruesve të lejuar për përdoruesin e lidhur me një nënshkrim dixhital të specifikuar;
  • Mbështetje e përmirësuar për izolimin e procesit sshd në Linux duke përdorur mekanizmin seccomp: çaktivizimi i thirrjeve të sistemit IPC, lejimi i clock_gettime64(), clock_nanosleep_time64 dhe clock_nanosleep().

Burimi: opennet.ru

Shto një koment