Questa guida aggiunge un’autenticazione a due fattori con un tocco sul telefono a un VPN che si autentica tramite RADIUS. L’auth-proxy Notakey si colloca tra il vostro concentratore VPN e il vostro server RADIUS: inoltra la verifica della password a RADIUS come di consueto, invia una richiesta di approvazione sul telefono dell’utente e restituisce Access-Accept al VPN solo quando entrambi hanno esito positivo.
Poiché il proxy parla il RADIUS standard su entrambi i lati, funziona con quasi tutti i server RADIUS (FreeRADIUS, Microsoft NPS, lo User Manager nativo di MikroTik o il plugin RADIUS di Notakey) e con qualsiasi concentratore VPN in grado di puntare a un server RADIUS.
Come funziona
VPN concentrator ──RADIUS──▶ Notakey auth-proxy ──RADIUS──▶ your RADIUS server
│
└──▶ push notification ──▶ user's phone
- L’utente si connette al VPN con il proprio nome utente e la propria password.
- Il concentratore invia la richiesta RADIUS all’auth-proxy (e non direttamente al vostro server RADIUS).
- Il proxy inoltra la richiesta al server RADIUS di destinazione. Se la verifica della password fallisce, l’accesso viene rifiutato immediatamente.
- Se la password è corretta, il proxy invia una richiesta di approvazione sul
telefono dell’utente e mantiene aperto lo scambio RADIUS mentre l’utente
risponde, per impostazione predefinita fino a 30 secondi (
vpn_message_ttl). - Approve → Access-Accept viene rinviato al VPN. Deny o scadenza → rifiuto.
Il passo 4 ha una conseguenza importante: il timeout del client RADIUS del vostro VPN deve essere lungo almeno quanto la finestra di approvazione: cioè almeno 30 secondi. La maggior parte dei client RADIUS è impostata per impostazione predefinita su pochi secondi o meno, perché una semplice verifica della password risponde all’istante; qui, invece, una persona deve prendere in mano il telefono.
Prerequisiti
- Un Notakey Authentication Server: l’offerta cloud gratuita su signup.notakey.com o l’appliance on-premise
- Un server RADIUS (oppure usate il plugin RADIUS di Notakey; vedi più avanti)
- Un VPN che si autentica tramite RADIUS
- Lo stesso nome utente nel servizio Notakey, in RADIUS e nel VPN (il proxy lo utilizza per indirizzare la notifica push)
Passo 1 – Creare l’applicazione VPN
Nel dashboard Notakey, create un’applicazione (servizio) per il VPN, registrate i telefoni degli utenti e copiate l’Access ID dell’applicazione, l’UUID che incollerete nella configurazione del proxy qui sotto.
Passo 2 – Configurare l’auth-proxy
Appliance on-premise: il proxy integrato
L’appliance viene fornita con l’auth-proxy integrato. Configuratelo dalla CLI dell’appliance con un unico documento 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
Poi avviate il servizio:
ntk ap start
Significato di ciascun campo:
| Campo | Significato |
|---|---|
vpn_port_in |
Porta su cui il proxy ascolta le richieste RADIUS del VPN |
vpn_port_out |
Porta del vostro server RADIUS di destinazione |
vpn_radius_address |
Indirizzo del vostro server RADIUS di destinazione |
vpn_secret_in |
Segreto condiviso tra il vostro VPN e il proxy |
vpn_secret_out |
Segreto condiviso tra il proxy e il vostro server RADIUS |
vpn_access_id |
L’Access ID dell’applicazione, dal passo 1 |
vpn_message_ttl |
Secondi a disposizione dell’utente per approvare (30 è un valore predefinito ragionevole) |
message_title / message_description |
Ciò che mostra la notifica push; {0} viene sostituito con il nome utente |
Appliance cloud: il proxy containerizzato
Con un server Notakey ospitato nel cloud, eseguite lo stesso proxy come container all’interno della vostra rete, davanti al vostro server 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
Gli stessi componenti, un confezionamento diverso: NOTAKEY_HOST è l’URL
dell’API della vostra istanza cloud, DOWNSTREAM_ADDRESS il vostro server
RADIUS, e i due segreti si abbinano rispettivamente al lato VPN e al lato RADIUS.
Il riferimento completo per entrambe le varianti (compreso un installer MSI per eseguire il proxy su Windows, i requisiti di connettività di rete e la posizione dei log) è il manuale dell’Authentication Proxy.
Passo 3 – Ancora nessun server RADIUS? Usate il nostro
Se non gestite già RADIUS, non c’è bisogno di allestirne uno solo per questo:
- Plugin RADIUS di Notakey. L’appliance include un plugin di servizio RADIUS (basato su FreeRADIUS). Autentica gli utenti già definiti nel vostro servizio Notakey, così non c’è alcun database utenti RADIUS separato da mantenere. La configurazione è descritta nel nostro articolo della knowledge base Plugin di servizio RADIUS (nessuna configurazione utente necessaria).
- MikroTik User Manager. Se il vostro VPN termina già su un MikroTik, il suo pacchetto User Manager nativo funge da server RADIUS di destinazione.
- Qualsiasi RADIUS aziendale esistente (FreeRADIUS, Microsoft NPS e simili) funziona senza modifiche; il proxy è trasparente per esso.
Passo 4 – Puntare il vostro VPN verso il proxy
Riconfigurate il client RADIUS del concentratore VPN: stesso segreto di
vpn_secret_in, ma l’indirizzo del server è ora quello del proxy, non
quello del server RADIUS. E aumentate il timeout.
Su un MikroTik, si presenta così:
/radius
add service=ppp address=<proxy-address> secret=secret_to_radius_server timeout=30s
/ppp aaa
set use-radius=yes
Il timeout=30s conta. Il timeout RADIUS predefinito di MikroTik è di 300
millisecondi: adatto a una verifica della password, ma del tutto insufficiente
per un’approvazione umana. Impostatelo su almeno 30 secondi (in linea con
vpn_message_ttl), altrimenti gli accessi falliranno prima ancora che l’utente
possa afferrare il telefono. La stessa regola vale per le impostazioni del
client RADIUS di qualsiasi altro fornitore.
Provatelo
Connettetevi al VPN. La verifica della password ha esito positivo e la notifica push arriva sul telefono, schermata di blocco compresa, così l’utente non ha nemmeno bisogno di avere l’app aperta:

Aprendola si vede la richiesta completa: chi sta effettuando l’accesso e da quale indirizzo IP, con un conto alla rovescia mentre il proxy mantiene aperto lo scambio RADIUS:

La connessione si completa solo dopo un Approve. E questa schermata è il vero guadagno di sicurezza dell’intera installazione: un utente che riceve questa notifica push mentre non si sta connettendo al VPN ha davanti agli occhi qualcun altro che sta usando la sua password, da un IP che può vedere – e un solo tocco su Deny blocca l’accesso e lascia una traccia di audit. Se gli accessi scadono anche quando approvate rapidamente, ricontrollate prima di tutto il timeout del client RADIUS: è l’errore più comune in questa configurazione.
Guide correlate
- 2FA per l’accesso al router MikroTik: lo stesso proxy, puntato sull’accesso WinBox/SSH del router stesso
- 2FA SSH Linux con pam_radius: lo stesso proxy che protegge SSH, sudo e su
- 2FA VPN MikroTik – l’installazione completa basata su script: un’alternativa a router singolo, senza alcun RADIUS
- Windows Credential Provider per il desktop remoto