Vydání OpenSSH 8.2 s podporou dvoufaktorových autentizačních tokenů FIDO/U2F

Po čtyřech měsících vývoje prezentovány uvolnění OpenSSH 8.2, otevřená implementace klienta a serveru pro práci přes protokoly SSH 2.0 a SFTP.

Klíčovým vylepšením ve vydání OpenSSH 8.2 byla možnost používat dvoufaktorovou autentizaci pomocí zařízení, která podporují protokol U2F, vyvinuté aliancí FIDO. U2F umožňuje vytváření levných hardwarových tokenů pro ověření fyzické přítomnosti uživatele, interakci s nimi přes USB, Bluetooth nebo NFC. Taková zařízení jsou propagována jako prostředek dvoufaktorové autentizace na webových stránkách, jsou již podporována velkými prohlížeči a vyrábí je různí výrobci, včetně Yubico, Feitian, Thetis a Kensington.

Pro interakci se zařízeními, která potvrzují přítomnost uživatele, byly do OpenSSH přidány nové typy klíčů „ecdsa-sk“ a „ed25519-sk“, které využívají algoritmy digitálního podpisu ECDSA a Ed25519 v kombinaci s hash SHA-256. Procedury pro interakci s tokeny jsou umístěny v přechodné knihovně, která se načítá podobným způsobem jako knihovna pro podporu PKCS#11 a je obalem nad knihovnou. libfido2, která poskytuje nástroje pro komunikaci s tokeny přes USB (podporovány jsou protokoly FIDO U2F/CTAP 1 a FIDO 2.0/CTAP 2). Prostřední knihovna libsk-libfido2 připravená vývojáři OpenSSH zahrnuta do jádra libfido2, stejně jako HID ovladač pro OpenBSD.

Chcete-li ověřit a vygenerovat klíč, musíte v nastavení zadat parametr „SecurityKeyProvider“ nebo nastavit proměnnou prostředí SSH_SK_PROVIDER udávající cestu k externí knihovně libsk-libfido2.so (export SSH_SK_PROVIDER=/cesta/k/libsk-libfido2. tak). Je možné sestavit openssh s vestavěnou podporou pro knihovnu vrstev (--with-security-key-builtin), v tomto případě musíte nastavit parametr „SecurityKeyProvider=internal“.
Dále musíte spustit „ssh-keygen -t ecdsa-sk“ nebo, pokud již byly klíče vytvořeny a nakonfigurovány, připojit se k serveru pomocí „ssh“. Když spustíte ssh-keygen, vygenerovaný pár klíčů se uloží do „~/.ssh/id_ecdsa_sk“ a lze jej použít podobně jako jiné klíče.

Veřejný klíč (id_ecdsa_sk.pub) by měl být zkopírován na server do souboru author_keys. Na straně serveru se ověřuje pouze digitální podpis a interakce s tokeny se provádí na straně klienta (není třeba instalovat libsk-libfido2 na server, ale server musí podporovat typ klíče „ecdsa-sk“) . Generovaný soukromý klíč (id_ecdsa_sk) je v podstatě klíčový klíč, který tvoří skutečný klíč pouze v kombinaci s tajnou sekvencí uloženou na straně tokenu U2F. Pokud se klíč id_ecdsa_sk dostane do rukou útočníka, bude k předání autentizace potřebovat také získat přístup k hardwarovému tokenu, bez kterého je soukromý klíč uložený v souboru id_ecdsa_sk k ničemu.

Navíc je standardně při provádění jakýchkoli operací s klíči (jak při generování, tak při autentizaci) vyžadováno lokální potvrzení fyzické přítomnosti uživatele, například se navrhuje dotknout se senzoru na tokenu, což znesnadňuje provádět vzdálené útoky na systémy s připojeným tokenem. Jako další obrannou linii lze během spouštěcí fáze ssh-keygen zadat heslo pro přístup k souboru klíče.

Nová verze OpenSSH také oznámila nadcházející ukončení podpory algoritmů využívajících hash SHA-1 kvůli povýšení efektivita kolizních útoků s daným prefixem (náklady na výběr kolize se odhadují na cca 45 tisíc dolarů). V jedné z nadcházejících verzí plánují ve výchozím nastavení deaktivovat možnost používat algoritmus digitálního podpisu s veřejným klíčem „ssh-rsa“, který je zmíněn v původním RFC pro protokol SSH a v praxi zůstává rozšířený (pro testování použití ssh-rsa ve vašich systémech, můžete se zkusit připojit přes ssh s volbou „-oHostKeyAlgorithms=-ssh-rsa“).

