Společnost Cloudflare publikovala opkssh pro autentizaci v SSH prostřednictvím OpenID Connect

Společnost Cloudflare představila nástroj opkssh (OpenPubkey SSH), který umožňuje integrovat do OpenSSH prostředky centralizované autentizace s možností přihlášení přes poskytovatele OpenID Connect. Pomocí opkssh se lze zbavit manuální práce při správě a nastavování SSH klíčů a také organizovat připojení k serveru z jakýchkoli hostů, aniž by bylo nutné vytvářet soukromé klíče na každém klientském počítači a bez manuálního kopírování veřejných klíčů na server. Pro připojení stačí provést na serveru vazbu k účtu u poskytovatele OpenID. Kód nástroje je napsán v jazyce Go a distribuuje se pod licencí Apache 2.0.

Opkssh je kompatibilní s poskytovateli OpenID Google, Microsoft/Azure a Gitlab, což umožňuje nastavit přihlášení pomocí existujících účtů ve službách gmail.com, microsoft.com a gitlab.com. Při používání opkssh se místo neomezených časově platných SSH klíčů generují dočasné klíče, které platí jen několik hodin a jsou generovány na základě potvrzení od poskytovatele OpenID. Únik takových klíčů po vypršení platnosti nepředstavuje bezpečnostní hrozbu. Výchozí doba platnosti klíče je 24 hodin, po které je nutné se znovu identifikovat přes OpenID.

Integrace s OpenSSH je založena na možnosti vytvářet rozšíření protokolu SSH, která umožňují připojení libovolných dat k SSH certifikátům. Po úspěšné autentizaci přes OpenID klient vytvoří veřejný klíč, který obsahuje PK token potvrzující příslušnost klíče k deklarovanému uživateli. Token je integrován do protokolu SSH prostřednictvím pole s dalšími daty SSH certifikátu. Vytváření PK tokenů a jejich ověřování na straně serveru se provádí pomocí kryptografického protokolu OpenPubKey.

OpenPubKey umožňuje generovat veřejný klíč a přiřadit ho k tokenu vydanému poskytovatelem OpenID. Pomocí digitálního podpisu poskytovatel potvrzuje, že tento klíč byl vytvořen uvedeným autentizovaným uživatelským jménem. Například poskytovatel OpenID Google může potvrdit, že uživatel je autentizován jako test@gmail.com. Na serverové straně se kontroluje, zda je připojený token podepsán poskytovatelem OpenID a zda digitální podpis odpovídá uvedenému veřejnému klíči, tj. server může potvrdit, že uživatel test@gmail.com skutečně vytvořil veřejný klíč pro připojeného SSH klienta.

Společnost Cloudflare publikovala opkssh pro autentizaci v SSH prostřednictvím OpenID Connect

Integrace s OpenSSH je zajištěna uvedením programu opkssh v konfiguračním souboru „sshd_config“ pomocí direktivy „AuthorizedKeysCommand“ (například: „AuthorizedKeysCommand /usr/local/bin/opkssh verify %u %k %t“). Nastavení vazby účtů na OpenID se provádí na straně SSH serveru. Na straně SSH klienta není třeba žádné úpravy, ale před přihlášením je nutné spustit příkaz „opkssh login“ a v otevřeném okně prohlížeče vybrat poskytovatele OpenID a provést autentizaci přes něj.

Nástroj opkssh vygeneruje klíče SSH a získá PK-token, který potvrzuje, že uživatel prošel autentizací a umožňuje ověřit, že vytvořené klíče patří uvedenému uživateli. Veřejný klíč SSH, ke kterému je prostřednictvím pole s dodatečnými údaji přiřazen PK-token, bude zapsán do souboru ~/ .ssh/id_ecdsas a začne se předávat při připojení k serveru nástroji ssh.

Připojení k serveru se provádí pomocí standardního schématu SSH „ssh login@server“, přičemž serveru login musel být předtím identifikován s účtem v OpenID, který uživatel používá. Takže práce spočívá v tom, že SSH klient odešle na SSH server veřejný klíč a server spustí příkaz „opkssh verify“ pro ověření klíče.

Pro přiřazení účtu k OpenID serverový administrátor spustí příkaz „opkssh add“. Například pro povolení přihlášení na server pod uživatelským jménem „root“ s autentizací OpenID přes účet test@gmail.com v Gmailu je třeba provést „sudo opkssh add root test@gmail.com google“, po čemž se klient může připojit pod parametry tohoto účtu příkazem „ssh root@host_serveru“.

Připojení účtu lze také provést ručně prostřednictvím konfiguračního souboru /etc/opk/auth_id (nebo ~/.opk/auth_id), do kterého bude v tomto příkladu zapsán řádek „root test@gmail.com https://accounts.google.com“. Dále lze prostřednictvím souboru /etc/opk/providers definovat seznam povolených poskytovatelů OpenID, jejich parametry a seznam povolených identifikátorů klientů.

Společnost Cloudflare publikovala opkssh pro autentizaci v SSH prostřednictvím OpenID Connect


Zdroj: opennet.ru
Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster