Izdanje OpenSSH 8.2 s podrškom za FIDO/U2F dvofaktorske autentifikacijske tokene

Nakon četiri mjeseca razvoja predstavio puštanje OpenSSH 8.2, otvorena klijentska i poslužiteljska implementacija za rad preko SSH 2.0 i SFTP protokola.

Ključno poboljšanje u izdanju OpenSSH 8.2 bila je mogućnost korištenja dvofaktorske provjere autentičnosti pomoću uređaja koji podržavaju protokol U2F, koji je razvio savez FIDO. U2F omogućuje stvaranje jeftinih hardverskih tokena za provjeru fizičke prisutnosti korisnika, interakciju s njima putem USB-a, Bluetooth-a ili NFC-a. Takvi se uređaji promiču kao sredstvo dvofaktorske autentifikacije na web stranicama, već ih podržavaju glavni preglednici i proizvode ih različiti proizvođači, uključujući Yubico, Feitian, Thetis i Kensington.

Za interakciju s uređajima koji potvrđuju prisutnost korisnika, OpenSSH-u su dodani novi tipovi ključeva "ecdsa-sk" i "ed25519-sk", koji koriste algoritme digitalnog potpisa ECDSA i Ed25519, u kombinaciji s hashom SHA-256. Procedure za interakciju s tokenima smještene su u međubiblioteku, koja se učitava na sličan način kao biblioteka za podršku PKCS#11 i predstavlja omotač na vrhu biblioteke libfido2, koji pruža alate za komunikaciju tokenima preko USB-a (podržani su protokoli FIDO U2F/CTAP 1 i FIDO 2.0/CTAP 2). Srednja biblioteka libsk-libfido2 koju su pripremili programeri OpenSSH-a uključeni u jezgru libfido2, kao i HID drajver za OpenBSD.

Za autentifikaciju i generiranje ključa morate navesti parametar “SecurityKeyProvider” u postavkama ili postaviti varijablu okruženja SSH_SK_PROVIDER, koja označava put do vanjske biblioteke libsk-libfido2.so (izvoz SSH_SK_PROVIDER=/path/to/libsk-libfido2. tako). Moguće je izgraditi openssh s ugrađenom podrškom za biblioteku slojeva (--with-security-key-builtin), u ovom slučaju trebate postaviti parametar “SecurityKeyProvider=internal”.
Zatim trebate pokrenuti “ssh-keygen -t ecdsa-sk” ili, ako su ključevi već kreirani i konfigurirani, spojiti se na poslužitelj koristeći “ssh”. Kada pokrenete ssh-keygen, generirani par ključeva bit će spremljen u "~/.ssh/id_ecdsa_sk" i može se koristiti slično drugim ključevima.

Javni ključ (id_ecdsa_sk.pub) treba kopirati na poslužitelj u datoteci authorized_keys. Na strani poslužitelja provjerava se samo digitalni potpis, a interakcija s tokenima se vrši na strani klijenta (ne morate instalirati libsk-libfido2 na poslužitelju, ali poslužitelj mora podržavati tip ključa “ecdsa-sk”) . Generirani privatni ključ (id_ecdsa_sk) u biti je držač ključa, koji tvori pravi ključ samo u kombinaciji s tajnim nizom pohranjenim na strani U2F tokena. Ako ključ id_ecdsa_sk padne u ruke napadača, da bi prošao autentifikaciju morat će također dobiti pristup hardverskom tokenu, bez kojeg je privatni ključ pohranjen u datoteci id_ecdsa_sk beskoristan.

Osim toga, prema zadanim postavkama, prilikom izvođenja bilo kakvih operacija s ključevima (i tijekom generiranja i tijekom autentifikacije), potrebna je lokalna potvrda fizičke prisutnosti korisnika, na primjer, predlaže se dodirivanje senzora na tokenu, što otežava izvršavati udaljene napade na sustave s povezanim tokenom. Kao još jedna linija obrane, lozinka se također može odrediti tijekom faze pokretanja ssh-keygena za pristup ključnoj datoteci.

Nova verzija OpenSSH također je najavila nadolazeću zastaru algoritama koji koriste SHA-1 hashove zbog promocija učinkovitost napada sudara s danim prefiksom (trošak odabira sudara procjenjuje se na približno 45 tisuća dolara). U jednom od nadolazećih izdanja planiraju prema zadanim postavkama onemogućiti mogućnost korištenja algoritma digitalnog potpisa javnog ključa "ssh-rsa", koji se spominje u izvornom RFC-u za SSH protokol i ostaje široko rasprostranjen u praksi (za testiranje upotrebe ssh-rsa u vašim sustavima, možete se pokušati povezati putem ssh s opcijom “-oHostKeyAlgorithms=-ssh-rsa”).

Kako bi se olakšao prijelaz na nove algoritme u OpenSSH, u budućem izdanju postavka UpdateHostKeys bit će omogućena prema zadanim postavkama, što će automatski migrirati klijente na pouzdanije algoritme. Preporučeni algoritmi za migraciju uključuju rsa-sha2-256/512 temeljen na RFC8332 RSA SHA-2 (podržan od OpenSSH 7.2 i koristi se prema zadanim postavkama), ssh-ed25519 (podržan od OpenSSH 6.5) i ecdsa-sha2-nistp256/384/521 temeljen na RFC5656 ECDSA (podržano od OpenSSH 5.7).

U OpenSSH 8.2 još uvijek je dostupna mogućnost povezivanja pomoću "ssh-rsa", ali je ovaj algoritam uklonjen s popisa CASignatureAlgorithms, koji definira algoritme dopuštene za digitalno potpisivanje novih certifikata. Slično tome, algoritam diffie-hellman-group14-sha1 uklonjen je iz podržanih zadanih algoritama za razmjenu ključeva. Napominje se da je korištenje SHA-1 u certifikatima povezano s dodatnim rizikom, budući da napadač ima neograničeno vrijeme za traženje kolizije za postojeći certifikat, dok je vrijeme napada na ključeve hosta ograničeno timeoutom veze (LoginGraceTime ).

Pokretanje ssh-keygena sada je prema zadanim postavkama algoritam rsa-sha2-512, koji je podržan od OpenSSH 7.2, što može stvoriti probleme s kompatibilnošću prilikom pokušaja obrade certifikata potpisanih u OpenSSH 8.2 na sustavima koji pokreću starija izdanja OpenSSH (da biste zaobišli problem kada generiranje potpisa, možete eksplicitno navesti "ssh-keygen -t ssh-rsa" ili koristiti algoritme ecdsa-sha2-nistp256/384/521, podržane od OpenSSH 5.7).

Ostale promjene:

  • Direktiva Include dodana je u sshd_config, koja vam omogućuje uključivanje sadržaja drugih datoteka na trenutnoj poziciji konfiguracijske datoteke (glob maske se mogu koristiti kada se navodi naziv datoteke);
  • Opcija “no-touch-required” dodana je u ssh-keygen, koja onemogućuje potrebu za fizičkim potvrđivanjem pristupa tokenu prilikom generiranja ključa;
  • Direktiva PubkeyAuthOptions dodana je u sshd_config, koja kombinira različite opcije vezane uz autentifikaciju s javnim ključem. Trenutačno je podržana samo oznaka "bez dodira" za preskakanje provjera fizičke prisutnosti za autentifikaciju tokenom. Analogno tome, opcija “no-touch-required” dodana je datoteci authorized_keys;
  • Dodana je opcija "-O write-attestation=/path" u ssh-keygen kako bi se omogućilo pisanje dodatnih FIDO atestacijskih certifikata prilikom generiranja ključeva. OpenSSH još ne koristi ove certifikate, ali kasnije se mogu koristiti za provjeru je li ključ smješten u pouzdanoj trgovini hardvera;
  • U postavkama ssh i sshd sada je moguće postaviti način prioriteta prometa putem IPQoS direktive LE DSCP (Ponašanje manjeg napora po skoku);
  • U ssh-u, prilikom postavljanja vrijednosti “AddKeysToAgent=yes”, ako ključ ne sadrži polje komentara, bit će dodan ssh-agentu navodeći put do ključa kao komentar. U
    ssh-keygen i ssh-agent također sada koriste PKCS#11 oznake i X.509 naziv subjekta umjesto staze knjižnice kao komentare u ključu;

  • Dodana mogućnost izvoza PEM-a za DSA i ECDSA ključeve u ssh-keygen;
  • Dodana je nova izvršna datoteka, ssh-sk-helper, koja se koristi za izolaciju biblioteke pristupa tokenima FIDO/U2F;
  • Dodana opcija izgradnje “--with-zlib” za ssh i sshd za kompilaciju s podrškom za zlib knjižnicu;
  • U skladu sa zahtjevom RFC4253, u banneru koji se prikazuje tijekom povezivanja prikazano je upozorenje o blokiranju pristupa zbog prekoračenja ograničenja MaxStartups. Kako bi se pojednostavila dijagnostika, zaglavlje sshd procesa, vidljivo prilikom korištenja uslužnog programa ps, sada prikazuje broj trenutno provjerenih veza i status ograničenja MaxStartups;
  • U ssh i ssh-agentu, prilikom pozivanja programa za prikaz pozivnice na ekranu, specificirane preko $SSH_ASKPASS, sada se dodatno prenosi zastavica s tipom pozivnice: “potvrdi” - dijalog za potvrdu (da/ne), “ništa ” - informativna poruka, “prazno” — zahtjev za lozinku;
  • Dodana je nova operacija digitalnih potpisa "find-principals" u ssh-keygen za pretraživanje datoteke dozvoljenih potpisnika za korisnika koji je povezan s određenim digitalnim potpisom;
  • Poboljšana podrška za izolaciju sshd procesa na Linuxu pomoću mehanizma seccomp: onemogućavanje poziva IPC sustava, dopuštanje clock_gettime64(), clock_nanosleep_time64 i clock_nanosleep().

Izvor: opennet.ru

Dodajte komentar