Компанията Cloudflare публикува opkssh за аутентификация в SSH чрез OpenID Connect.

Компания Cloudflare представи инструменти opkssh (OpenPubkey SSH), позволяващи интегриране на централизирана автентикация в OpenSSH с възможност за вход чрез доставчици на OpenID Connect. С opkssh можете да се откажете от ръчната работа по управление и настройка на SSH-ключове, както и да организирате свързване със сървъра от всякакви хостове, без нужда от създаване на частни ключове на всяко клиентско устройство и без ръчно копиране на отворени ключове на сървъра. За свързване е достатъчно да извършите на сървъра привързване към профила на доставчика на OpenID. Кодът на инструмента е написан на езика Go и се разпространява под лицензия Apache 2.0.

Opkssh е съвместим с OpenID доставчици като Google, Microsoft/Azure и Gitlab, което позволява настройване на вход чрез вече съществуващи профили в услугите gmail.com, microsoft.com и gitlab.com. При използване на opkssh вместо неограничени във времето SSH ключове се генерират временни ключове, които действат само за няколко часа и се формират на база потвърждение от доставчика на OpenID. Изтичането на такива ключове след приключване на срока им не представлява заплаха за сигурността. По подразбиране времето на действие на ключа е 24 часа, след което е необходимо повторно идентифициране чрез OpenID.

Интеграцията с OpenSSH се основава на възможността за създаване на разширения на протокола SSH, позволяващи прикрепяне на произволни данни към SSH сертификати. След успешно автентикиране чрез OpenID, клиентът формира отворен ключ, съдържащ PK-токен, който потвърдява принадлежността на ключа към заявения потребител. Токенът се интегрира в протокола SSH чрез поле с допълнителни данни на SSH сертификата. Създаването на PK токени и тяхната проверка на страната на сървъра се осъществява с използване на криптографския протокол OpenPubKey.

OpenPubKey позволява да се генерира публичен ключ и да се свърже с токен, издаден от OpenID доставчика. Чрез цифровия подпис доставчик потвърждава, че този ключ е създаден от заявения автентифициран потребител. Например, OpenID доставчикът Google може да потвърди, че потребителят е автентифициран като test@gmail.com. От страна на сървъра се извършва проверка дали прикрепеният токен е подписан от OpenID доставчика и дали цифровият подпис съответства на заявения публичен ключ, т.е. сървърът може да удостоверява, че именно потребителят test@gmail.com е създал публичния ключ за свързващия SSH клиент.

Компанията Cloudflare публикува opkssh за аутентификация в SSH чрез OpenID Connect.

Интеграцията с OpenSSH е организирана чрез указване на програмата opkssh във файла за конфигурация „sshd_config“ чрез директивата „AuthorizedKeysCommand“ (например: „AuthorizedKeysCommand /usr/local/bin/opkssh verify %u %k %t“). Настройката за свързване на акаунти с OpenID се осъществява от страната на SSH сървъра. От страната на клиентa SSH не са необходими промени в настройките, но преди входа трябва да се стартира командата „opkssh login“ и в появилия се прозорец на браузъра да се избере OpenID доставчика и да се извърши автентикация през него.

Утилитата opkssh ще генерира SSH ключове и ще получи PK токен, който потвърждава, че потребителят е преминал автентикация и позволява да се провери, че създадените ключове принадлежат на заявения потребител. Публичният SSH ключ, към който е прикрепен PK токенът чрез полето с допълнителни данни, ще бъде записан в файла ~/ .ssh/id_ecdsas и ще започне да се предава при свързване с сървъра утилитата ssh.

Свързването със сървъра се извършва с обичайната за SSH схема „ssh логин@сървър“, при което на сървър логинът предварително трябва да бъде идентифициран с акаунта в OpenID, който потребителят използва. По този начин работата се сведе до това, че SSH клиентът изпраща на SSH сървъра публичния ключ, а сървърът стартира командата „opkssh verify“ за проверка на ключа.

За свързване на акаунта с OpenID администраторът на сървъра изпълнява командата „opkssh add“. Например, за да разреши входа на сървъра под потребителя „root“ с OpenID автентикация чрез акаунта test@gmail.com в Gmail, следва да се изпълни „sudo opkssh add root test@gmail.com google“, след което клиентът ще може да се свързва с параметрите на тази акаунтна команда „ssh root@хост_сервера“.

Привързването на акаунта може да бъде извършено и ръчно чрез конфигурационния файл /etc/opk/auth_id (или ~/.opk/auth_id), в който за посочения пример ще бъде записан редът "root test@gmail.com https://accounts.google.com". Допълнително, чрез файла /etc/opk/providers може да се определи списък на разрешените OpenID доставчици, техните параметри и списък на одобрените клиентски идентификатори.

Компанията Cloudflare публикува opkssh за аутентификация в SSH чрез OpenID Connect.


Източник: opennet.ru
Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster