В OpenSSH добавлена экспериментальная функция двухфакторной аутентификации с помощью дешевых решений вида USB, Bluetooth или NFC-носителей. Соответствующая информация и детальное руководство опубликованы на marc.info.
Теперь OpenSSH имеет экспериментальную поддержку поддержку U2F / FIDO, а U2F добавлен как новый тип ключа "
sk-ecdsa-sha2-nistp256@openssh.com
" или сокращенно «ecdsa-sk» («sk» означает «ключ безопасности»).Если ранее вы не сталкивались с U2F, то это — открытый стандарт для создания недорогих аппаратных решений в области security-токенов. Фактически, это самый дешевый способ для пользователей для получения аппаратных ключей, а на рынке достаточно продавцов. Например, токены можно купить у Yubico, Feitian, Thetis и Kensington. Аппаратные ключи дают преимущество в плане взлома: их надо физически украсть, что невозможно для большинства взломщиков.
При это токены — недорогие устройства, стоимость многих редко достигает стони евро, то есть это сравнительно дешевый и надежный способ для того, чтобы обезопасить систему.
В РФ подходящий токен можно купить за ~30 евро, что еще выгоднее, чем у западных коллег.
Сейчас функция двухфактора работает в экспериментальном режиме, то есть доступна только тем, кто целенаправленно захочет ею воспользоваться. Для этого стоит выполнить условия, описанные в README.md из репозитория OpenSSH на GitHub. Также функция доступна пользователям коммерческого OpenBSD в билде от 01.11.2019.
Для установки двухфакторного доступа вам потребуется библиотека Libfido2, которую можно скачать на GitHub (включает поддержку OpenBSD, Linux, OS X и частично Windows). Каких-либо дополнительных зависимостей она не создает, так что абсолютно безопасна для использования. Libfido2 генерирует сам ключ, так что ее использование необходимо.
Добавьте сгенерированный ключ U2F в ssh-agent.
Ключи U2F можно добавить в ssh-agent, как и любой другой ключ. Только в нашем случае есть дополнительные требования:
1) агент поддерживает новый тип ключа.
2) библиотека и физический токен должны присутствовать на хосте-агенте (по принципу очень похоже на PKCS # 11)
3) ssh-add должен указывать путь к библиотеку промежуточного ПО (можно воспользоваться командой -S)
4) чтобы библиотека промежуточного ПО находится в white-листе (см. документацию -P ssh-agent).
В файле PROTOCOL.u2f в репозитории OpenSSH можно найти информацию и по другим нюансам использования двухфактора.
С полным руководством можно ознакомиться на ранее упоминаемом marc.info.
Автор: ITSumma