Pro hladký přechod na nové algoritmy v OpenSSH bude v budoucí verzi standardně povoleno nastavení UpdateHostKeys, které automaticky migruje klienty na spolehlivější algoritmy. Mezi doporučené algoritmy pro migraci patří rsa-sha2-256/512 založené na RFC8332 RSA SHA-2 (podporované od OpenSSH 7.2 a používané ve výchozím nastavení), ssh-ed25519 (podporované od OpenSSH 6.5) a ecdsa-sha2-nistp256/384/521 na RFC5656 ECDSA (podporováno od OpenSSH 5.7).

V OpenSSH 8.2 je stále k dispozici možnost připojení pomocí „ssh-rsa“, ale tento algoritmus byl odstraněn ze seznamu CASignatureAlgorithms, který definuje algoritmy povolené pro digitální podepisování nových certifikátů. Podobně byl z výchozích podporovaných algoritmů výměny klíčů odstraněn algoritmus diffie-hellman-group14-sha1. Je třeba poznamenat, že použití SHA-1 v certifikátech je spojeno s dalším rizikem, protože útočník má neomezený čas na hledání kolize pro existující certifikát, zatímco doba útoku na hostitelské klíče je omezena časovým limitem připojení (LoginGraceTime ).

Spuštění ssh-keygen nyní ve výchozím nastavení používá 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 vydáními OpenSSH (pro vyřešení problému, když při generování podpisu můžete 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ů na aktuální pozici konfiguračního souboru (při zadávání názvu souboru lze použít masky glob);
  • Do ssh-keygen byla přidána možnost „no-touch-required“, která zakazuje 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á kombinuje různé možnosti související s ověřováním veřejného klíče. V současné době je podporován pouze příznak „nevyžadován dotykem“, aby se vynechaly kontroly fyzické přítomnosti pro autentizaci pomocí tokenu. Analogicky byla do souboru author_keys přidána možnost „nevyžadován dotykem“;
  • Přidána možnost "-O write-attestation=/path" do ssh-keygen, aby bylo možné při generování klíčů zapsat další atestační certifikáty FIDO. OpenSSH zatím tyto certifikáty nepoužívá, ale později je lze použít k ověření, že je klíč umístěn v důvěryhodném železářství;
  • V nastavení ssh a sshd je nyní možné nastavit režim priority provozu přes direktivu IPQoS LE DSCP (chování s nižším úsilím na hop);
  • V ssh při nastavení hodnoty „AddKeysToAgent=yes“, pokud klíč neobsahuje pole komentáře, bude přidán do ssh-agent s uvedením cesty ke klíči jako komentář. V
    ssh-keygen a ssh-agent také nyní používají jako komentáře v klíči štítky PKCS#11 a název předmětu X.509 místo cesty ke knihovně;

  • Přidána možnost exportu PEM pro klíče DSA a ECDSA do ssh-keygen;
  • Přidán nový spustitelný soubor ssh-sk-helper, který se používá k izolaci přístupové knihovny tokenů FIDO/U2F;
  • Přidána možnost sestavení „--with-zlib“ pro ssh a sshd pro kompilaci s podporou knihovny zlib;
  • V souladu s požadavkem RFC4253 je v banneru zobrazeném během připojení uvedeno upozornění na blokování přístupu z důvodu překročení limitů MaxStartups. Pro zjednodušení diagnostiky nyní hlavička procesu sshd, viditelná při použití nástroje ps, zobrazuje počet aktuálně ověřených připojení a stav limitu MaxStartups;
  • V ssh a ssh-agent se při volání programu pro zobrazení pozvánky na obrazovce, zadané pomocí $SSH_ASKPASS, nyní navíc vysílá příznak s typem pozvání: “potvrdit” - potvrzovací dialog (ano/ne), “žádné ” - informační zpráva, “prázdné” — požadavek na heslo;
  • Do ssh-keygen byla přidána nová operace digitálních podpisů "find-principals" pro vyhledání uživatele spojeného se zadaným digitálním podpisem v souboru povolených podpisů;
  • Vylepšená podpora pro izolaci procesů sshd v Linuxu pomocí mechanismu seccomp: deaktivace systémových volání IPC, povolení clock_gettime64(), clock_nanosleep_time64 a clock_nanosleep().

Zdroj: opennet.ru

Přidat komentář