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

Nakon četiri mjeseca razvoja predstavljen pustiti OpenSSH 8.2, implementacija otvorenog klijenta i servera 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 autentifikacije pomoću uređaja koji podržavaju protokol U2F, razvijen od strane alijanse Fido. U2F omogućava kreiranje jeftinih hardverskih tokena za provjeru fizičkog prisustva korisnika, interakciju s njima putem USB-a, Bluetooth-a ili NFC-a. Takvi uređaji se promoviraju kao sredstvo dvofaktorske autentifikacije na web stranicama, već ih podržavaju glavni pretraživači i proizvode ih različiti proizvođači, uključujući Yubico, Feitian, Thetis i Kensington.

Za interakciju sa uređajima koji potvrđuju prisustvo korisnika, OpenSSH-u su dodani novi tipovi ključeva “ecdsa-sk” i “ed25519-sk”, koji koriste algoritme digitalnog potpisa ECDSA i Ed25519, u kombinaciji sa SHA-256 hešom. Procedure za interakciju sa tokenima su smeštene u međubiblioteku, koja se učitava na sličan način kao biblioteka za podršku PKCS#11 i omotač je na vrhu biblioteke libfido2, koji pruža alate za komunikaciju sa 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 OpenSSH programeri uključeno u jezgro libfido2, kao i HID drajver za OpenBSD.

Da biste potvrdili autentičnost i generirali ključ, morate navesti parametar “SecurityKeyProvider” u postavkama ili postaviti varijablu okruženja SSH_SK_PROVIDER, ukazujući na putanju do vanjske biblioteke libsk-libfido2.so (izvoz SSH_SK_PROVIDER=/path/to/libsk-libfido2. tako). Moguće je izgraditi openssh sa ugrađenom podrškom za biblioteku slojeva (--with-security-key-builtin), u ovom slučaju morate postaviti parametar “SecurityKeyProvider=internal”.
Zatim morate pokrenuti “ssh-keygen -t ecdsa-sk” ili, ako su ključevi već kreirani i konfigurirani, spojiti se na server koristeći “ssh”. Kada pokrenete ssh-keygen, generirani par ključeva će biti sačuvan u “~/.ssh/id_ecdsa_sk” i može se koristiti slično drugim ključevima.

Javni ključ (id_ecdsa_sk.pub) treba kopirati na server u datoteci authorized_keys. Na strani servera se provjerava samo digitalni potpis, a interakcija sa tokenima se obavlja na strani klijenta (ne morate instalirati libsk-libfido2 na server, ali server mora podržavati tip ključa “ecdsa-sk”) . Generirani privatni ključ (id_ecdsa_sk) je u suštini rukohvat ključa, koji formira pravi ključ samo u kombinaciji sa tajnim nizom pohranjenim na strani tokena U2F. Ako ključ id_ecdsa_sk padne u ruke napadača, da bi prošao autentifikaciju, on će također morati 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 tokom generiranja i tijekom autentifikacije), potrebna je lokalna potvrda fizičkog prisustva korisnika, na primjer, predlaže se dodirivanje senzora na tokenu, što otežava izvode daljinske napade na sisteme sa povezanim tokenom. Kao još jedna linija odbrane, lozinka se takođe može navesti tokom faze pokretanja ssh-keygena za pristup ključnoj datoteci.

Nova verzija OpenSSH-a je također najavila nadolazeću zastarjelost algoritama koji koriste SHA-1 hasheve zbog promocija efikasnost napada sudara sa datim prefiksom (trošak odabira kolizije procjenjuje se na približno 45 hiljada dolara). U jednom od narednih izdanja planiraju da po zadanim postavkama onemoguće mogućnost korištenja algoritma za digitalni potpis javnog ključa “ssh-rsa”, koji se spominje u originalnom RFC-u za SSH protokol i ostaje široko rasprostranjen u praksi (za testiranje upotrebe ssh-rsa u vašim sistemima, možete pokušati da se povežete preko ssh sa opcijom “-oHostKeyAlgorithms=-ssh-rsa”).

Da bi se ugladio prelazak na nove algoritme u OpenSSH-u, u budućem izdanju će postavka UpdateHostKeys biti omogućena prema zadanim postavkama, što će automatski migrirati klijente na pouzdanije algoritme. Preporučeni algoritmi za migraciju uključuju rsa-sha2-256/512 baziran na RFC8332 RSA SHA-2 (podržan od OpenSSH 7.2 i koristi se po defaultu), ssh-ed25519 (podržan od OpenSSH 6.5) i ecdsa-sha2-nistp256/384 zasnovan na RFC521 ECDSA (podržano od OpenSSH 5656).

U OpenSSH 8.2, mogućnost povezivanja pomoću “ssh-rsa” je i dalje dostupna, ali ovaj algoritam je uklonjen sa liste CASignatureAlgorithms, koja definiše algoritme dozvoljene za digitalno potpisivanje novih sertifikata. Slično, algoritam diffie-hellman-group14-sha1 je uklonjen 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 da traži koliziju za postojeći certifikat, dok je vrijeme napada na ključeve hosta ograničeno timeoutom veze (LoginGraceTime ).

Pokretanje ssh-keygena sada podrazumevano podrazumeva algoritam rsa-sha2-512, koji je podržan od OpenSSH 7.2, što može stvoriti probleme sa kompatibilnošću kada se pokušavaju obraditi sertifikati potpisani u OpenSSH 8.2 na sistemima koji pokreću starija OpenSSH izdanja (da bi se rešio problem kada Kada generišući potpis, 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 je dodana u sshd_config, koja vam omogućava da uključite sadržaj drugih datoteka na trenutnu poziciju konfiguracijske datoteke (glob maske se mogu koristiti kada se specificira ime datoteke);
  • Opcija “no-touch-required” je dodana u ssh-keygen, što onemogućava potrebu da se fizički potvrdi pristup tokenu prilikom generisanja ključa;
  • PubkeyAuthOptions direktiva je dodana u sshd_config, koja kombinuje različite opcije vezane za autentifikaciju javnog ključa. Trenutno je podržana samo oznaka "zahtijevano bez dodira" za preskakanje fizičkih provjera prisutnosti za autentifikaciju tokenom. Po analogiji, opcija “no-touch-required” je dodana u datoteku authorized_keys;
  • Dodata opcija "-O write-attestation=/path" u ssh-keygen kako bi se omogućilo pisanje dodatnih FIDO certifikata prilikom generiranja ključeva. OpenSSH još ne koristi ove certifikate, ali se kasnije mogu koristiti za provjeru da je ključ stavljen u pouzdano skladište hardvera;
  • U ssh i sshd postavkama, 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 za komentar, on će biti dodan u ssh-agent koji označava putanju do ključa kao komentar. IN
    ssh-keygen i ssh-agent također sada koriste PKCS#11 oznake i X.509 ime subjekta umjesto putanje biblioteke kao komentare u ključu;

  • Dodata mogućnost izvoza PEM-a za DSA i ECDSA ključeve u ssh-keygen;
  • Dodan novi izvršni, ssh-sk-helper, koji se koristi za izolaciju biblioteke pristupa FIDO/U2F tokenima;
  • Dodata “--with-zlib” opcija izgradnje za ssh i sshd za kompilaciju sa podrškom za zlib biblioteku;
  • U skladu sa zahtjevom RFC4253, na baneru koji se prikazuje tokom povezivanja nalazi se upozorenje o blokiranju pristupa zbog prekoračenja MaxStartups ograničenja. Da bi se pojednostavila dijagnostika, zaglavlje sshd procesa, vidljivo kada se koristi ps uslužni program, sada prikazuje broj trenutno provjerenih veza i status ograničenja MaxStartups;
  • U ssh i ssh-agentu, prilikom pozivanja programa da prikaže pozivnicu na ekranu, specificiranu preko $SSH_ASKPASS, sada se dodatno prenosi oznaka sa vrstom pozivnice: “confirm” - dijalog za potvrdu (da/ne), “none ” - informativna poruka, “prazno” — zahtjev za lozinkom;
  • Dodata nova operacija digitalnih potpisa "pronađi principal" u ssh-keygen za pretraživanje datoteke dozvoljenih potpisnika za korisnika povezanog sa navedenim digitalnim potpisom;
  • Poboljšana podrška za izolaciju sshd procesa na Linuxu pomoću mehanizma seccomp: onemogućavanje IPC sistemskih poziva, omogućavanje clock_gettime64(), clock_nanosleep_time64 i clock_nanosleep().

izvor: opennet.ru

Dodajte komentar