20 janvier 2026

La 2FA VPN avec RADIUS – l’installation complète de l’auth-proxy

Placez l’auth-proxy Notakey devant tout serveur RADIUS (FreeRADIUS, NPS, MikroTik User Manager) : chaque connexion VPN exige une approbation sur téléphone.

Ce guide ajoute une authentification à deux facteurs par toucher sur téléphone à un VPN qui s’authentifie via RADIUS. L’auth-proxy Notakey s’intercale entre votre concentrateur VPN et votre serveur RADIUS : il transmet la vérification du mot de passe à RADIUS comme d’habitude, envoie une demande d’approbation sur le téléphone de l’utilisateur, et ne renvoie Access-Accept au VPN que si les deux réussissent.

Comme le proxy parle le RADIUS standard des deux côtés, il fonctionne avec presque n’importe quel serveur RADIUS (FreeRADIUS, Microsoft NPS, le User Manager natif de MikroTik ou le plugin RADIUS de Notakey) et avec tout concentrateur VPN capable de pointer vers un serveur RADIUS.

Comment ça fonctionne

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

                                     └──▶ push notification ──▶ user's phone
  1. L’utilisateur se connecte au VPN avec son nom d’utilisateur et son mot de passe.
  2. Le concentrateur envoie la requête RADIUS à l’auth-proxy (et non directement à votre serveur RADIUS).
  3. Le proxy transmet la requête au serveur RADIUS de destination. Si la vérification du mot de passe échoue, la connexion est rejetée immédiatement.
  4. Si le mot de passe est correct, le proxy envoie une demande d’approbation sur le téléphone de l’utilisateur et maintient l’échange RADIUS ouvert pendant que l’utilisateur répond, jusqu’à 30 secondes par défaut (vpn_message_ttl).
  5. Approve → Access-Accept est renvoyé au VPN. Deny ou expiration → rejet.

L’étape 4 a une conséquence importante : le délai d’expiration du client RADIUS de votre VPN doit être au moins aussi long que la fenêtre d’approbation, soit au moins 30 secondes. La plupart des clients RADIUS sont réglés par défaut sur quelques secondes ou moins, car une simple vérification de mot de passe répond instantanément ; ici, un humain doit sortir son téléphone.

Prérequis

  • Un Notakey Authentication Server : l’offre cloud gratuite sur signup.notakey.com ou l’appliance on-premise
  • Un serveur RADIUS (ou utilisez le plugin RADIUS de Notakey, voir plus bas)
  • Un VPN qui s’authentifie auprès de RADIUS
  • Le même nom d’utilisateur dans le service Notakey, dans RADIUS et dans le VPN : le proxy s’en sert pour adresser la notification push

Étape 1 – Créer l’application VPN

Dans le tableau de bord Notakey, créez une application (service) pour le VPN, enrôlez les téléphones des utilisateurs et copiez l’Access ID de l’application, c’est-à-dire l’UUID que vous collerez dans la configuration du proxy ci-dessous.

Étape 2 – Configurer l’auth-proxy

Appliance on-premise : le proxy intégré

L’appliance est livrée avec l’auth-proxy intégré. Configurez-le depuis la CLI de l’appliance à l’aide d’un seul document 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

Démarrez ensuite le service :

ntk ap start

Signification de chaque champ :

Champ Signification
vpn_port_in Port sur lequel le proxy écoute les requêtes RADIUS de votre VPN
vpn_port_out Port de votre serveur RADIUS de destination
vpn_radius_address Adresse de votre serveur RADIUS de destination
vpn_secret_in Secret partagé entre votre VPN et le proxy
vpn_secret_out Secret partagé entre le proxy et votre serveur RADIUS
vpn_access_id L’Access ID de l’application, issu de l’étape 1
vpn_message_ttl Nombre de secondes dont dispose l’utilisateur pour approuver (30 est une valeur par défaut raisonnable)
message_title / message_description Ce qu’affiche la notification push ; {0} est remplacé par le nom d’utilisateur

Appliance cloud : le proxy conteneurisé

Avec un serveur Notakey hébergé dans le cloud, exécutez le même proxy sous forme de conteneur au sein de votre propre réseau, devant votre serveur 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

Les mêmes composants, un conditionnement différent : NOTAKEY_HOST est l’URL de l’API de votre instance cloud, DOWNSTREAM_ADDRESS votre serveur RADIUS, et les deux secrets correspondent respectivement au côté VPN et au côté RADIUS.

La référence complète pour les deux variantes (notamment un installeur MSI pour exécuter le proxy sous Windows, les exigences de connectivité réseau et l’emplacement des journaux) figure dans le manuel de l’Authentication Proxy.

Étape 3 – Pas encore de serveur RADIUS ? Utilisez le nôtre

Si vous n’exploitez pas déjà RADIUS, inutile d’en monter un rien que pour cela :

  • Plugin RADIUS de Notakey : l’appliance embarque un plugin de service RADIUS (basé sur FreeRADIUS). Il authentifie les utilisateurs déjà définis dans votre service Notakey, si bien qu’il n’y a aucune base d’utilisateurs RADIUS distincte à maintenir ; la mise en place est décrite dans notre article de base de connaissances Plugin de service RADIUS (aucune configuration d’utilisateur requise).
  • MikroTik User Manager : si votre VPN se termine déjà sur un MikroTik, son paquet User Manager natif fait office de serveur RADIUS de destination.
  • Tout RADIUS d’entreprise existant (FreeRADIUS, Microsoft NPS et consorts) fonctionne sans modification ; le proxy est transparent pour lui.

Étape 4 – Pointer votre VPN vers le proxy

Reconfigurez le client RADIUS du concentrateur VPN : même secret que vpn_secret_in, mais l’adresse du serveur est désormais celle du proxy, et non celle du serveur RADIUS. Et augmentez le délai d’expiration.

Sur un MikroTik, cela ressemble à ceci :

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

/ppp aaa
set use-radius=yes

Le timeout=30s a son importance. Le délai RADIUS par défaut de MikroTik est de 300 millisecondes : parfait pour une vérification de mot de passe, sans espoir pour une approbation humaine. Réglez-le sur au moins 30 secondes (en accord avec vpn_message_ttl), sinon les connexions échoueront avant même que l’utilisateur n’ait le temps d’attraper son téléphone. La même règle vaut pour les réglages du client RADIUS de tout autre fournisseur.

Testez

Connectez-vous au VPN. La vérification du mot de passe réussit et la notification push arrive sur le téléphone, y compris sur l’écran verrouillé ; l’utilisateur n’a donc même pas besoin d’avoir l’application ouverte :

La notification push d’approbation arrivant sur l’écran verrouillé : « Connexion VPN — se connecter en tant que cet utilisateur, depuis cette IP ? » (nom d’utilisateur et IP masqués).

En l’ouvrant, on voit la demande complète : qui se connecte et depuis quelle adresse IP, avec un compte à rebours pendant que le proxy maintient l’échange RADIUS ouvert :

La demande dans Notakey Authenticator : nom du service, l’identifiant et l’IP source à vérifier, un compte à rebours et les boutons Deny / Approve.

La connexion n’aboutit qu’après un Approve. Et cet écran est la récompense en matière de sécurité de toute l’installation : un utilisateur qui reçoit cette notification push alors qu’il n’est pas en train de se connecter au VPN a sous les yeux quelqu’un d’autre en train d’utiliser son mot de passe (depuis une IP qu’il peut voir), et un seul appui sur Deny stoppe la connexion et laisse une trace d’audit. Si les connexions expirent même lorsque vous approuvez rapidement, revérifiez d’abord le délai d’expiration du client RADIUS : c’est l’erreur la plus fréquente dans cette configuration.

Guides connexes

← Tous les articles

Votre première connexion sans mot de passe, dès cette semaine

30 minutes avec un ingénieur, pas une présentation commerciale. Ensemble, nous verrons comment lancer un pilote fonctionnel dans votre environnement VPN, SSO ou Windows.