Vydanie OpenSSH 8.2 s podporou dvojfaktorových autentifikačných tokenov FIDO/U2F

Po štyroch mesiacoch vývoja predložené uvoľnenie OpenSSH 8.2, otvorená implementácia klienta a servera pre prácu cez protokoly SSH 2.0 a SFTP.

Kľúčovým vylepšením vo vydaní OpenSSH 8.2 bola možnosť používať dvojfaktorovú autentifikáciu pomocou zariadení, ktoré podporujú protokol U2F, vyvinuté alianciou FIDO. U2F umožňuje vytváranie lacných hardvérových tokenov na overenie fyzickej prítomnosti používateľa, interakciu s ním cez USB, Bluetooth alebo NFC. Takéto zariadenia sú propagované ako prostriedok dvojfaktorovej autentifikácie na webových stránkach, sú už podporované veľkými prehliadačmi a vyrábajú ich rôzni výrobcovia vrátane Yubico, Feitian, Thetis a Kensington.

Na interakciu so zariadeniami, ktoré potvrdzujú prítomnosť používateľa, boli do OpenSSH pridané nové typy kľúčov „ecdsa-sk“ a „ed25519-sk“, ktoré používajú algoritmy digitálneho podpisu ECDSA a Ed25519 v kombinácii s hashom SHA-256. Procedúry na interakciu s tokenmi sú umiestnené v prechodnej knižnici, ktorá sa načítava podobným spôsobom ako knižnica pre podporu PKCS#11 a je obalom na vrchu knižnice. libfido2, ktorý poskytuje nástroje na komunikáciu s tokenmi cez USB (podporované sú protokoly FIDO U2F/CTAP 1 a FIDO 2.0/CTAP 2). Stredná knižnica libsk-libfido2 pripravená vývojármi OpenSSH v cene do jadra libfido2, ako aj HID vodič pre OpenBSD.

Ak chcete autentifikovať a vygenerovať kľúč, musíte v nastaveniach zadať parameter „SecurityKeyProvider“ alebo nastaviť premennú prostredia SSH_SK_PROVIDER označujúcu cestu k externej knižnici libsk-libfido2.so (exportovať SSH_SK_PROVIDER=/cesta/k/libsk-libfido2. tak). Je možné zostaviť openssh so vstavanou podporou pre knižnicu vrstiev (--with-security-key-builtin), v tomto prípade musíte nastaviť parameter „SecurityKeyProvider=internal“.
Ďalej musíte spustiť „ssh-keygen -t ecdsa-sk“ alebo, ak už boli kľúče vytvorené a nakonfigurované, pripojiť sa k serveru pomocou „ssh“. Keď spustíte ssh-keygen, vygenerovaný pár kľúčov sa uloží do „~/.ssh/id_ecdsa_sk“ a dá sa použiť podobne ako ostatné kľúče.

Verejný kľúč (id_ecdsa_sk.pub) by mal byť skopírovaný na server v súbore author_keys. Na strane servera sa overuje iba digitálny podpis a interakcia s tokenmi sa vykonáva na strane klienta (nemusíte inštalovať libsk-libfido2 na server, ale server musí podporovať typ kľúča „ecdsa-sk“) . Vygenerovaný súkromný kľúč (id_ecdsa_sk) je v podstate kľúčový kľúč, ktorý tvorí skutočný kľúč iba v kombinácii s tajnou sekvenciou uloženou na strane tokenu U2F. Ak sa kľúč id_ecdsa_sk dostane do rúk útočníka, na odovzdanie autentifikácie bude potrebovať aj prístup k hardvérovému tokenu, bez ktorého je súkromný kľúč uložený v súbore id_ecdsa_sk nepoužiteľný.

Okrem toho sa štandardne pri vykonávaní akýchkoľvek operácií s kľúčmi (pri generovaní aj pri autentifikácii) vyžaduje lokálne potvrdenie fyzickej prítomnosti používateľa, napríklad sa navrhuje dotknúť sa senzora na tokene, čo sťažuje vykonávať vzdialené útoky na systémy s pripojeným tokenom. Ako ďalšiu obrannú líniu je možné zadať heslo aj počas spúšťacej fázy ssh-keygen na prístup k súboru kľúčov.

Nová verzia OpenSSH tiež oznámila nadchádzajúce ukončenie podpory algoritmov používajúcich hash SHA-1 z dôvodu povýšenie efektívnosť kolíznych útokov s daným prefixom (náklady na výber kolízie sa odhadujú na približne 45 tisíc dolárov). V jednom z pripravovaných vydaní plánujú predvolene deaktivovať možnosť používať algoritmus digitálneho podpisu s verejným kľúčom „ssh-rsa“, ktorý je uvedený v pôvodnom RFC pre protokol SSH a zostáva v praxi rozšírený (na testovanie použitia ssh-rsa vo vašich systémoch, môžete sa pokúsiť pripojiť cez ssh s voľbou „-oHostKeyAlgorithms=-ssh-rsa“).

Na hladký prechod na nové algoritmy v OpenSSH bude v budúcom vydaní štandardne povolené nastavenie UpdateHostKeys, ktoré automaticky migruje klientov na spoľahlivejšie algoritmy. Odporúčané algoritmy pre migráciu zahŕňajú rsa-sha2-256/512 založené na RFC8332 RSA SHA-2 (podporované od OpenSSH 7.2 a používané štandardne), ssh-ed25519 (podporované od OpenSSH 6.5) a ecdsa-sha2-nistp256/384/521 na RFC5656 ECDSA (podporované od OpenSSH 5.7).

V OpenSSH 8.2 je stále k dispozícii možnosť pripojenia pomocou „ssh-rsa“, ale tento algoritmus bol odstránený zo zoznamu CASignatureAlgorithms, ktorý definuje algoritmy povolené na digitálne podpisovanie nových certifikátov. Podobne bol z predvolených podporovaných algoritmov výmeny kľúčov odstránený algoritmus diffie-hellman-group14-sha1. Je potrebné poznamenať, že použitie SHA-1 v certifikátoch je spojené s dodatočným rizikom, pretože útočník má neobmedzený čas na hľadanie kolízie pre existujúci certifikát, zatiaľ čo čas útoku na hostiteľské kľúče je obmedzený časovým limitom pripojenia (LoginGraceTime ).

Spustenie ssh-keygen je teraz predvolene nastavené na algoritmus rsa-sha2-512, ktorý je podporovaný od OpenSSH 7.2, čo môže spôsobiť problémy s kompatibilitou pri pokuse o spracovanie certifikátov podpísaných v OpenSSH 8.2 na systémoch so staršími vydaniami OpenSSH (aby sa problém vyriešil, keď pri generovaní podpisu môžete explicitne zadať „ssh-keygen -t ssh-rsa“ alebo použiť algoritmy ecdsa-sha2-nistp256/384/521 podporované od OpenSSH 5.7).

Ďalšie zmeny:

  • Do sshd_config bola pridaná direktíva Include, ktorá umožňuje zahrnúť obsah iných súborov na aktuálnu pozíciu konfiguračného súboru (pri zadávaní názvu súboru možno použiť masky glob);
  • Do ssh-keygen bola pridaná možnosť „no-touch-required“, ktorá zakazuje potrebu fyzického potvrdenia prístupu k tokenu pri generovaní kľúča;
  • Do sshd_config bola pridaná direktíva PubkeyAuthOptions, ktorá kombinuje rôzne možnosti súvisiace s autentifikáciou verejným kľúčom. V súčasnosti je podporovaný iba príznak „nevyžaduje sa dotyk“ na preskočenie fyzických kontrol prítomnosti na overenie tokenu. Analogicky bola do súboru autorizované kľúče pridaná možnosť „nevyžaduje sa dotyk“;
  • Do ssh-keygen bola pridaná možnosť „-O write-attestation=/path“, ktorá umožňuje zapisovanie ďalších osvedčení FIDO pri generovaní kľúčov. OpenSSH zatiaľ tieto certifikáty nepoužíva, ale neskôr sa dajú použiť na overenie, či je kľúč umiestnený v dôveryhodnom hardvérovom obchode;
  • V nastaveniach ssh a sshd je teraz možné nastaviť režim priority prevádzky cez direktívu IPQoS LE DSCP (Správanie s nižším úsilím na skok);
  • Ak v ssh pri nastavovaní hodnoty „AddKeysToAgent=yes“ kľúč neobsahuje pole komentára, pridá sa do ssh-agent s uvedením cesty ku kľúču ako komentár. IN
    ssh-keygen a ssh-agent tiež teraz používajú ako komentáre v kľúči označenia PKCS#11 a názov predmetu X.509 namiesto cesty knižnice;

  • Pridaná možnosť exportu PEM pre kľúče DSA a ECDSA do ssh-keygen;
  • Pridaný nový spustiteľný súbor ssh-sk-helper, ktorý sa používa na izoláciu knižnice prístupu k tokenu FIDO/U2F;
  • Pridaná možnosť zostavenia „--with-zlib“ pre ssh a sshd na kompiláciu s podporou knižnice zlib;
  • V súlade s požiadavkou RFC4253 je v banneri zobrazenom počas pripojenia uvedené upozornenie na zablokovanie prístupu z dôvodu prekročenia limitov MaxStartups. Na zjednodušenie diagnostiky hlavička procesu sshd, viditeľná pri použití pomôcky ps, teraz zobrazuje počet aktuálne overených pripojení a stav limitu MaxStartups;
  • V ssh a ssh-agent sa pri volaní programu na zobrazenie pozvánky na obrazovke, špecifikovanej cez $SSH_ASKPASS, teraz dodatočne prenesie príznak s typom pozvania: „potvrdiť“ - potvrdzovací dialóg (áno/nie), „žiadne“ ” - informačná správa, “prázdne” — žiadosť o heslo;
  • Do ssh-keygen bola pridaná nová operácia digitálnych podpisov „find-principals“ na vyhľadanie používateľa spojeného so špecifikovaným digitálnym podpisom v súbore povolených podpisovateľov;
  • Vylepšená podpora izolácie procesov sshd v systéme Linux pomocou mechanizmu seccomp: vypnutie systémových volaní IPC, povolenie clock_gettime64(), clock_nanosleep_time64 a clock_nanosleep().

Zdroj: opennet.ru

Pridať komentár