Ten przewodnik dodaje uwierzytelnianie dwuskładnikowe potwierdzane dotknięciem telefonu do sieci VPN, która uwierzytelnia się przez RADIUS. Notakey auth-proxy stoi między koncentratorem VPN a serwerem RADIUS: przekazuje sprawdzenie hasła do RADIUS jak zwykle, wysyła na telefon użytkownika powiadomienie push z prośbą o potwierdzenie i zwraca do VPN Access-Accept dopiero wtedy, gdy powiodą się oba kroki.
Ponieważ proxy mówi po obu stronach standardowym RADIUS, współpracuje z niemal każdym serwerem RADIUS (FreeRADIUS, Microsoft NPS, natywnym User Managerem MikroTika czy własną wtyczką RADIUS od Notakey) oraz z każdym koncentratorem VPN, który potrafi wskazać serwer RADIUS.
Jak to działa
VPN concentrator ──RADIUS──▶ Notakey auth-proxy ──RADIUS──▶ your RADIUS server
│
└──▶ push notification ──▶ user's phone
- Użytkownik łączy się z VPN, podając nazwę użytkownika i hasło.
- Koncentrator wysyła żądanie RADIUS do auth-proxy (a nie bezpośrednio do serwera RADIUS).
- Proxy przekazuje żądanie do docelowego serwera RADIUS. Jeśli sprawdzenie hasła się nie powiedzie, logowanie zostaje natychmiast odrzucone.
- Jeśli hasło jest poprawne, proxy wysyła na telefon użytkownika
powiadomienie push z prośbą o potwierdzenie i utrzymuje otwartą wymianę
RADIUS, dopóki użytkownik nie odpowie, domyślnie do 30 sekund
(
vpn_message_ttl). - Approve → Access-Accept wraca do VPN. Deny lub przekroczenie czasu → odrzucenie.
Krok 4 ma jedną istotną konsekwencję: limit czasu klienta RADIUS w Twoim VPN musi być co najmniej tak długi jak okno na potwierdzenie, czyli co najmniej 30 sekund. Większość klientów RADIUS ma domyślnie kilka sekund lub mniej, ponieważ zwykłe sprawdzenie hasła odpowiada natychmiast; tutaj człowiek musi najpierw sięgnąć po telefon.
Wymagania
- Notakey Authentication Server: darmowy wariant w chmurze pod signup.notakey.com lub urządzenie on-premise
- Serwer RADIUS (albo skorzystaj z wtyczki RADIUS od Notakey; patrz niżej)
- Sieć VPN, która uwierzytelnia się względem RADIUS
- Ta sama nazwa użytkownika w usłudze Notakey, w RADIUS i w VPN (proxy używa jej do zaadresowania powiadomienia push)
Krok 1: Utwórz aplikację VPN
W panelu Notakey utwórz aplikację (usługę) dla VPN, zarejestruj telefony użytkowników i skopiuj Access ID aplikacji, czyli identyfikator UUID, który wkleisz w poniższej konfiguracji proxy.
Krok 2: Skonfiguruj auth-proxy
Urządzenie on-premise: wbudowane proxy
Urządzenie ma auth-proxy już w zestawie. Skonfiguruj je z poziomu CLI urządzenia jednym dokumentem JSON:
ntk cfg set :ap '{
"vpn_port_in": "1812",
"vpn_port_out": "1812",
"vpn_radius_address": "10.0.1.23",
"vpn_secret_in": "secret_to_radius_server",
"vpn_secret_out": "secret_to_radius_server",
"vpn_access_id": "c468f008-485b-b11c-aad9672fbae1",
"vpn_message_ttl": "30",
"message_title": "VPN authentication",
"message_description": "Allow {0} login?"
}' --json-input
Następnie uruchom usługę:
ntk ap start
Znaczenie poszczególnych pól:
| Pole | Znaczenie |
|---|---|
vpn_port_in |
Port, na którym proxy nasłuchuje żądań RADIUS z Twojego VPN |
vpn_port_out |
Port docelowego serwera RADIUS |
vpn_radius_address |
Adres docelowego serwera RADIUS |
vpn_secret_in |
Wspólny sekret między Twoim VPN a proxy |
vpn_secret_out |
Wspólny sekret między proxy a serwerem RADIUS |
vpn_access_id |
Access ID aplikacji z kroku 1 |
vpn_message_ttl |
Liczba sekund na potwierdzenie (30 to rozsądna wartość domyślna) |
message_title / message_description |
Co wyświetla push; {0} zostaje zastąpione nazwą użytkownika |
Urządzenie w chmurze: proxy w Dockerze
Przy serwerze Notakey hostowanym w chmurze uruchom to samo proxy jako kontener w swojej własnej sieci, przed serwerem RADIUS:
docker run --name auth-proxy \
-e NOTAKEY_HOST="https://2fa.your_company.com/api" \
-e NOTAKEY_ACCESS_ID="c468f008-485b-b11c-aad9672fbae1" \
-p 1812:1812/udp \
-e LISTEN_ADDRESS=0.0.0.0 \
-e ADDRESS_SECRET_IN=0.0.0.0:secret_to_radius_server \
-e DOWNSTREAM_ADDRESS=10.0.1.23 \
-e SECRET_OUT=secret_to_radius_server \
notakey/authproxy:latest
Te same elementy, inaczej opakowane: NOTAKEY_HOST to adres URL API Twojej
instancji w chmurze, DOWNSTREAM_ADDRESS to Twój serwer RADIUS, a dwa sekrety
odpowiadają odpowiednio stronie VPN i stronie RADIUS.
Pełną dokumentację obu wariantów (w tym instalator MSI do uruchamiania proxy w systemie Windows, wymagania co do łączności sieciowej oraz lokalizacje logów) znajdziesz w podręczniku Authentication Proxy.
Krok 3: Nie masz jeszcze serwera RADIUS? Skorzystaj z naszego
Jeśli nie masz jeszcze uruchomionego RADIUS, nie musisz stawiać go tylko po to:
- Wtyczka Notakey RADIUS. Urządzenie dostarcza wtyczkę usługi RADIUS (opartą na FreeRADIUS). Uwierzytelnia ona względem użytkowników już zdefiniowanych w Twojej usłudze Notakey, więc nie musisz utrzymywać osobnej bazy użytkowników RADIUS. Konfigurację opisuje nasz artykuł w bazie wiedzy Wtyczka usługi RADIUS (bez potrzeby konfigurowania użytkowników).
- MikroTik User Manager. Jeśli Twój VPN i tak kończy się na urządzeniu MikroTik, jego natywny pakiet User Manager posłuży jako docelowy serwer RADIUS.
- Dowolny istniejący firmowy RADIUS (FreeRADIUS, Microsoft NPS i podobne) działa bez zmian; proxy jest dla niego przezroczyste.
Krok 4: Skieruj VPN na proxy
Przekonfiguruj klienta RADIUS w koncentratorze VPN: ten sam sekret co
vpn_secret_in, ale adres serwera to teraz proxy, a nie serwer RADIUS. I
zwiększ limit czasu.
Na urządzeniu MikroTik wygląda to tak:
/radius
add service=ppp address=<proxy-address> secret=secret_to_radius_server timeout=30s
/ppp aaa
set use-radius=yes
timeout=30s ma znaczenie. Domyślny limit czasu RADIUS w MikroTiku
wynosi 300 milisekund: w sam raz do sprawdzenia hasła, beznadziejnie za mało
do potwierdzenia przez człowieka. Ustaw go na co najmniej 30 sekund (zgodnie z
vpn_message_ttl), inaczej logowania będą kończyć się niepowodzeniem, zanim
użytkownik zdąży sięgnąć po telefon. Ta sama reguła dotyczy ustawień klienta
RADIUS u każdego innego producenta.
Przetestuj to
Połącz się z VPN. Sprawdzenie hasła przechodzi, a powiadomienie push trafia na telefon, również na ekran blokady, więc użytkownik nie musi nawet mieć otwartej aplikacji:

