Vydání OpenSSH 8.2 s podporou dvoufaktorové autentizace pomocí tokenů FIDO/U2F

Po čtyřech měsících vývoje byl představen vydání OpenSSH 8.2, otevřené implementaci klienta a serveru pro práci s protokoly SSH 2.0 a SFTP.

Hlavním vylepšením v edici OpenSSH 8.2 byla možnost využití dvoufaktorové autentizace pomocí zařízení, která podporují protokol U2F, vyvíjeného aliancí FIDO. U2F umožňuje vytvářet cenově dostupné hardwarové tokeny pro potvrzení fyzické přítomnosti uživatele, jejichž interakce probíhá přes USB, Bluetooth nebo NFC. Taková zařízení jsou propagována jako prostředek pro dvoufaktorovou autentizaci na webových stránkách, již je podporují hlavní prohlížeče a vyrábí je různí výrobci, včetně Yubico, Feitian, Thetis a Kensington.

Pro interakci s zařízeními, která potvrzují přítomnost uživatele, byly do OpenSSH přidány nové typy klíčů „ecdsa-sk“ a „ed25519-sk“, které používají algoritmy digitálního podpisu ECDSA a Ed25519 spolu s hašem SHA-256. Procedury interakce s tokeny byly přesunuty do meziknihovny, která se načítá podobně jako knihovna pro podporu PKCS#11 a slouží jako obal nad knihovnou. libfido2, která poskytuje prostředky pro komunikaci s tokeny přes USB (podporovány jsou protokoly FIDO U2F/CTAP 1 a FIDO 2.0/CTAP 2). Vyvinutá mezi-knihovna libsk-libfido2 od vývojářů OpenSSH je zahrnuta je součástí libfido2, stejně jako HID ovladač pro OpenBSD.

Pro autentizaci a generaci klíče je nutné v nastavení uvést parametr „SecurityKeyProvider“ nebo nastavit proměnnou prostředí SSH_SK_PROVIDER a uvést cestu k externí knihovně libsk-libfido2.so (export SSH_SK_PROVIDER=\/path\/to\/libsk-libfido2.so). Je možná kompilace openssh se zabudovanou podporou knihovny-průchodu (—with-security-key-builtin), v takovém případě je nutné nastavit parametr „SecurityKeyProvider=internal“.
Dále je třeba spustit „ssh-keygen -t ecdsa-sk“ nebo, pokud byly klíče již vytvořeny a nastaveny, připojit se k serveru pomocí „ssh“. Při spuštění ssh-keygen bude vytvořený pár klíčů uložen do „~\/ .ssh\/id_ecdsa_sk“ a může být používán podobně jako jiné klíče.

Veřejný klíč (id_ecdsa_sk.pub) by měl být zkopírován na server do souboru authorized_keys. Na straně serveru je pouze ověřována digitální podpis, zatímco interakce s tokeny probíhá na straně klienta (na serveru není nutné instalovat libsk-libfido2, ale server musí podporovat typ klíčů „ecdsa-sk“). Vygenerovaný soukromý klíč (id_ecdsa_sk) je v podstatě deskriptorem klíče, který vytváří skutečný klíč pouze v kombinaci s tajnou sekvencí uchovávanou na straně tokenu U2F. Pokud by se klíč id_ecdsa_sk dostal do rukou útočníka, pro úspěšnou autentizaci by potřeboval také přístup k hardwarovému tokenu, bez něhož je uložený v souboru id_ecdsa_sk soukromý klíč k ničemu.

Kromě toho je při provádění jakýchkoliv operací s klíči (jak při generování, tak při autentizaci) vyžadováno místní potvrzení fyzické přítomnosti uživatele, například se navrhuje dotknout se senzoru na tokenu, což ztěžuje provádění remote útoků na systémy s připojeným tokenem. Jako další bezpečnostní prvek může být během spuštění ssh-keygen také nastaveno heslo pro přístup k souboru s klíčem.

V nové verzi OpenSSH bylo také oznámeno, že algoritmy používající hash SHA-1 budou brzy považovány za zastaralé. zvyšování efektivity kolizních útoků s daným prefixem (náklady na nalezení kolize se odhadují na přibližně 45 tisíc dolarů). V jednom z nejbližších vydání plánují ve výchozím nastavení deaktivovat možnost použití algoritmu digitálního podpisu s otevřeným klíčem „ssh-rsa“, který je zmíněn v původním RFC pro protokol SSH a zůstává široce rozšířený v praxi (pro ověření použití ssh-rsa ve svých systémech můžete vyzkoušet připojit se pomocí ssh s možností „-oHostKeyAlgorithms=-ssh-rsa“).

