Tento návod přidává dvoufaktorové ověřování klepnutím na telefonu k VPN, která ověřuje uživatele přes RADIUS. Notakey auth-proxy stojí mezi vaším VPN koncentrátorem a RADIUS serverem: kontrolu hesla předá RADIUSu jako obvykle, na telefon uživatele odešle push notifikaci s žádostí o potvrzení a Access-Accept vrátí VPN jen tehdy, když uspějí obě kontroly.
Protože proxy mluví na obou stranách standardním RADIUSem, funguje s téměř jakýmkoli RADIUS serverem (FreeRADIUS, Microsoft NPS, nativní User Manager na MikroTiku i vlastní RADIUS plugin Notakey) a s jakýmkoli VPN koncentrátorem, který umí ověřovat proti RADIUS serveru.
Jak to funguje
VPN concentrator ──RADIUS──▶ Notakey auth-proxy ──RADIUS──▶ your RADIUS server
│
└──▶ push notification ──▶ user's phone
- Uživatel se připojí k VPN se svým uživatelským jménem a heslem.
- Koncentrátor pošle RADIUS požadavek na auth-proxy (ne přímo na váš RADIUS server).
- Proxy předá požadavek dál na cílový server. Pokud kontrola hesla selže, přihlášení je okamžitě zamítnuto.
- Pokud heslo sedí, proxy odešle na telefon uživatele žádost o potvrzení
a drží RADIUS výměnu otevřenou, dokud uživatel neodpoví, ve
výchozím nastavení až 30 sekund (
vpn_message_ttl). - Potvrzení → do VPN se vrací Access-Accept. Zamítnutí nebo vypršení → odmítnutí.
Krok 4 má jeden důležitý důsledek: timeout RADIUS klienta na vaší VPN musí být přinejmenším stejně dlouhý jako okno pro potvrzení, tedy alespoň 30 sekund. Většina RADIUS klientů má ve výchozím stavu pár sekund nebo méně, protože prostá kontrola hesla odpoví okamžitě; tady ale musí člověk vytáhnout telefon.
Co budete potřebovat
- Notakey Authentication Server: bezplatný cloudový tarif na signup.notakey.com, nebo on-premise zařízení
- RADIUS server (nebo použijte RADIUS plugin Notakey, viz níže)
- VPN, která ověřuje proti RADIUSu
- Stejné uživatelské jméno ve službě Notakey, v RADIUSu i ve VPN; proxy podle něj adresuje push notifikaci
Krok 1 – Vytvořte aplikaci pro VPN
V dashboardu Notakey vytvořte pro VPN aplikaci (službu), zaregistrujte telefony uživatelů a zkopírujte Access ID aplikace: UUID, které níže vložíte do konfigurace proxy.
Krok 2 – Nakonfigurujte auth-proxy
On-premise zařízení: vestavěná proxy
Zařízení má auth-proxy již v sobě. Z CLI zařízení ji nakonfigurujete jedním JSON dokumentem:
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
Pak službu spusťte:
ntk ap start
Význam jednotlivých polí:
| Pole | Význam |
|---|---|
vpn_port_in |
Port, na kterém proxy naslouchá RADIUS požadavkům z vaší VPN |
vpn_port_out |
Port vašeho cílového RADIUS serveru |
vpn_radius_address |
Adresa vašeho cílového RADIUS serveru |
vpn_secret_in |
Sdílené tajemství mezi vaší VPN a proxy |
vpn_secret_out |
Sdílené tajemství mezi proxy a vaším RADIUS serverem |
vpn_access_id |
Access ID aplikace z kroku 1 |
vpn_message_ttl |
Kolik sekund má uživatel na potvrzení (30 je rozumná výchozí hodnota) |
message_title / message_description |
Co se zobrazí v push notifikaci; {0} se nahradí uživatelským jménem |
Cloudové zařízení: proxy v Dockeru
S cloudovým serverem Notakey spustíte tutéž proxy jako kontejner ve vlastní síti, před svým RADIUS serverem:
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
Stejné součástky, jen jiné balení: NOTAKEY_HOST je API URL vaší cloudové
instance, DOWNSTREAM_ADDRESS váš RADIUS server a dvě tajemství se párují
se stranou VPN, respektive se stranou RADIUS serveru.
Úplnou referenci k oběma variantám (včetně MSI instalátoru pro běh proxy na Windows, požadavků na síťovou konektivitu a umístění logů) najdete v manuálu Authentication Proxy.
Krok 3 – Ještě nemáte RADIUS server? Použijte náš
Pokud RADIUS zatím neprovozujete, nemusíte ho kvůli tomu stavět:
- RADIUS plugin Notakey: zařízení obsahuje RADIUS service plugin (postavený na FreeRADIUSu). Ověřuje proti uživatelům, které už máte ve službě Notakey definované, takže žádnou samostatnou databázi RADIUS uživatelů udržovat nemusíte. Nastavení popisuje článek naší znalostní báze RADIUS service plugin (bez konfigurace uživatelů).
- MikroTik User Manager: pokud vaše VPN už končí na MikroTiku, jako cílový RADIUS server poslouží jeho nativní balíček User Manager.
- Jakýkoli stávající firemní RADIUS (FreeRADIUS, Microsoft NPS a podobné) funguje beze změny; proxy je pro něj transparentní.
Krok 4 – Nasměrujte VPN na proxy
Překonfigurujte RADIUS klienta na VPN koncentrátoru: stejné tajemství jako
vpn_secret_in, ale adresou serveru je teď proxy, ne RADIUS server. A
zvyšte timeout.
Na MikroTiku to vypadá takto:
/radius
add service=ppp address=<proxy-address> secret=secret_to_radius_server timeout=30s
/ppp aaa
set use-radius=yes
Na timeout=30s opravdu záleží. Výchozí RADIUS timeout na MikroTiku je
300 milisekund: pro kontrolu hesla dostačující, pro potvrzení člověkem
beznadějně málo. Nastavte alespoň 30 sekund (ve shodě s
vpn_message_ttl), jinak přihlášení selžou dřív, než uživatel stihne
sáhnout po telefonu. Totéž pravidlo platí pro nastavení RADIUS klienta u
kteréhokoli jiného výrobce.
Vyzkoušejte to
Připojte se k VPN. Kontrola hesla projde a na telefon dorazí push, a to i na zamčenou obrazovku, takže uživatel ani nemusí mít aplikaci otevřenou:

Po otevření se zobrazí celý požadavek: kdo se přihlašuje a z jaké IP adresy, s odpočtem, zatímco proxy drží RADIUS výměnu otevřenou:

Připojení se dokončí až po klepnutí na Approve. A právě tato obrazovka je hlavním bezpečnostním přínosem celého nastavení: uživatel, kterému tento push přijde, zatímco se k VPN nepřipojuje, se dívá na někoho cizího s jeho heslem (z IP adresy, kterou má před očima) a jedno klepnutí na Deny přihlášení zastaví a zanechá auditní stopu. Pokud přihlášení vyprší, i když potvrzujete rychle, zkontrolujte nejdřív timeout RADIUS klienta; je to nejčastější chyba v tomto nastavení.
Související návody
- 2FA pro přihlášení do MikroTik routeru: tatáž proxy, nasměrovaná na přihlášení k samotnému routeru přes WinBox/SSH
- 2FA pro SSH na Linuxu s pam_radius: tatáž proxy chránící SSH, sudo a su
- 2FA pro MikroTik VPN – kompletní skriptové nastavení: alternativa s jediným routerem a úplně bez RADIUSu
- Windows Credential Provider pro vzdálenou plochu