2026 m. sausio 20 d.

VPN 2FA per RADIUS – išsamus auth-proxy diegimo vadovas

Notakey auth-proxy prieš bet kurį RADIUS serverį (FreeRADIUS, NPS ar MikroTik User Manager), ir VPN prisijungimui reikės patvirtinimo telefonu.

Šis vadovas prie VPN, kuris autentifikuoja per RADIUS, prideda dviejų veiksnių autentifikavimą vienu telefono paspaudimu. Notakey auth-proxy įsiterpia tarp jūsų VPN koncentratoriaus ir RADIUS serverio: slaptažodžio patikrą, kaip įprasta, persiunčia į RADIUS, į naudotojo telefoną išsiunčia patvirtinimo užklausą ir tik tada, kai pavyksta abu žingsniai, grąžina VPN atsakymą Access-Accept.

Kadangi tarpinis serveris abiejose pusėse bendrauja standartiniu RADIUS protokolu, jis veikia beveik su bet kuriuo RADIUS serveriu (FreeRADIUS, Microsoft NPS, integruotu MikroTik User Manager ar paties Notakey RADIUS papildiniu) ir su bet kuriuo VPN koncentratoriumi, kurį galima nukreipti į RADIUS serverį.

Kaip tai veikia

VPN concentrator ──RADIUS──▶ Notakey auth-proxy ──RADIUS──▶ your RADIUS server

                                     └──▶ push notification ──▶ user's phone
  1. Naudotojas jungiasi prie VPN su savo naudotojo vardu ir slaptažodžiu.
  2. Koncentratorius RADIUS užklausą siunčia į auth-proxy (o ne tiesiai į jūsų RADIUS serverį).
  3. Tarpinis serveris užklausą persiunčia toliau. Jei slaptažodžio patikra nepavyksta, prisijungimas atmetamas iš karto.
  4. Jei slaptažodis teisingas, tarpinis serveris į naudotojo telefoną išsiunčia patvirtinimo užklausą ir laiko RADIUS seansą atvirą, kol naudotojas atsako, pagal numatytuosius nustatymus iki 30 sekundžių (vpn_message_ttl).
  5. Patvirtinus → VPN grąžinamas Access-Accept. Atmetus arba pasibaigus laikui → prisijungimas atmetamas.

Iš 4 žingsnio išplaukia viena svarbi pasekmė: jūsų VPN RADIUS kliento laukimo limitas (timeout) turi būti ne trumpesnis už patvirtinimo langą: bent 30 sekundžių. Daugumos RADIUS klientų numatytoji reikšmė tesiekia kelias sekundes ar mažiau, nes paprasta slaptažodžio patikra atsako akimirksniu; o čia žmogus turi spėti išsitraukti telefoną.

Ko reikės

  • Notakey autentifikavimo serverio: nemokamo debesijos plano adresu signup.notakey.com arba vietinio įrenginio
  • RADIUS serverio (arba naudokite Notakey RADIUS papildinį, žr. toliau)
  • VPN, kuris autentifikuoja per RADIUS
  • To paties naudotojo vardo Notakey servise, RADIUS serveryje ir VPN (pagal jį tarpinis serveris adresuoja tiesioginį „push“ pranešimą)

1 žingsnis. Sukurkite VPN programą

Notakey valdymo skydelyje sukurkite VPN skirtą programą (servisą), užregistruokite naudotojų telefonus ir nusikopijuokite programos Access ID – UUID, kurį toliau įklijuosite į tarpinio serverio konfigūraciją.

2 žingsnis. Sukonfigūruokite auth-proxy

Vietinis įrenginys: integruotas tarpinis serveris

Auth-proxy jau įtrauktas į įrenginio komplektą. Sukonfigūruokite jį įrenginio komandinėje eilutėje vienu JSON dokumentu:

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

Tada paleiskite paslaugą:

ntk ap start

Ką reiškia kiekvienas laukas:

Laukas Reikšmė
vpn_port_in Prievadas, kuriuo tarpinis serveris priima jūsų VPN RADIUS užklausas
vpn_port_out Jūsų RADIUS serverio prievadas
vpn_radius_address Jūsų RADIUS serverio adresas
vpn_secret_in Bendroji paslaptis (shared secret) tarp jūsų VPN ir tarpinio serverio
vpn_secret_out Bendroji paslaptis tarp tarpinio serverio ir jūsų RADIUS serverio
vpn_access_id Programos Access ID iš 1 žingsnio
vpn_message_ttl Kiek sekundžių naudotojas turi patvirtinimui (30 – protinga numatytoji reikšmė)
message_title / message_description Kas rodoma push pranešime; {0} pakeičiamas naudotojo vardu

Debesijos variantas: tarpinis serveris Docker konteineryje

Jei Notakey serveris veikia debesyje, tą patį tarpinį serverį paleiskite kaip konteinerį savo tinkle, priešais savo RADIUS serverį:

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

Tos pačios sudedamosios dalys, tik kitokia pakuotė: NOTAKEY_HOST yra jūsų debesies egzemplioriaus API URL, DOWNSTREAM_ADDRESS – jūsų RADIUS serveris, o dvi paslaptys atitinkamai susiejamos su VPN puse ir RADIUS puse.

Išsamų abiejų variantų aprašą (įskaitant MSI diegimo paketą tarpiniam serveriui Windows aplinkoje, tinklo pasiekiamumo reikalavimus ir žurnalų vietas) rasite Authentication Proxy žinyne.

3 žingsnis. Dar neturite RADIUS serverio? Naudokite mūsų

Jei RADIUS iki šiol nenaudojote, statyti jo vien dėl šio sprendimo nereikia:

  • Notakey RADIUS papildinys. Įrenginio komplekte yra RADIUS paslaugos papildinys (FreeRADIUS pagrindu). Jis autentifikuoja pagal naudotojus, jau aprašytus jūsų Notakey servise, todėl atskiros RADIUS naudotojų duomenų bazės prižiūrėti nereikia. Diegimas aprašytas mūsų žinių bazės straipsnyje RADIUS paslaugos papildinys (naudotojų konfigūruoti nereikia).
  • MikroTik User Manager. Jei jūsų VPN jau baigiasi MikroTik maršrutizatoriuje, jo integruotas User Manager paketas tinka kaip galutinis RADIUS serveris.
  • Bet kuris jau veikiantis įmonės RADIUS (FreeRADIUS, Microsoft NPS ir panašūs) veikia be jokių pakeitimų; tarpinis serveris jam yra skaidrus.

4 žingsnis. Nukreipkite VPN į tarpinį serverį

Perkonfigūruokite VPN koncentratoriaus RADIUS klientą: ta pati paslaptis kaip vpn_secret_in, tačiau serverio adresas dabar – tarpinis serveris, o ne RADIUS serveris. Ir padidinkite laukimo limitą.

MikroTik įrenginyje tai atrodo taip:

/radius
add service=ppp address=<proxy-address> secret=secret_to_radius_server timeout=30s

/ppp aaa
set use-radius=yes

Parametras timeout=30s yra esminis. Numatytasis MikroTik RADIUS laukimo limitas yra 300 milisekundžių: slaptažodžio patikrai to pakanka, bet žmogaus patvirtinimui – beviltiškai mažai. Nustatykite bent 30 sekundžių (kad atitiktų vpn_message_ttl), kitaip prisijungimai žlugs naudotojui dar nespėjus paimti telefono. Ta pati taisyklė galioja bet kurio kito gamintojo RADIUS kliento nustatymams.

Išbandykite

Prisijunkite prie VPN. Slaptažodžio patikra praeina, ir į telefoną atkeliauja push pranešimas. Jis matomas ir užrakintame ekrane, todėl naudotojui net nereikia būti atsidarius programėlės:

Patvirtinimo pranešimas užrakintame ekrane: „VPN ryšys — prisijungti šiuo naudotoju iš šio IP?“ (naudotojo vardas ir IP paslėpti).

Atidarius matoma visa užklausa: kas jungiasi ir iš kokio IP adreso, su atgal skaičiuojamu laiku, kol tarpinis serveris laiko RADIUS seansą atvirą:

Užklausa Notakey Authenticator programėlėje: serviso pavadinimas, tikrintinas prisijungimo vardas ir šaltinio IP, laikmatis bei mygtukai „Atmesti“ ir „Patvirtinti“.

Ryšys užmezgamas tik paspaudus Patvirtinti. Būtent šis ekranas ir yra viso sprendimo saugumo prasmė: naudotojas, gavęs tokį pranešimą tuo metu, kai pats prie VPN nesijungia, mato, kad jo slaptažodžiu naudojasi kažkas kitas iš aiškiai matomo IP adreso – ir vienas paspaudimas ant Atmesti sustabdo prisijungimą bei palieka pėdsaką audito žurnale. Jei prisijungimai baigiasi laiko limitu net patvirtinus greitai, pirmiausia patikrinkite RADIUS kliento laukimo limitą: tai dažniausia šio diegimo klaida.

Susiję vadovai

← Visi įrašai

Pirmasis prisijungimas be slaptažodžio – jau šią savaitę

30 minučių pokalbis su inžinieriumi, o ne pardavimų prezentacija. Kartu suplanuosime, kaip jūsų VPN, SSO ar Windows aplinkoje paleisti veikiantį bandomąjį projektą.