В OpenSSH е добавена поддръжка за универсална двуфакторна автентикация.

В кодовата база OpenSSH е добавена експериментална поддръжка на двуфакторна автентикация с използване на устройства, поддържащи протокола U2F, развиван от алианса FIDO. U2F позволява създаването на евтини хардуерни токени за потвърждаване на физическото присъствие на потребителя, взаимодействието с които се извършва чрез USB, Bluetooth или NFC. Подобни устройства се предлагат като средство за двуфакторна автентикация на сайтове, вече се поддържат от основните браузъри и се произвеждат от различни производители, включително Yubico, Feitian, Thetis и Kensington.

За взаимодействие с устройствата, потвърдващи присъствието на потребителя, в OpenSSH е добавен нов тип ключове „sk-ecdsa-sha2-nistp256@openssh.com“ („ecdsa-sk“), в който се използва алгоритъм за цифрова подпис ECDSA (Elliptic Curve Digital Signature Algorithm) с елиптична крива NIST P-256 и хеш SHA-256. Процедурите за взаимодействие с токените са изнесени в междинна библиотека, която се зарежда аналогично на библиотеката за поддръжка на PKCS#11 и представлява обвивка над библиотеката libfido2, предоставяща средства за комуникация с токените върху USB (поддържат се протоколи FIDO U2F/CTAP 1 и FIDO 2.0/CTAP 2). Подготвената от разработчиците на OpenSSH междинна библиотека libsk-libfido2 е включена е част от libfido2, подобно на HID-драйвера за OpenBSD.

За активиране на U2F можете да използвате свежо изрязване на кодовата база от репозитория OpenSSH и HEAD-клон на библиотеката libfido2, в който вече е включена необходимата за OpenSSH прослойка.
Libfido2 поддържа работа в OpenBSD, Linux, macOS и Windows.

За автентикация и генериране на ключ трябва да зададете променлива на средата SSH_SK_PROVIDER, посочвайки в нея пътя до libsk-libfido2.so (export SSH_SK_PROVIDER=/path/to/libsk-libfido2.so), или да определите библиотеката чрез настройка SecurityKeyProvider, след което да стартирате „ssh-keygen -t ecdsa-sk“ или, ако ключовете вече са създадени и настроени, да се свържете със сървъра с помощта на „ssh“. При стартиране на ssh-keygen, създадената двойка ключове ще бъде запазена в „~/.ssh/id_ecdsa_sk“ и може да се използва аналогично на другите ключове.

Отвореният ключ (id_ecdsa_sk.pub) трябва да бъде копиран на сървъра в файла authorized_keys. На страната на сървъра само се проверява цифровият подпис, а взаимодействието с токените се извършва на страната на клиента (не е нужно да се инсталира libsk-libfido2 на сървера, но сървърът трябва да поддържа вид ключове „ecdsa-sk“). Генерираният секретен ключ (id_ecdsa_sk) по същество е дескриптор на ключа, който образува реалния ключ само в комбинация с секретната последователност, съхранявана на страната на токена U2F.

В случай че ключът id_ecdsa_sk попадне в ръцете на атакуващ, за да премине аутентификация, той също така трябва да получи достъп до хардуерния токен, без който запазеният в файла id_ecdsa_sk секретен ключ е безполезен. Освен това, по подразбиране, при извършване на каквито и да е операции с ключовете (както при генерирането, така и при аутентификацията) се изисква локално потвърждение на физическото присъствие на потребителя, например, предлага се да се докосне сензора на токена, което затруднява провеждането на дистанционни атаки на системи с включен токен. Като още един защитен ред на етапа на стартиране, ssh-keygen също може да изисква парола за достъп до файла с ключа.

Ключът U2F може да бъде добавен в ssh-agent чрез „ssh-add ~/.ssh/id_ecdsa_sk“, но ssh-agent трябва да е компилиран с поддръжка на ключове „ecdsa-sk“, трябва да присъства прослойка libsk-libfido2 и агентът трябва да работи на системата, към която е свързан токенът.
Новият тип ключове „ecdsa-sk“ е добавен, тъй като форматът на ecdsa-ключовете OpenSSH се различава от формата U2F за цифрови подписи ECDSA, който има допълнителни полета.

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster