Esta guía añade autenticación de dos factores confirmada con un toque en el teléfono a una VPN que se autentica por RADIUS. El auth-proxy de Notakey se sitúa entre el concentrador VPN y el servidor RADIUS: reenvía la comprobación de la contraseña a RADIUS como de costumbre, envía una notificación push de aprobación al teléfono del usuario y solo devuelve Access-Accept a la VPN cuando ambas cosas se cumplen.
Como el proxy habla RADIUS estándar por ambos lados, funciona con casi cualquier servidor RADIUS —FreeRADIUS, Microsoft NPS, el User Manager nativo de MikroTik o el propio plugin RADIUS de Notakey— y con cualquier concentrador VPN que pueda apuntar a un servidor RADIUS.
Cómo funciona
VPN concentrator ──RADIUS──▶ Notakey auth-proxy ──RADIUS──▶ your RADIUS server
│
└──▶ push notification ──▶ user's phone
- El usuario se conecta a la VPN con su nombre de usuario y su contraseña.
- El concentrador envía la petición RADIUS al auth-proxy (no directamente a su servidor RADIUS).
- El proxy reenvía la petición al servidor RADIUS de destino. Si la comprobación de la contraseña falla, el inicio de sesión se rechaza de inmediato.
- Si la contraseña es correcta, el proxy envía una notificación push de
aprobación al teléfono del usuario y mantiene abierto el intercambio
RADIUS mientras el usuario responde: por defecto, hasta 30 segundos
(
vpn_message_ttl). - Aprobar → vuelve Access-Accept a la VPN. Denegar o agotar el tiempo → rechazo.
El paso 4 tiene una consecuencia importante: el tiempo de espera del cliente RADIUS de su VPN debe ser al menos tan largo como la ventana de aprobación, es decir, al menos 30 segundos. La mayoría de los clientes RADIUS usan por defecto unos pocos segundos o menos, porque una simple comprobación de contraseña responde al instante; aquí una persona tiene que sacar el teléfono.
Requisitos
- Un Notakey Authentication Server: el nivel gratuito en la nube en signup.notakey.com o el appliance on-premise
- Un servidor RADIUS (o use el plugin RADIUS de Notakey, más abajo)
- Una VPN que se autentique contra RADIUS
- El mismo nombre de usuario en el servicio de Notakey, en RADIUS y en la VPN: el proxy lo usa para dirigir la notificación push
Paso 1: cree la aplicación de la VPN
En el panel de Notakey, cree una aplicación (servicio) para la VPN, registre los teléfonos de los usuarios y copie el Access ID de la aplicación: el UUID que pegará en la configuración del proxy que aparece a continuación.
Paso 2: configure el auth-proxy
Appliance on-premise: el proxy integrado
El appliance incluye el auth-proxy de serie. Configúrelo desde la CLI del appliance con un único 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
Después, arranque el servicio:
ntk ap start
Qué significa cada campo:
| Campo | Significado |
|---|---|
vpn_port_in |
Puerto en el que el proxy escucha las peticiones RADIUS de su VPN |
vpn_port_out |
Puerto de su servidor RADIUS de destino |
vpn_radius_address |
Dirección de su servidor RADIUS de destino |
vpn_secret_in |
Secreto compartido entre su VPN y el proxy |
vpn_secret_out |
Secreto compartido entre el proxy y su servidor RADIUS |
vpn_access_id |
El Access ID de la aplicación del paso 1 |
vpn_message_ttl |
Segundos que tiene el usuario para aprobar (30 es un valor por defecto sensato) |
message_title / message_description |
Lo que muestra la push: {0} se sustituye por el nombre de usuario |
Appliance en la nube: el proxy en Docker
Con un servidor Notakey alojado en la nube, ejecute el mismo proxy como contenedor dentro de su propia red, delante de su servidor 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
Las mismas piezas, con otro empaquetado: NOTAKEY_HOST es la URL de la API de
su instancia en la nube, DOWNSTREAM_ADDRESS es su servidor RADIUS y los dos
secretos se corresponden con el lado de la VPN y el lado de RADIUS,
respectivamente.
La referencia completa de ambas variantes —incluido un instalador MSI para ejecutar el proxy en Windows, los requisitos de conectividad de red y la ubicación de los registros— está en el manual de Authentication Proxy.
Paso 3: ¿aún no tiene servidor RADIUS? Use el nuestro
Si todavía no ejecuta RADIUS, no necesita montar uno solo para esto:
- Plugin RADIUS de Notakey: el appliance incluye un plugin de servicio RADIUS (basado en FreeRADIUS). Se autentica contra los usuarios ya definidos en su servicio de Notakey, de modo que no hay una base de datos de usuarios RADIUS aparte que mantener; la configuración se describe en nuestro artículo de la base de conocimiento Plugin de servicio RADIUS (sin configurar usuarios).
- MikroTik User Manager: si su VPN ya termina en un MikroTik, su paquete nativo User Manager funciona como servidor RADIUS de destino.
- Cualquier RADIUS corporativo ya existente —FreeRADIUS, Microsoft NPS y similares— funciona sin cambios; el proxy es transparente para él.
Paso 4: apunte su VPN al proxy
Reconfigure el cliente RADIUS del concentrador VPN: el mismo secreto que
vpn_secret_in, pero ahora la dirección del servidor es el proxy, no el
servidor RADIUS. Y aumente el tiempo de espera.
En un MikroTik, se ve así:
/radius
add service=ppp address=<proxy-address> secret=secret_to_radius_server timeout=30s
/ppp aaa
set use-radius=yes
El timeout=30s importa. El tiempo de espera RADIUS por defecto de MikroTik
es de 300 milisegundos: perfecto para comprobar una contraseña, inútil para una
aprobación humana. Póngalo en al menos 30 segundos (coincidiendo con
vpn_message_ttl), o los inicios de sesión fallarán antes de que el usuario
pueda siquiera echar mano del teléfono. La misma regla se aplica a la
configuración del cliente RADIUS de cualquier otro fabricante.
Pruébelo
Conéctese a la VPN. La comprobación de la contraseña pasa y la push llega al teléfono —también a la pantalla de bloqueo—, de modo que el usuario ni siquiera necesita tener la aplicación abierta:

Al abrirla se muestra la petición completa —quién inicia sesión y desde qué dirección IP—, con una cuenta atrás mientras el proxy mantiene abierto el intercambio RADIUS:

La conexión solo se completa tras pulsar Approve. Y esta pantalla es la recompensa de seguridad de toda la configuración: un usuario que recibe esta push mientras no se está conectando a la VPN está viendo a otra persona usar su contraseña —desde una IP que puede ver— y un solo toque en Deny detiene el inicio de sesión y deja un rastro de auditoría. Si los inicios de sesión agotan el tiempo incluso cuando aprueba rápido, revise primero el tiempo de espera del cliente RADIUS: es el error más habitual en esta configuración.
Guías relacionadas
- 2FA de inicio de sesión en routers MikroTik: el mismo proxy, apuntado al propio inicio de sesión WinBox/SSH del router
- Linux SSH 2FA con pam_radius: el mismo proxy protegiendo SSH, sudo y su
- MikroTik VPN 2FA: la configuración completa basada en script: una alternativa con un único router y sin RADIUS en ningún sitio
- Windows Credential Provider para escritorio remoto