Компанията 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. На клиента 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