Zapory Palo Alto Networks potrafią przekazywać logowania do VPN GlobalProtect do serwera RADIUS. Notakey auth-proxy nie potrzebuje niczego więcej: znajduje się na ścieżce RADIUS i przepuszcza logowanie dopiero wtedy, gdy użytkownik potwierdzi je w swoim telefonie.
Zwykle pada zastrzeżenie dotyczące samego serwera RADIUS. Wiele zespołów go nie utrzymuje, a stawianie FreeRADIUS czy Microsoft NPS tylko po to, by dodać drugi składnik, to osobny projekt. Ten przewodnik korzysta zamiast tego z wtyczki RADIUS dostarczanej z urządzeniem on-premise Notakey, dzięki czemu całym zapleczem jest samo urządzenie: proxy, RADIUS i potwierdzenie w telefonie w jednym miejscu.
Sami nie testowaliśmy zapory Palo Alto w laboratorium. Opisane niżej ustawienia Palo Alto pochodzą z dokumentacji producenta, do której podajemy odnośniki. Zapora komunikuje się z auth-proxy przez standardowy RADIUS, tak samo jak koncentratory VPN z naszych pozostałych przewodników.
Jak to działa
GlobalProtect app ──▶ Palo Alto portal/gateway ──RADIUS──▶ Notakey auth-proxy ──RADIUS──▶ RADIUS plugin
│
└──▶ approval request ──▶ user's phone
- Użytkownik łączy się przez GlobalProtect, podając nazwę użytkownika i hasło.
- Zapora wysyła żądanie RADIUS do auth-proxy na urządzeniu.
- Proxy przekazuje sprawdzenie hasła do wtyczki RADIUS. Błędne hasło zostaje od razu odrzucone.
- Jeśli hasło jest poprawne, proxy wysyła prośbę o potwierdzenie na telefon użytkownika i utrzymuje otwartą wymianę RADIUS, dopóki użytkownik nie zdecyduje, domyślnie przez 30 sekund.
- Approve → zapora otrzymuje Access-Accept. Deny lub brak odpowiedzi → logowanie zostaje odrzucone.
Co wtyczka zmienia w kwestii hasła
Zanim wybiorą Państwo wtyczkę, warto rozważyć pewien kompromis. Wtyczka nie sprawdza hasła użytkownika z katalogu. Akceptuje albo jedno globalne hasło, wspólne dla wszystkich, albo krótką listę haseł przypisanych do poszczególnych użytkowników, przechowywaną w konfiguracji wtyczki (Wtyczka usługi RADIUS).
W praktyce oznacza to, że to potwierdzenie w telefonie chroni logowanie: prośba trafia na telefon zarejestrowany dla danej nazwy użytkownika, a osoba, która go trzyma, widzi, co zatwierdza. Przy haśle globalnym krok hasła jest wspólną bramką, a nie drugim, indywidualnym sekretem każdego użytkownika.
Jeśli Państwa polityka lub audytor oczekuje, że jednym z dwóch składników będzie hasło z katalogu, należy zamiast wtyczki skierować auth-proxy na serwer RADIUS, który sprawdza hasła w Active Directory, np. Microsoft NPS. Cała konfiguracja po stronie Palo Alto opisana w tym przewodniku pozostaje bez zmian; zmieniają się tylko adres docelowy i sekret po stronie proxy, jak opisuje nasz przewodnik VPN 2FA z RADIUS.
Krok 1: Utworzenie aplikacji VPN w Notakey
W panelu Notakey należy utworzyć aplikację (usługę) dla VPN, zarejestrować telefony użytkowników i skopiować Access ID aplikacji.
Nazwa użytkownika wpisana w GlobalProtect musi dotrzeć do proxy dokładnie w takiej postaci, w jakiej została zarejestrowana w Notakey. Warto o tym pamiętać w kroku 4, gdzie Palo Alto może dodać lub usunąć domenę.
Krok 2: Uruchomienie wtyczki RADIUS na urządzeniu
W CLI urządzenia należy wskazać obraz wtyczki, zastąpić domyślny sekret i hasło, a następnie ją uruchomić. Nie wolno pozostawiać wartości domyślnych: są opublikowane w naszej dokumentacji.
ntk cfg setc :plugins.radius.image "notakey/radius-all:latest"
ntk cfg setc :plugins.radius.env.SECRET "<long-random-secret>"
ntk cfg setc :plugins.radius.env.PASSWORD "<global-password>"
ntk plugins update
ntk plugins start
PASSWORD to globalne hasło, które użytkownicy wpisują w GlobalProtect. Aby
zamiast tego nadać wybranym użytkownikom własne hasła, należy dodać
USER1/PASSW1, USER2/PASSW2 i kolejne; pełną listę opcji zawiera
artykuł o wtyczce.
Krok 3: Skierowanie auth-proxy na wtyczkę
Proxy odnajduje wtyczkę po nazwie jej kontenera, radius. Zgodnie z
artykułem o wtyczce po obu stronach należy użyć tego samego sekretu; będzie
go używać również zapora.
ntk cfg set :ap.vpn_port_in "1812"
ntk cfg set :ap.vpn_radius_address "radius"
ntk cfg set :ap.vpn_secret_in "<long-random-secret>"
ntk cfg set :ap.vpn_secret_out "<long-random-secret>"
ntk cfg set :ap.vpn_access_id "<access-id-from-step-1>"
ntk cfg set :ap.vpn_message_ttl "30"
ntk cfg set :ap.message_title "VPN login"
ntk cfg set :ap.message_description "Allow {0} to connect to the VPN?"
ntk ap start
vpn_message_ttl określa, ile czasu użytkownik ma na potwierdzenie. {0} w
opisie zostaje zastąpione nazwą użytkownika. Proxy nasłuchuje żądań RADIUS
na porcie UDP 1812; zapora musi mieć dostęp do urządzenia na tym porcie.
Jedna różnica w porównaniu z innymi VPN: przy GlobalProtect nie należy oczekiwać, że na karcie potwierdzenia pojawi się adres IP użytkownika. Auth-proxy odczytuje adres klienta ze standardowego atrybutu RADIUS przeznaczonego do tego celu, Calling-Station-Id. GlobalProtect nie umieszcza tam adresu IP klienta; wysyła go wyłącznie we własnym, specyficznym dla producenta atrybucie Palo Alto (uwaga SecureAuth na temat tego zachowania). Opis warto więc sformułować tak, by karta nadal mówiła użytkownikowi, co zatwierdza: jaka to usługa i jaka nazwa użytkownika.
Krok 4: Konfiguracja zapory Palo Alto
Ogólne kroki opisuje przewodnik Palo Alto Set Up RADIUS or TACACS+ Authentication. Poniżej ustawienia, które mają znaczenie przy potwierdzeniu w telefonie.
Profil serwera RADIUS (Device → Server Profiles → RADIUS) (opis pól):
- Server: adres urządzenia, port 1812 i sekret z kroku 3.
- Timeout: domyślnie 3 sekundy, co wystarcza na sprawdzenie hasła, ale w żadnym razie nie na to, by człowiek sięgnął po telefon. Dopuszczalny zakres to 1–120 sekund, a sama dokumentacja Palo Alto zaleca przy konfiguracjach wieloskładnikowych, by dać użytkownikom wystarczająco dużo czasu na odpowiedź. Warto ustawić wartość z dużym zapasem powyżej 30-sekundowego okna proxy, np. 60.
- Retries: domyślnie 3. Przy długim limicie czasu wystarczy 1. Jeśli zapora mimo to ponownie wyśle żądanie, auth-proxy je rozpozna i zignoruje, więc użytkownik nie otrzyma drugiej prośby o potwierdzenie.
- Authentication Protocol: należy wybrać PAP. Domyślny PEAP-MSCHAPv2 opakowuje logowanie w szyfrowany tunel i w standardowej konfiguracji ukrywa tożsamość użytkownika w zewnętrznej części żądania. Proxy musi odczytać nazwę użytkownika, aby wiedzieć, na czyj telefon wysłać prośbę. PAP to opcja, którą Palo Alto wskazuje dla serwera RADIUS niekorzystającego z EAP ani CHAP. W przypadku PAP protokół RADIUS przesyła nazwę użytkownika otwartym tekstem i ukrywa wyłącznie hasło, korzystając ze wspólnego sekretu (RFC 2865). Połączenie między zaporą a urządzeniem powinno więc przebiegać przez zaufaną sieć, a sekret powinien być długi i losowy.
Profil uwierzytelniania (Device → Authentication Profile):
- Type: RADIUS, z powyższym profilem serwera.
- Username Modifier:
%USERINPUT%przekazuje nazwę użytkownika bez zmian. Jeśli ustawią Państwo User Domain, Palo Alto dopisze tę domenę na początku lub na końcu nazwy albo usunie domenę wpisaną przez użytkownika. Jakikolwiek będzie wynik, musi on odpowiadać nazwie użytkownika zarejestrowanej w Notakey. - Allow List (karta Advanced): domyślnie lista jest pusta, co blokuje
wszystkich. Należy dodać użytkowników lub grupy, które mają się łączyć,
albo
all.
Portal i brama: profil uwierzytelniania należy dodać do ustawień uwierzytelniania klientów w portalu i bramie GlobalProtect, a następnie zatwierdzić zmiany (commit).
Krok 5: Jedno potwierdzenie na połączenie zamiast dwóch
Połączenie GlobalProtect uwierzytelnia się dwukrotnie: raz w portalu i raz w bramie. Gdy oba korzystają z RADIUS, użytkownik dostaje dwie prośby o potwierdzenie przy jednym połączeniu, a to właśnie ten rodzaj szumu, który uczy ludzi zatwierdzać bez czytania.
Rozwiązaniem są pliki cookie Palo Alto do pomijania uwierzytelniania (authentication override) (ustawienia uwierzytelniania portalu). Po pierwszym udanym logowaniu portal wydaje zaszyfrowany plik cookie, który brama akceptuje zamiast ponownie pytać:
- W portalu należy włączyć Generate cookie for authentication override.
- W bramie należy włączyć Accept cookie for authentication override.
- Do szyfrowania i odszyfrowywania pliku cookie portal i brama muszą używać tego samego certyfikatu.
- Czas ważności pliku cookie warto dobrać świadomie. Dopóki plik cookie jest ważny, użytkownik nie jest pytany ponownie, więc długi czas ważności to mniej potwierdzeń, ale też słabsza ochrona w razie kradzieży laptopa.
Testowanie
Proszę połączyć się przez GlobalProtect. Po podaniu hasła na telefon trafia prośba o potwierdzenie z tytułem i opisem ustawionymi w kroku 3. Po naciśnięciu Approve tunel zostaje zestawiony. Następnie warto spróbować jeszcze raz i odrzucić prośbę: połączenie nie może dojść do skutku.
Jeśli logowania kończą się niepowodzeniem nawet przy szybkim potwierdzeniu, w pierwszej kolejności należy sprawdzić limity czasu:
- limit czasu w profilu serwera RADIUS na zaporze, który musi być dłuższy niż 30-sekundowe okno proxy;
- własny limit czasu połączenia GlobalProtect. Administratorzy na forum
społeczności Palo Alto piszą, że zwiększają go przy logowaniach
wieloskładnikowych
(wątek na forum).
Jeśli potwierdzenia pod koniec okna kończą się niepowodzeniem, a szybkie
działają, to najpewniej właśnie tu leży przyczyna; należy zwiększyć ten
limit czasu albo skrócić
vpn_message_ttl.
Czego to nie obejmuje
- Logowań przekazywanych przez strony phishingowe. Potwierdzenie w telefonie sprawia, że wykradzione lub odgadnięte hasło samo już nie wystarcza. Nie zatrzymuje jednak atakującego, który w czasie rzeczywistym przepuszcza prawdziwe logowanie przez fałszywą stronę; robią to tylko metody powiązane z witryną, takie jak klucze FIDO. Różnicę wyjaśniamy w naszym artykule o zmęczeniu MFA i atakach pośrednika.
- Ekspozycji samej zapory. Dlaczego logowanie do VPN lub konsoli administracyjnej samym hasłem jest problemem i co naprawić w pierwszej kolejności, opisujemy w naszym artykule o FortiBleed. Te wnioski dotyczą zapór każdego producenta.
Wypróbuj demo na żywo, aby w około dwie minuty zatwierdzić logowanie z własnego telefonu, lub poproś o prezentację, a pomożemy zaplanować pilotaż GlobalProtect.