Aby se usnadnil přechod na nové algoritmy v OpenSSH, bude v jednom z následujících vydání ve výchozím nastavení povolena nastavení UpdateHostKeys, které umožní automatický přechod klientů na spolehlivější algoritmy. Mezi doporučené algoritmy pro migraci patří rsa-sha2-256/512 na základě RFC8332 RSA SHA-2 (podporováno od OpenSSH 7.2 a používá se ve výchozím nastavení), ssh-ed25519 (podporováno od OpenSSH 6.5) a ecdsa-sha2-nistp256/384/521 na základě RFC5656 ECDSA (podporováno od OpenSSH 5.7).

Ve verzi OpenSSH 8.2 byla možnost připojení pomocí 'ssh-rsa' zatím zachována, ale tento algoritmus byl odstraněn ze seznamu CASignatureAlgorithms, určujícího algoritmy povolené pro digitální podpis nových certifikátů. Podobně byl ze standardně podporovaných algoritmů pro výměnu klíčů odstraněn algoritmus diffie-hellman-group14-sha1. Uvádí se, že použití SHA-1 v certifikátech je spojeno s dodatečným rizikem, protože útočník má neomezený čas na nalezení kolize pro existující certifikát, zatímco doba útoku na hostitelské klíče je omezena timeoutem připojení (LoginGraceTime).

Při provádění ssh-keygen je nyní standardně aplikován algoritmus rsa-sha2-512, který je podporován od OpenSSH 7.2, což může způsobit problémy s kompatibilitou při pokusu o zpracování certifikátů podepsaných v OpenSSH 8.2 na systémech se staršími verzemi OpenSSH (pro obcházení problému při vytváření podpisu lze explicitně zadat 'ssh-keygen -t ssh-rsa' nebo použít algoritmy ecdsa-sha2-nistp256/384/521, podporované od OpenSSH 5.7).

Další změny:

  • Do sshd_config byla přidána direktiva Include, která umožňuje zahrnout obsah jiných souborů do aktuální pozice konfiguračního souboru (při zadávání názvu souboru je povoleno použití globálních mask);
  • Do ssh-keygen byla přidána volba 'no-touch-required', která vypíná potřebu fyzického potvrzení přístupu k tokenu při generování klíče;
  • Do sshd_config byla přidána direktiva PubkeyAuthOptions, která spojuje různé možnosti související s autentizací pomocí veřejných klíčů. V současné době je podporován pouze příznak 'no-touch-required' pro vynechání kontroly fyzické přítomnosti při autorizaci pomocí tokenu. Podobně byla do souboru authorized_keys přidána volba 'no-touch-required';
  • Do ssh-keygen byla přidána volba „-O write-attestation=\/path“, která umožňuje při generování klíčů zapisovat další certifikáty pro ověření FIDO. OpenSSH zatím tyto certifikáty nepoužívá, ale v budoucnu mohou být použity k ověření umístění klíče ve důvěryhodném hardwarovém úložišti;
  • V nastaveních ssh a sshd je nyní prostřednictvím direktivy IPQoS možné nastavit režim prioritizace provozu. LE DSCP (Lower-Effort Per-Hop Behavior);
  • V ssh, pokud je nastavena hodnota „AddKeysToAgent=yes“ a klíč neobsahuje pole s komentářem, bude přidán do ssh-agentu a jako komentář bude uvedena cesta k klíči. V
    ssh-keygen a ssh-agent jako komentáře ke klíči nyní používají také značky PKCS#11 a název subjektu X.509 místo cesty k knihovně;
  • Do ssh-keygen byla přidána možnost exportu PEM pro klíče DSA a ECDSA;
  • Byl přidán nový spustitelný soubor ssh-sk-helper, používaný k izolaci knihovny pro přístup k tokenům FIDO\/U2F;
  • Do ssh a sshd byla přidána možnost sestavení „—with-zlib“ pro kompilaci s podporou knihovny zlib;
  • V souladu s požadavkem RFC4253 byla do výstupního banneru při připojení přidána upozornění na zablokování přístupu z důvodu překročení limitů MaxStartups. Pro usnadnění diagnostiky byla v hlavičce procesu sshd, viditelné při použití nástroje ps, uvedena čísla aktuálně autentizovaných připojení a stav limitu MaxStartups;
  • V ssh a ssh-agent při volání programu pro výstup na obrazovku příkazů zadaného přes $SSH_ASKPASS je nyní navíc předáván flag s typem výzvy: „confirm“ — dialog pro potvrzení (ano/ne), „none“ — informační zpráva, „blank“ — žádost o heslo;
  • Do ssh-keygen byla přidána nová operace s digitálními podpisy „find-principals“ pro hledání v souboru allowed-signers uživatele, spojeného s uvedeným digitálním podpisem;
  • Byla vylepšena podpora izolace procesu sshd v Linuxu pomocí mechanismu seccomp: byly zakázány systémové volání IPC, povoleny clock_gettime64(), clock_nanosleep_time64 a clock_nanosleep().

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster