Po čtyřech měsících vývoje uvolnění , 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 , vyvinuté aliancí . 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. , 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 do jádra libfido2, stejně jako 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 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 (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ů;
- Улучшена поддержка изоляции процесса sshd в Linux при помощи механизма seccomp: запрещены системные вызовы IPC, разрешены clock_gettime64(), clock_nanosleep_time64 и clock_nanosleep().
Zdroj: opennet.ru
