Přihlašujte se do Linux VM v Azure s AAD a třeba i vícefaktorově

Při vytváření VM v Azure specifikujete přihlašovací údaje administrátora. Tímto účtem se připojíte a řešíte to dál. Možná přidáte účty pro vaše kolegy, ale pokud máte takových VM sto a jeden z účtů je kompromitovaný (nebo ten člověk u vás už nepracuje), je dost práce to změnit. Linux s tím počítá a přes PAM (Pluggable Authentication Module) může OS napojit na centrální repozitář, typicky LDAP nebo standardní AD. Proč ale nevyužít úžasných vlastností Azure Active Directory včetně vícefaktoru, kontroly klienstkého zařízení, analýzy rizika nebo řízení eskalace oprávnění?

Proč AAD i pro správu Linuxu

Azure Active Directory je srdcem celého Microsoft ekosystému a tvoří identitní perimetr. Přes něj se řeší Office 365, Dynamics, Intune, Azure portál a vlastně prakticky všechno. AAD kromě obyčejného jména a hesla nabízí spoustu pokročilejších věcí, které při zabezpečení Linuxové mašiny mohou mít velký přínos.

  • Jednotná identita pro cloud a moderní aplikace (AAD – OAuth 2.0 apod.) tak i klasické on-premises prostředí (AD – Kerberos apod.) díky těsné integraci
  • Podpora vícefaktorového ověřování (heslo + SMS, auth appka, telefonát apod.)
  • Rozhodování podle stavu koncového zařízení, z kterého se někdo připojuje (Intune)
  • Vysoká míra zabezpečení díky sofistikovanému AI (AIP)
  • Systém pro vytváření schvalovacího kolečka pro eskalaci práv, například získání admin přístupu (PIM)
  • Podmíněné přístupy podle lokality, stavu stanice, míry ryzika apod.

Něco takhle robustního běžně při přihlášení do Linux OS k dispozici není.

Jak funguje Linux napojení na AAD

Linux kromě lokálního ověřování podporuje napojení na centrální systém identity díky PAM. Je tedy možné vytvořit implementaci PAM pro AAD, nastavit a používat.

Je tu ale ještě jeden problém. Pokročilé přihlašování vyžaduje nějaké zpracování na klienstké straně (v prohlížeči), aby mohlo fungovat všechno to zajímavé. Textové logování typické pro SSH žadný kód ve vašem Putty vyvolat samozřejmě neumí. Jaké je řešení? Stejně jako u přihlašování do Azure CLI 2.0 to funguje tak, že textový systém vygeneruje nějakou challenge a informuje AAD o vašem požadavku na přihlášení. Textový systém vám poskytne odkaz (https://microsoft.com/devicelogin), který musíte otevřít v prohlížeči a kód, který do něj zkopírujete. Žádné heslo tam nezadáváte (to je dobře, protože pokud správně neautorizujete public klíče vašich serverů vůči pracovní stanici, jste náchylní na man-in-the-middle). Samotné skutečné přihlášení tedy probíhá v browseru a díky tomu tam zafunguje úplně všechno, co můžete mít pro logování do Office365 nebo Azure. Na konci procesu je v AAD k této challenge zapsáno (na omezenou dobu), že došlo k úspěšnému přihlášení. Textový systém se tam podívá a přesvědčí se o tom. Ve skutečnosti je komunikace textového systému s AAD daleko bezpečnější, než jsem poslal – díky vzájemnému ověřování certifikátů nelze Linuxu podstrčit „černé“ AAD a naopak.

 

Pokračovat ve čtení