Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram Bot

In diesem Artikel wird die Einrichtung eines OpenVPN-Servers beschrieben, um die Zwei-Faktor-Authentifizierung mit einem Telegram-Bot zu aktivieren, der bei der Verbindung eine Bestätigungsanfrage sendet.

OpenVPN ist ein weit verbreiteter, kostenloser VPN-Server mit Open Source, der häufig für den sicheren Zugriff von Mitarbeitern auf interne Ressourcen der Organisation verwendet wird.

Bei der Authentifizierung für die Verbindung zu einem VPN-Server wird in der Regel eine Kombination aus einem Schlüssel und einem Benutzername/Passwort verwendet. Hierbei verwandelt das auf dem Client gespeicherte Passwort die gesamte Kombination in einen einzelnen Faktor, der keinen angemessenen Sicherheitslevel bietet. Ein Angreifer, der Zugriff auf den Client-Computer erhält, hat auch Zugriff auf den VPN-Server. Besonders gilt dies für Verbindungen von Windows-Geräten.

Die Verwendung eines zweiten Faktors reduziert das Risiko unbefugten Zugriffs um 99 % und macht den Verbindungsprozess für die Benutzer keineswegs komplizierter.

Zunächst sei erwähnt, dass zur Implementierung die Anbindung an den externen Authentifizierungsserver multifactor.ru erforderlich ist, welcher für eigene Bedürfnisse den kostenlosen Tarif nutzen kann.

Funktionsweise

  1. OpenVPN verwendet das Plugin openvpn-plugin-auth-pam zur Authentifizierung.
  2. Das Plugin überprüft das Benutzerpasswort auf dem Server und fordert den zweiten Faktor über das RADIUS-Protokoll im Multi-Faktor-Service an.
  3. Multifactor sendet über den Telegram-Bot eine Nachricht an den Benutzer zur Bestätigung des Zugriffs.
  4. Der Benutzer bestätigt die Zugriffsanfrage im Telegram-Chat und verbindet sich mit dem VPN.

Installation des OpenVPN-Servers.

Im Internet gibt es zahlreiche Artikel, die den Prozess der Installation und Konfiguration von OpenVPN beschreiben, weshalb wir diese nicht duplizieren werden. Wenn Sie Hilfe benötigen, finden Sie am Ende des Artikels einige Links zu Schulungsmaterialien.

Konfiguration des Multifaktors.

Gehen Sie zu dem Verwaltungssystem für Multifaktor, navigieren Sie zum Abschnitt "Ressourcen" und erstellen Sie ein neues VPN.
Nach der Erstellung stehen Ihnen zwei Parameter zur Verfügung: NAS-Identifikator und Geteiltes Geheimnis, diese werden für die weitere Konfiguration benötigt.

Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram Bot

Gehen Sie im Abschnitt "Gruppen" zu den Einstellungen der Gruppe "Alle Benutzer" und entfernen Sie das Häkchen bei "Alle Ressourcen", damit nur Benutzer einer bestimmten Gruppe auf den VPN-Server zugreifen können.

Erstellen Sie eine neue Gruppe "VPN-Benutzer", deaktivieren Sie alle Authentifizierungsmethoden außer Telegram und legen Sie fest, dass die Benutzer Zugang zur erstellten VPN-Ressource haben.

Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram Bot

Im Abschnitt "Benutzer" erstellen Sie Benutzer, die Zugang zum VPN haben, fügen Sie sie zur Gruppe "VPN-Benutzer" hinzu und senden Sie ihnen den Link zur Einrichtung der Zwei-Faktor-Authentifizierung. Der Benutzername sollte mit dem Benutzernamen auf dem VPN-Server übereinstimmen.

Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram Bot

OpenVPN-Server einrichten

, die sich im Projektordner befindet /etc/openvpn/server.conf und fügen Sie das Plugin zur Authentifizierung mit dem PAM-Modul hinzu.

plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpn

Das Plugin kann sich im Verzeichnis befinden, /usr/lib/openvpn/plugins/ oder /usr/lib64/openvpn/plugins/ je nach Ihrem System.

Danach müssen Sie das Modul pam_radius_auth installieren.

$ sudo yum install pam_radius

Öffnen Sie die Datei zur Bearbeitung /etc/pam_radius.conf und geben Sie die Adresse des RADIUS-Servers von Multifaktor an.

radius.multifactor.ru   shared_secret   40

wo:

  • radius.multifactor.ru ist die Adresse des Servers.
  • shared_secret stammt aus dem entsprechenden Parameter der VPN-Einstellungen.
  • 40 Sekunden ist der Timeout für die Anfrage mit großzügigem Puffer.

Andere Server müssen gelöscht oder auskommentiert werden (setzen Sie am Anfang ein Semikolon).

Erstellen Sie dann eine Datei für den Diensttyp openvpn.

$ sudo vi /etc/pam.d/openvpn

und fügen Sie Folgendes ein:

auth    required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth    substack     password-auth
account substack     password-auth

Die erste Zeile bindet das PAM-Modul pam_radius_auth mit den folgenden Parametern ein:

  • skip_passwd — verhindert die Übertragung des Multi-Faktor-Passworts an den RADIUS-Server (der Benutzer muss es nicht kennen).
  • client_id — ersetzen Sie [NAS-Identifier] durch den entsprechenden Parameter aus den VPN-Ressourceneinstellungen.
    Alle möglichen Parameter sind in der Dokumentation zum Modul beschrieben..

Die zweite und dritte Zeile enthalten die systematische Überprüfung von Login, Passwort und Benutzerrechten auf Ihrem Server zusammen mit dem zweiten Authentifizierungsfaktor.

Starten Sie OpenVPN neu.

$ sudo systemctl restart openvpn@server

Client-Konfiguration

Aktivieren Sie in der Konfigurationsdatei des Clients die Abfrage von Login und Passwort des Benutzers.

auth-user-pass

Überprüfung

Starten Sie den Client für OpenVPN, verbinden Sie sich mit dem Server und geben Sie Ihren Login und Ihr Passwort an. Der Telegram-Bot sendet eine Zugriffsanforderung mit zwei Schaltflächen.

Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram Bot

Eine Schaltfläche erlaubt den Zugriff, die andere blockiert.

Jetzt können Sie Ihr Passwort sicher beim Client speichern. Der zweite Faktor schützt Ihren OpenVPN-Server zuverlässig vor unbefugtem Zugriff.

Wenn etwas nicht funktioniert

Überprüfen Sie der Reihe nach, dass Sie nichts übersehen haben:

  • Auf dem OpenVPN-Server gibt es einen Benutzer mit einem festgelegten Passwort.
  • Von dem Server aus ist der Zugang über UDP-Port 1812 zur Adresse radius.multifactor.ru geöffnet.
  • Die Parameter NAS-Identifier und Shared Secret sind korrekt angegeben.
  • Im Multifactor-System gibt es einen Benutzer mit dem gleichen Login, der Zugang zur VPN-Benutzergruppe erhalten hat.
  • Der Benutzer hat die Authentifizierung über Telegram eingerichtet.

Falls Sie OpenVPN zuvor noch nicht konfiguriert haben, lesen Sie bitte den ausführlichen Artikel..

Die Anleitung enthält Beispiele für CentOS 7.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster