Novinky

Více než 30 IDM realizací v České republice i zahraničí

AMI Praha Single Sign-On pro SSH aneb srovnání systému Kerberos a KDM
Single Sign-On pro SSH aneb srovnání systému Kerberos a KDM

Single Sign-On pro SSH aneb srovnání systému Kerberos a KDM

Princip jednotného přihlášení, anglicky Single Sign-On (dále jen SSO), umožňuje přistupovat k více zdrojům (aplikacím, sdíleným složkám atd.) bez opakovaného zadávání přihlašovacích údajů. V prostředí webových aplikací jde o dobře zavedený a často používaný mechanismus, a to v případech vnitrofiremních aplikací i veřejných webů. U protokolu SSH (Secure Shell), tedy vzdálených konzolí Unixových serverů, je řešení SSO podstatně méně rozšířené a složitější.  K jeho realizaci se nabízí např. nástroj KDM či protokol Kerberos, na které se blíže podíváme.

Administrátorské „pseudo SSO“ pomocí klíčů

Administrátoři, kteří musí SSH používat, mají často vlastní „implementaci“ SSO mechanismu, a tou je přihlašování pomocí SSH klíčů (tedy pomocí PKI). Privátní části SSH klíčů pro Unix servery mají uložené na svém pracovním notebooku na disku a to ideálně v nezašifrované podobě. V takovém případě je totiž nezdržuje zadávání hesla k rozšifrování klíče a mechanismus se na první pohled může jevit jako SSO. Problém vyvstane, když se někdo nepovolaný zmocní takovéhoto notebooku s klíči. Pochopitelně je možné klíče šifrovat, to jde ale zase stranou výhoda SSO a heslo je nutné zadávat při každém přihlašování. Při manuálním generování klíčů navíc nelze vynutit, aby byly klíče povinně zašifrovány.

Ať už jde o klíče zašifrované či nikoliv, k řešení je nutné dodat ještě centrální správu účtů a zavést mechanismus distribuce klíčů povolaným osobám a na servery. Bez těchto záležitostí je řešení těžko použitelné i pro malé týmy. Tímto směrem se přesně vydává produkt KDM.

Co je to KDM?

KDM (Key Distribution Manager) je software, který je přímou evolucí výše popsaného postupu. Využívá přihlašování SSH klíči a zajišťuje centrální generování klíčů, distribuci privátních částí klíčů přímo uživatelům, distribuci veřejných částí klíčů na určené servery a centrální správu všech uživatelských účtů na Unix serverech.

Princip práce uživatele, který se chce přihlásit na Unix server pomocí KDM, vypadá následovně:

  1. Uživatel se přihlásí přes SSH ke KDM (zde je možné mít nastavenu libovolnou autentizaci, doporučujeme dvoufaktorovou).
  2. Uživatel zadá v KDM heslo ke svému klíči, který je v zašifrované podobě uložen na KDM serveru.
  3. KDM rozšifruje klíč uživatele a pošle mu jej do SSH agenta (uživatel nemá možnost získat SSH klíč k volnému použití).
  4. Uživatel se přihlásí k cílovému Unix serveru, na kterém potřebuje pracovat, přičemž se použije jeho klíč z SSH agenta (heslo se již nezadává).

Klíč v agentovi vydrží nastavenou dobu, typicky 24 hodin. Po této době je nutné si jej znovu vyžádat z KDM.

Kromě samotného SSO řeší KDM i centrální správu uživatelských účtů včetně specifikace jejich oprávnění (skupin) na jednotlivých Unixových serverech. Z jednoho místa je možné snadno aktivovat/deaktivovat uživatele na více serverech.

Co je to Kerberos ?

Kerberos je obecnější síťový autentizační protokol, který lze také použít pro realizaci SSO. Princip jeho fungování zde nebudeme podrobně rozebírat. Základem je, že se uživatel musí nejprve autentizovat proti centrální komponentě (AS – Authentication Server), od které obdrží tiket. Tento tiket použije při komunikaci s další centrální komponentou (TGS – Ticket Granting Server), od kterého obdrží jiný tiket, se kterým se již přihlásí na požadovaný server.

Výhodou může být, že firmy často provozují Windows doménu, která služby Kerberosu nabízí. Ve Windows doméně jsou již obvykle všichni pracovníci zavedení, takže stačí nastavit koncové Unix servery (tzv. je kerberizovat), nastavit uživatelům klientské nástroje (např. Putty) a SSO může pracovat.

Centrální správa uživatelů se pak odehrává přímo ve správě Windows AD.

Společné vlastnosti

Základní vlastnosti společné oběma popsaným řešením jsou následující:

  • Poskytování SSO (Single Sign-On) pro Unix servery.
  • Centrální správa uživatelů, včetně jejich skupin a dalších atributů. Přesněji řečeno, Kerberos toto přímo nezajišťuje, ale lze zajistit, aby si Unix server bral atributy uživatelů z centrálního LDAP serveru. KDM pracuje přímo tak, že uživatele spravuje na Unix serverech v jejich /etc/passwd.
  • Účast centrální komponenty při přihlašování (rozdíl je zmíněn níže).
  • Možné napojení centrální správy uživatelů na Identity Management.

Odlišnosti řešení

Naopak odlišnosti bychom hledali zde:

  • Kerberos vyžaduje centrální komponentu při každém přihlašování se ke službě (cílovému serveru). KDM ji vyžaduje pouze při prvním přihlášení pro načtení klíče, dále je možné hlásit se na další servery bez účasti centrální komponenty.
  • Útočník, který získá přístup k centrální komponentě Kerberosu, se může vydávat za libovolného uživatele. U KDM útočník získá pouze zašifrované klíče, které zneužít nemůže. Může ale z KDM serveru vyvolat změnu klíčů uživatele a zneužít až nově vygenerované klíče. Výhodou je, že změna klíčů je zachytitelná (logovatelná, monitorovatelná) jak na straně KDM, tak na straně cílového Unix serveru. Každopádně platí, že centrální komponenty by měly být velmi dobře zabezpečené (více faktorů, rozdělení hesla mezi více administrátorů apod.).
  • Kerberos je náchylný na synchronizaci času (protokol je na tom postaven), zatímco u přihlašování klíči, které využívá KDM, čas nehraje roli.
  • Kerberos vyžaduje speciálně upraveného klienta (např. Putty v určité verzi). KDM používá standardní SSH klíče, které zvládne snad každý SSH klient. Naproti tomu KDM vyžaduje běh SSH agenta pro uchování klíčů v RAM.

Závěrem můžeme konstatovat, že obě řešení přináší kvalitní SSO i centrální správu uživatelů. Záleží na výchozích podmínkách a zvyklostech dané organizace, jaké řešení zvolit. S tímto úkolem vám rádi pomůžeme.

Autor: Jiří Vitinger