Po otwarciu widać pełne żądanie: kto się loguje i z jakiego adresu IP, z odliczaniem, podczas gdy proxy utrzymuje otwartą wymianę RADIUS:

Połączenie dochodzi do skutku dopiero po naciśnięciu Approve. I właśnie ten ekran jest tym, co pod względem bezpieczeństwa daje cała ta konfiguracja: użytkownik, który dostaje to powiadomienie, choć akurat nie łączy się z VPN, widzi w tym momencie kogoś obcego posługującego się jego hasłem, wraz z adresem IP, z którego następuje próba – a jedno naciśnięcie Deny zatrzymuje logowanie i zostawia ślad w dzienniku audytu. Jeśli logowania kończą się przekroczeniem czasu nawet wtedy, gdy potwierdzasz szybko, sprawdź najpierw limit czasu klienta RADIUS; to najczęstszy błąd w tej konfiguracji.
Powiązane przewodniki
- 2FA logowania do routera MikroTik: to samo proxy skierowane na własne logowanie routera przez WinBox/SSH
- Linux SSH 2FA z pam_radius: to samo proxy chroniące SSH, sudo i su
- MikroTik VPN 2FA – kompletna konfiguracja oparta na skrypcie: alternatywa z jednym routerem i całkowicie bez RADIUS
- Windows Credential Provider dla pulpitu zdalnego