Integracje · Linux SSH

2FA dla SSH w Linuksie z pam_radius i zatwierdzaniem na telefonie

Dla zespołów administrujących serwerami Linux przez SSH, które chcą, by każda powłoka, każde sudo i su wymagały oprócz hasła zatwierdzenia na telefonie. Linux PAM ma standardowy moduł RADIUS; wystarczy skierować go na Notakey auth-proxy, a cała flota serwerów korzysta z tej samej konfiguracji co VPN.

Jak przebiega połączenie

Z PAM przez RADIUS do proxy, nic więcej na serwerze

sshd i sudo uwierzytelniają przez PAM. Moduł pam_radius przesyła nazwę użytkownika i hasło do Notakey auth-proxy przez RADIUS; proxy przekazuje sprawdzenie hasła do Państwa serwera RADIUS, wysyła prośbę o zatwierdzenie na telefon użytkownika i zwraca Access-Accept dopiero wtedy, gdy powiodą się oba kroki. Przewodnik opisuje Debiana i Ubuntu z pakietem libpam-radius-auth; w dystrybucjach z rodziny RHEL moduł jest dostępny jako pam_radius, a pliki PAM znajdują się w tym samym układzie /etc/pam.d/.

Gdy moduł jest ustawiony jako sufficient, Access-Accept od razu loguje użytkownika, a każda inna odpowiedź przechodzi do zwykłego sprawdzenia lokalnego hasła. Awaryjny administrator (break-glass) zachowuje wyłącznie lokalne hasło; wszystkich pozostałych można założyć bez hasła. Jedyną drogą wejścia jest dla nich wtedy RADIUS przez proxy, czyli hasło i zatwierdzenie na telefonie, a lokalnie nie ma niczego, co dałoby się złamać atakiem siłowym.

To samo proxy i ten sam serwer RADIUS, które już chronią VPN i warstwę administracyjną routera, obsługują także serwery Linux. Po stronie proxy nic się nie zmienia.

Co warto wiedzieć przed rozpoczęciem

  • Domyślny limit czasu modułu to 3 sekundy. Należy ustawić co najmniej wartość vpn_message_ttl w proxy (30 sekund); 60 daje wygodny zapas. Natychmiastowe niepowodzenie bez powiadomienia push oznacza zwykle błędny limit czasu lub wspólny sekret.
  • Logowania SSH kluczem publicznym całkowicie pomijają fazę auth w PAM, więc logowanie kluczem nie wywołuje powiadomienia push. Aby wymagać klucza i zatwierdzenia, należy ustawić AuthenticationMethods publickey,keyboard-interactive i przetestować ten wariant osobno.
  • Hasło jest przesyłane jako PAP między serwerem a proxy. To połączenie powinno przebiegać przez sieć zarządzania; można też uruchomić proxy jako kontener na samym hoście.
  • Ta sama nazwa użytkownika musi istnieć w docelowym serwerze RADIUS, w usłudze Notakey z zarejestrowanym telefonem oraz jako konto lokalne lub katalogowe na serwerze Linux. PAM tylko uwierzytelnia; użytkownik nadal potrzebuje konta, na które się loguje.
  • Ochrona sudo oznacza, że każde sudo pyta telefon. Buforowanie poświadczeń w sudo sprawia, że da się z tym żyć.
  • sshd wymaga UsePAM yes i KbdInteractiveAuthentication yes; w Debianie i Ubuntu oba ustawienia są domyślne.

Od zera do pierwszego zatwierdzenia

  1. 01

    Najpierw wyjście awaryjne

    Zanim cokolwiek zmieni się w PAM, należy nadać kontu root lub osobnemu awaryjnemu administratorowi silne lokalne hasło i sprawdzić je na konsoli. Konfiguracja zawsze wraca do lokalnych haseł, więc to konto jest Państwa drogą do środka, gdy proxy, RADIUS lub sieć nie działają.

  2. 02

    Instalacja pam_radius i skierowanie go na proxy

    Należy zainstalować libpam-radius-auth, dodać do /etc/pam_radius_auth.conf jedną linię z adresem proxy, wspólnym sekretem odpowiadającym vpn_secret_in w proxy i limitem czasu 60 sekund, a następnie ograniczyć uprawnienia pliku do trybu 0600.

  3. 03

    Włączenie w PAM i test z drugiego terminala

    Należy dodać auth sufficient pam_radius_auth.so nad wierszem dołączającym common-auth w /etc/pam.d/sshd (oraz w razie potrzeby w sudo, su lub login), dopisać try_first_pass do linii pam_unix w common-auth, a potem zalogować się przez SSH z drugiego terminala nazwą użytkownika z RADIUS i zatwierdzić powiadomienie push. Przed zamknięciem pierwotnej sesji trzeba się upewnić, że konto awaryjne nadal działa.

Najczęściej zadawane pytania

Czy stracę dostęp, jeśli proxy lub RADIUS przestanie działać?
Nie, jeśli zachowają Państwo awaryjne konto administratora (break-glass) z lokalnym hasłem. Moduł pam_radius jest ustawiony jako sufficient, więc każda odpowiedź inna niż Access-Accept przechodzi do zwykłego sprawdzenia lokalnego hasła.
Czy logowanie do SSH kluczem wywołuje powiadomienie push?
Nie. Logowania kluczem publicznym całkowicie pomijają fazę auth w PAM. Aby wymagać klucza i zatwierdzenia na telefonie, należy ustawić AuthenticationMethods publickey,keyboard-interactive i przetestować ten wariant osobno.
Które dystrybucje Linuksa obejmuje przewodnik?
Debiana i Ubuntu z pakietem libpam-radius-auth. W dystrybucjach z rodziny RHEL moduł jest dostępny jako pam_radius, a pliki PAM znajdują się w tym samym układzie /etc/pam.d/.

Przewodniki i dokumentacja

Powiązane produkty

← Wszystkie integracje

Pierwsze logowanie bez hasła jeszcze w tym tygodniu

30 minut rozmowy z inżynierem, a nie prezentacja handlowa. Wspólnie zaplanujemy, jak uruchomić działający projekt pilotażowy w Państwa środowisku VPN, SSO lub Windows.