20 stycznia 2026

VPN 2FA z RADIUS – kompletna konfiguracja auth-proxy

Notakey auth-proxy przed dowolnym serwerem RADIUS (FreeRADIUS, NPS czy MikroTik User Manager), by logowanie do VPN wymagało potwierdzenia w telefonie.

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
  1. Użytkownik łączy się z VPN, podając nazwę użytkownika i hasło.
  2. Koncentrator wysyła żądanie RADIUS do auth-proxy (a nie bezpośrednio do serwera RADIUS).
  3. Proxy przekazuje żądanie do docelowego serwera RADIUS. Jeśli sprawdzenie hasła się nie powiedzie, logowanie zostaje natychmiast odrzucone.
  4. 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).
  5. 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:

Powiadomienie push z prośbą o potwierdzenie na ekranie blokady: „Połączenie VPN — zalogować tego użytkownika z tego adresu IP?” (nazwa użytkownika i IP zamazane).

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

Żądanie w aplikacji Notakey Authenticator: nazwa usługi, login i źródłowy adres IP do zweryfikowania, odliczanie oraz przyciski Deny / Approve.

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

← Wszystkie artykuły

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.