Integrace · Linux SSH
Linux SSH 2FA s pam_radius a schválením na telefonu
Pro týmy, které spravují linuxové servery přes SSH a chtějí, aby každý shell, sudo i su vyžadoval kromě hesla také schválení na telefonu. Linux PAM má standardní RADIUS modul; nasměrujte ho na Notakey auth-proxy a celá flotila se zapojí do stejného nastavení jako vaše VPN.
Jak se připojuje
PAM, RADIUS, proxy – a na serveru nic dalšího
sshd i sudo ověřují přes PAM. Modul pam_radius pošle uživatelské jméno a heslo přes RADIUS na Notakey auth-proxy; proxy předá kontrolu hesla vašemu RADIUS serveru, pošle na telefon uživatele žádost o schválení a Access-Accept vrátí jen tehdy, když uspějí obě kontroly. Návod pokrývá Debian/Ubuntu s balíčkem libpam-radius-auth; v distribucích z rodiny RHEL se modul jmenuje pam_radius a soubory PAM mají stejné uspořádání v /etc/pam.d/.
Když je modul nastaven jako sufficient, Access-Accept uživatele rovnou přihlásí a cokoli jiného propadne do běžné kontroly lokálního hesla. Váš nouzový administrátor si ponechá čistě lokální heslo; všechny ostatní lze vytvořit bez něj. Jedinou cestou dovnitř je pro ně pak RADIUS přes proxy, tedy heslo a schválení na telefonu, a lokálně není co prolamovat hrubou silou.
Tatáž proxy a tentýž RADIUS server, které už chrání VPN a správu routeru, obslouží i linuxovou flotilu. Na straně proxy se nic nemění.
Co vědět, než začnete
- Výchozí timeout modulu jsou 3 sekundy. Nastavte ho alespoň na hodnotu vpn_message_ttl na proxy (30 sekund); 60 sekund dává pohodlnou rezervu. Okamžité selhání bez push notifikace obvykle znamená špatný timeout nebo sdílené tajemství.
- Přihlášení přes SSH veřejným klíčem fázi auth v PAM úplně přeskočí, takže přihlášení klíčem push notifikaci nevyvolá. Pokud chcete klíč i push, nastavte AuthenticationMethods publickey,keyboard-interactive a tuto variantu otestujte zvlášť.
- Heslo putuje mezi serverem a proxy jako PAP. Udržujte toto spojení v management síti, nebo provozujte proxy jako kontejner přímo na hostiteli.
- Stejné uživatelské jméno musí existovat v cílovém RADIUS serveru, ve službě Notakey se zaregistrovaným telefonem a jako lokální nebo adresářový účet na linuxovém stroji. PAM pouze ověřuje; uživatel stále potřebuje účet, ke kterému se přihlásí.
- Ochrana sudo znamená, že každé sudo se ptá telefonu. Díky tomu, že si sudo pamatuje ověření, je to únosné.
- sshd potřebuje UsePAM yes a KbdInteractiveAuthentication yes; obojí je v Debianu/Ubuntu výchozí.
Od nuly k prvnímu schválení
- 01
Nejdříve si připravte nouzový přístup
Než sáhnete do PAM, dejte rootovi nebo vyhrazenému nouzovému administrátorovi silné lokální heslo a ověřte ho na konzoli. Konfigurace se vždy vrací k lokálním heslům, takže tento účet je vaší cestou dovnitř, pokud proxy, RADIUS nebo síť nefungují.
- 02
Nainstalujte pam_radius a nasměrujte ho na proxy
Nainstalujte libpam-radius-auth, do /etc/pam_radius_auth.conf přidejte jeden řádek s adresou proxy, sdíleným tajemstvím odpovídajícím vpn_secret_in na proxy a timeoutem 60 sekund a soubor uzamkněte na práva 0600.
- 03
Zapněte modul v PAM a otestujte z druhého terminálu
Do /etc/pam.d/sshd (a podle potřeby do sudo, su nebo login) přidejte nad include common-auth řádek auth sufficient pam_radius_auth.so, na řádek pam_unix v common-auth doplňte try_first_pass a pak se z druhého terminálu přihlaste přes SSH jako RADIUS uživatel a schvalte push notifikaci. Než zavřete původní relaci, ověřte, že nouzový účet stále funguje.
Časté dotazy
- Hrozí, že se zamknu, když proxy nebo RADIUS vypadne?
- Nehrozí, pokud si ponecháte nouzového administrátora s lokálním heslem. Modul pam_radius je nastaven jako sufficient, takže cokoli jiného než Access-Accept propadne do běžné kontroly lokálního hesla.
- Vyvolá přihlášení SSH klíčem push notifikaci?
- Ne. Přihlášení veřejným klíčem fázi auth v PAM úplně přeskočí. Pokud chcete klíč i push, nastavte AuthenticationMethods publickey,keyboard-interactive a tuto variantu otestujte zvlášť.
- Které linuxové distribuce návod pokrývá?
- Debian a Ubuntu s balíčkem libpam-radius-auth. V distribucích z rodiny RHEL se modul jmenuje pam_radius a soubory PAM mají stejné uspořádání v /etc/pam.d/.