Diese Anleitung ergänzt ein VPN, das über RADIUS authentifiziert, um Zwei-Faktor-Authentifizierung per Fingertipp am Telefon. Der Notakey Auth-Proxy sitzt zwischen Ihrem VPN-Konzentrator und Ihrem RADIUS-Server: Er reicht die Passwortprüfung wie gewohnt an RADIUS weiter, sendet eine Bestätigungsanfrage per Push an das Telefon des Benutzers und gibt Access-Accept erst dann an das VPN zurück, wenn beides erfolgreich war.
Da der Proxy auf beiden Seiten Standard-RADIUS spricht, funktioniert er mit nahezu jedem RADIUS-Server (FreeRADIUS, Microsoft NPS, dem nativen User Manager von MikroTik oder dem RADIUS-Plugin von Notakey) und mit jedem VPN-Konzentrator, der gegen einen RADIUS-Server authentifizieren kann.
So funktioniert es
VPN concentrator ──RADIUS──▶ Notakey auth-proxy ──RADIUS──▶ your RADIUS server
│
└──▶ push notification ──▶ user's phone
- Der Benutzer wählt sich mit Benutzernamen und Passwort ins VPN ein.
- Der Konzentrator schickt die RADIUS-Anfrage an den Auth-Proxy (nicht direkt an Ihren RADIUS-Server).
- Der Proxy leitet die Anfrage an den nachgelagerten Server weiter. Schlägt die Passwortprüfung fehl, wird die Anmeldung sofort abgelehnt.
- Ist das Passwort korrekt, sendet der Proxy eine Bestätigungsanfrage per
Push an das Telefon des Benutzers und hält den RADIUS-Austausch
offen, bis der Benutzer antwortet – standardmäßig bis zu 30 Sekunden
(
vpn_message_ttl). - Bestätigung → Access-Accept geht zurück ans VPN. Ablehnung oder Zeitüberschreitung → Abweisung.
Schritt 4 hat eine wichtige Konsequenz: Der RADIUS-Client-Timeout Ihres VPN muss mindestens so lang sein wie das Bestätigungsfenster, also mindestens 30 Sekunden. Die meisten RADIUS-Clients sind ab Werk auf wenige Sekunden oder weniger eingestellt, weil eine reine Passwortprüfung sofort antwortet; hier muss ein Mensch erst das Telefon zur Hand nehmen.
Voraussetzungen
- Ein Notakey Authentication Server: das kostenlose Cloud-Angebot unter signup.notakey.com oder die On-Premise-Appliance
- Ein RADIUS-Server (oder das RADIUS-Plugin von Notakey, siehe unten)
- Ein VPN, das gegen RADIUS authentifiziert
- Derselbe Benutzername im Notakey-Dienst, in RADIUS und im VPN; über ihn adressiert der Proxy die Push-Benachrichtigung
Schritt 1: Legen Sie die VPN-Anwendung an
Legen Sie im Notakey-Dashboard eine Anwendung (einen Dienst) für das VPN an, registrieren Sie die Telefone der Benutzer und kopieren Sie die Access ID der Anwendung – die UUID, die Sie unten in die Proxy-Konfiguration einfügen.
Schritt 2: Konfigurieren Sie den Auth-Proxy
On-Premise-Appliance: der eingebaute Proxy
Der Auth-Proxy ist in der Appliance bereits enthalten. Konfigurieren Sie ihn über die CLI der Appliance mit einem einzigen JSON-Dokument:
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
Starten Sie anschließend den Dienst:
ntk ap start
Die Bedeutung der einzelnen Felder:
| Feld | Bedeutung |
|---|---|
vpn_port_in |
Port, auf dem der Proxy die RADIUS-Anfragen Ihres VPN entgegennimmt |
vpn_port_out |
Port Ihres nachgelagerten RADIUS-Servers |
vpn_radius_address |
Adresse Ihres nachgelagerten RADIUS-Servers |
vpn_secret_in |
Shared Secret zwischen Ihrem VPN und dem Proxy |
vpn_secret_out |
Shared Secret zwischen dem Proxy und Ihrem RADIUS-Server |
vpn_access_id |
Die Access ID der Anwendung aus Schritt 1 |
vpn_message_ttl |
Sekunden, die der Benutzer zum Bestätigen hat (30 ist ein guter Standardwert) |
message_title / message_description |
Was der Push anzeigt; {0} wird durch den Benutzernamen ersetzt |
Cloud-Appliance: der Proxy im Docker-Container
Mit einem in der Cloud gehosteten Notakey-Server betreiben Sie denselben Proxy als Container in Ihrem eigenen Netzwerk, vor Ihrem 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
Dieselben Bausteine, nur anders verpackt: NOTAKEY_HOST ist die API-URL
Ihrer Cloud-Instanz, DOWNSTREAM_ADDRESS Ihr RADIUS-Server, und die beiden
Secrets gehören zur VPN- beziehungsweise zur RADIUS-Seite.
Die vollständige Referenz zu beiden Varianten, einschließlich eines MSI-Installers für den Betrieb des Proxys unter Windows, der Anforderungen an die Netzwerkkonnektivität und der Speicherorte der Logs, ist das Handbuch zum Authentication Proxy.
Schritt 3: Noch kein RADIUS-Server? Nehmen Sie unseren
Wenn Sie bisher kein RADIUS betreiben, müssen Sie dafür keines aufbauen:
- Notakey RADIUS-Plugin. Die Appliance bringt ein RADIUS-Service-Plugin mit (auf FreeRADIUS-Basis). Es authentifiziert gegen die Benutzer, die in Ihrem Notakey-Dienst bereits angelegt sind; eine separate RADIUS-Benutzerdatenbank müssen Sie also nicht pflegen. Die Einrichtung beschreibt unser Knowledge-Base-Artikel RADIUS-Service-Plugin (keine Benutzerkonfiguration nötig).
- MikroTik User Manager. Terminiert Ihr VPN ohnehin auf einem MikroTik, eignet sich dessen natives User-Manager-Paket als nachgelagerter RADIUS-Server.
- Jeder vorhandene Unternehmens-RADIUS (FreeRADIUS, Microsoft NPS und andere) funktioniert unverändert weiter; für ihn ist der Proxy transparent.
Schritt 4: Richten Sie Ihr VPN auf den Proxy
Konfigurieren Sie den RADIUS-Client des VPN-Konzentrators um: dasselbe
Secret wie vpn_secret_in, aber als Serveradresse jetzt der Proxy,
nicht der RADIUS-Server. Und erhöhen Sie den Timeout.
Auf einem MikroTik sieht das so aus:
/radius
add service=ppp address=<proxy-address> secret=secret_to_radius_server timeout=30s
/ppp aaa
set use-radius=yes
Das timeout=30s ist entscheidend. Der Standard-RADIUS-Timeout von
MikroTik beträgt 300 Millisekunden: für eine Passwortprüfung völlig
ausreichend, für die Bestätigung durch einen Menschen aussichtslos. Setzen
Sie ihn auf mindestens 30 Sekunden (passend zu vpn_message_ttl), sonst
schlagen Anmeldungen fehl, bevor der Benutzer überhaupt zum Telefon greifen
kann. Dieselbe Regel gilt für die RADIUS-Client-Einstellungen jedes anderen
Herstellers.
Testen Sie es
Wählen Sie sich ins VPN ein. Die Passwortprüfung geht durch, und der Push landet auf dem Telefon – auch auf dem Sperrbildschirm, der Benutzer muss die App also nicht einmal geöffnet haben:

Nach dem Öffnen erscheint die vollständige Anfrage: wer sich anmeldet und von welcher IP-Adresse, mit einem Countdown, während der Proxy den RADIUS-Austausch offen hält:

Die Verbindung kommt erst nach Approve zustande. Und genau dieser Bildschirm ist der sicherheitstechnische Gewinn des ganzen Setups: Ein Benutzer, der diesen Push erhält, während er sich gerade nicht ins VPN einwählt, sieht in diesem Moment einen Fremden, der sein Passwort verwendet, samt der IP-Adresse, von der der Versuch kommt. Ein Tipp auf Deny stoppt die Anmeldung und hinterlässt eine Auditspur. Laufen Anmeldungen selbst dann in den Timeout, wenn Sie schnell bestätigen, prüfen Sie zuerst den RADIUS-Client-Timeout – er ist der häufigste Fehler in diesem Setup.
Verwandte Anleitungen
- 2FA für die MikroTik-Router-Anmeldung: derselbe Proxy, gerichtet auf die WinBox-/SSH-Anmeldung des Routers selbst
- SSH-2FA unter Linux mit pam_radius: derselbe Proxy zum Schutz von SSH, sudo und su
- MikroTik-VPN-2FA – das komplette skriptbasierte Setup: die Alternative mit einem einzigen Router und ganz ohne RADIUS
- Windows Credential Provider für Remotedesktop