Ez az útmutató telefonos érintéssel jóváhagyható kétfaktoros hitelesítést ad egy RADIUS-on keresztül hitelesítő VPN-hez. A Notakey auth-proxy a VPN-koncentrátor és a RADIUS-szerver közé épül be: a jelszóellenőrzést a szokásos módon továbbítja a RADIUS felé, jóváhagyási kérést küld a felhasználó telefonjára, és csak akkor ad Access-Accept választ a VPN-nek, ha mindkettő sikeres.
Mivel a proxy mindkét oldalán szabványos RADIUS-t beszél, szinte bármilyen RADIUS-szerverrel működik (FreeRADIUS, Microsoft NPS, a MikroTik beépített User Managere vagy a Notakey saját RADIUS-bővítménye), és bármilyen VPN-koncentrátorral, amely RADIUS-szerverre tud mutatni.
Hogyan működik
VPN concentrator ──RADIUS──▶ Notakey auth-proxy ──RADIUS──▶ your RADIUS server
│
└──▶ push notification ──▶ user's phone
- A felhasználó a felhasználónevével és jelszavával csatlakozik a VPN-hez.
- A koncentrátor a RADIUS-kérést az auth-proxynak küldi (nem közvetlenül a RADIUS-szervernek).
- A proxy továbbítja a kérést a mögöttes szervernek. Ha a jelszóellenőrzés sikertelen, a bejelentkezést azonnal elutasítja.
- Ha a jelszó rendben van, a proxy jóváhagyási kérést küld a felhasználó
telefonjára, és nyitva tartja a RADIUS-tranzakciót, amíg a felhasználó
válaszol, alapértelmezés szerint legfeljebb 30 másodpercig
(
vpn_message_ttl). - Jóváhagyás → Access-Accept megy vissza a VPN-nek. Elutasítás vagy időtúllépés → a belépés elutasítva.
A 4. lépésnek van egy fontos következménye: a VPN RADIUS-kliensének időkorlátja legalább akkora legyen, mint a jóváhagyási ablak, azaz legalább 30 másodperc. A legtöbb RADIUS-kliens alapértelmezése néhány másodperc vagy még kevesebb, hiszen egy sima jelszóellenőrzés azonnal válaszol; itt viszont egy embernek elő kell vennie a telefonját.
Előfeltételek
- Egy Notakey Authentication Server: az ingyenes felhős csomag a signup.notakey.com címen, vagy a helyben telepíthető készülék
- Egy RADIUS-szerver (vagy használja a Notakey RADIUS-bővítményét, lásd lejjebb)
- Egy VPN, amely RADIUS-szal hitelesít
- Ugyanaz a felhasználónév a Notakey szolgáltatásban, a RADIUS-ban és a VPN-ben: a proxy ez alapján címzi a push értesítést
1. lépés: Hozza létre a VPN-alkalmazást
A Notakey irányítópulton hozzon létre egy alkalmazást (szolgáltatást) a VPN számára, regisztrálja a felhasználók telefonjait, és másolja ki az alkalmazás Access ID-ját: ezt az UUID-t kell majd beillesztenie az alábbi proxykonfigurációba.
2. lépés: Konfigurálja az auth-proxyt
Helyben telepített készülék: a beépített proxy
A készülék az auth-proxyt gyárilag tartalmazza. Konfigurálja a készülék parancssorából, egyetlen JSON-dokumentummal:
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
Majd indítsa el a szolgáltatást:
ntk ap start
Az egyes mezők jelentése:
| Mező | Jelentés |
|---|---|
vpn_port_in |
A port, amelyen a proxy a VPN RADIUS-kéréseit fogadja |
vpn_port_out |
A mögöttes RADIUS-szerver portja |
vpn_radius_address |
A mögöttes RADIUS-szerver címe |
vpn_secret_in |
A VPN és a proxy közötti megosztott titok |
vpn_secret_out |
A proxy és a RADIUS-szerver közötti megosztott titok |
vpn_access_id |
Az 1. lépésben kimásolt alkalmazás-Access ID |
vpn_message_ttl |
Ennyi másodperce van a felhasználónak a jóváhagyásra (a 30 észszerű alapérték) |
message_title / message_description |
Ez jelenik meg a push értesítésben; a {0} helyére a felhasználónév kerül |
Felhős szerver: a proxy Docker-konténerben
Felhőben üzemeltetett Notakey-szerver esetén futtassa ugyanezt a proxyt konténerként a saját hálózatán belül, a RADIUS-szervere előtt:
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
Ugyanazok az építőelemek, más csomagolásban: a NOTAKEY_HOST a felhőpéldány
API URL-je, a DOWNSTREAM_ADDRESS a RADIUS-szervere, a két titok pedig
rendre a VPN-oldalhoz és a RADIUS-oldalhoz tartozik.
Mindkét változat teljes referenciáját (beleértve a proxy Windowson való futtatásához készült MSI-telepítőt, a hálózati kapcsolódási követelményeket és a naplófájlok helyét) az Authentication Proxy kézikönyv tartalmazza.
3. lépés: Nincs még RADIUS-szervere? Használja a miénket
Ha eddig nem üzemeltetett RADIUS-t, nem kell pusztán emiatt felépítenie egyet:
- Notakey RADIUS-bővítmény: a készülék tartalmaz egy (FreeRADIUS-alapú) RADIUS-szolgáltatásbővítményt. Ez a Notakey szolgáltatás már meglévő felhasználóit használja a hitelesítéshez, így nincs külön karbantartandó RADIUS-felhasználói adatbázis; a beállítást a tudásbázisunk RADIUS-szolgáltatásbővítmény (felhasználói konfiguráció nélkül) cikke ismerteti.
- MikroTik User Manager: ha a VPN már most egy MikroTiken végződik, annak beépített User Manager csomagja is megfelel mögöttes RADIUS-szervernek.
- Bármely meglévő vállalati RADIUS (FreeRADIUS, Microsoft NPS és társaik) változtatás nélkül működik; a proxy jelenlétét észre sem veszi.
4. lépés: Irányítsa a VPN-t a proxyra
Konfigurálja át a VPN-koncentrátor RADIUS-kliensét: a titok maradjon a
vpn_secret_in értéke, a szerver címe viszont mostantól a proxy
legyen, nem a RADIUS-szerver. És emelje meg az időkorlátot.
MikroTiken ez így néz ki:
/radius
add service=ppp address=<proxy-address> secret=secret_to_radius_server timeout=30s
/ppp aaa
set use-radius=yes
A timeout=30s nem részletkérdés. A MikroTik alapértelmezett
RADIUS-időkorlátja 300 ezredmásodperc: jelszóellenőrzéshez elég, emberi
jóváhagyáshoz reménytelen. Állítsa legalább 30 másodpercre (a
vpn_message_ttl értékéhez igazítva), különben a bejelentkezések már azelőtt
meghiúsulnak, hogy a felhasználó egyáltalán a telefonjáért nyúlhatna. Ugyanez
a szabály érvényes bármely más gyártó RADIUS-kliensbeállításaira is.
Próbálja ki
Csatlakozzon a VPN-hez. A jelszóellenőrzés lefut, a push értesítés pedig megérkezik a telefonra, akár a lezárt képernyőre is, így a felhasználónak még az alkalmazást sem kell megnyitva tartania:

Megnyitva a teljes kérés látható: ki jelentkezik be és melyik IP-címről, visszaszámlálóval, amíg a proxy nyitva tartja a RADIUS-tranzakciót:

A kapcsolat csak a Jóváhagyás után épül fel. És éppen ez a képernyő az egész megoldás biztonsági hozadéka: az a felhasználó, aki úgy kapja meg ezt az értesítést, hogy nem ő csatlakozik éppen a VPN-hez, azt látja, hogy valaki más használja a jelszavát (méghozzá egy számára is látható IP-címről), és egyetlen érintés az Elutasítás gombon megállítja a belépést, ráadásul naplónyomot is hagy. Ha a bejelentkezések gyors jóváhagyás mellett is időtúllépésre futnak, először a RADIUS-kliens időkorlátját ellenőrizze – ebben az összeállításban ez a leggyakoribb hiba.
Kapcsolódó útmutatók
- MikroTik router-bejelentkezés 2FA-val – ugyanez a proxy, a router saját WinBox/SSH-bejelentkezése elé állítva
- Linux SSH 2FA pam_radius-szal – ugyanez a proxy az SSH, a sudo és a su védelmére
- MikroTik VPN 2FA: a teljes szkriptalapú beállítás – egyrouteres alternatíva, RADIUS nélkül
- Windows Credential Provider távoli asztalhoz