Im Artikel wird die Einrichtung des 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 offenem Quellcode, der häufig verwendet wird, um den sicheren Zugang von Mitarbeitern zu internen Ressourcen der Organisation zu ermöglichen.
Als Authentifizierung für die Verbindung zum VPN-Server wird in der Regel eine Kombination aus Schlüssel und Benutzername/Passwort verwendet. Dabei verwandelt das auf dem Client gespeicherte Passwort die gesamte Kombination in einen einzigen Faktor, der keinen angemessenen Sicherheitslevel gewährleistet. Ein Angreifer, der Zugriff auf den Client-Computer erhält, hat auch Zugriff auf den VPN-Server. Dies gilt insbesondere für Verbindungen von Maschinen mit Windows-Betriebssystem.
Die Verwendung eines zweiten Faktors reduziert das Risiko eines unbefugten Zugriffs um 99 % und macht den Verbindungsprozess für die Benutzer überhaupt nicht komplizierter.
Ich möchte gleich darauf hinweisen, dass für die Umsetzung die Anbindung an den externen Authentifizierungsserver multifactor.ru erforderlich ist, bei dem Sie einen kostenlosen Tarif für Ihre Bedürfnisse nutzen können.
Funktionsweise
- OpenVPN verwendet das Plugin openvpn-plugin-auth-pam zur Überprüfung der Authentifizierung.
- Das Plugin überprüft das Passwort des Benutzers auf dem Server und fragt den zweiten Faktor über das RADIUS-Protokoll im Multifaktor-Service ab.
- Der Multifaktor sendet über den Telegram-Bot eine Nachricht an den Benutzer zur Bestätigung des Zugriffs.
- Der Benutzer bestätigt die Zugriffsanforderung 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, deshalb werden wir diese nicht wiederholen. Wenn Sie Hilfe benötigen, finden Sie am Ende des Artikels einige Links zu Schulungsmaterialien.
Konfiguration des Multifaktors.
Gehen Sie zu , gehen Sie zu "Ressourcen" und erstellen Sie ein neues VPN.
Nach der Erstellung stehen Ihnen zwei Parameter zur Verfügung: NAS-IDentifier. und Shared Secret., die für die anschließende Konfiguration benötigt werden.

Im Abschnitt "Gruppen" gehen Sie zu den Einstellungen der Gruppe "Alle Benutzer" und entfernen Sie das Häkchen bei "Alle Ressourcen", damit nur Benutzer einer bestimmten Gruppe sich mit dem VPN-Server verbinden können.
Erstellen Sie eine neue Gruppe "VPN-Nutzer", deaktivieren Sie alle Authentifizierungsmethoden außer Telegram und geben Sie an, dass die Benutzer Zugriff auf die erstellte VPN-Ressource haben.

Erstellen Sie im Abschnitt "Benutzer" Nutzer, die Zugriff auf das VPN haben, fügen Sie sie zur Gruppe "VPN-Nutzer" hinzu und senden Sie ihnen einen Link zur Einrichtung der Zwei-Faktor-Authentifizierung. Der Benutzername muss mit dem Namen auf dem VPN-Server übereinstimmen.

Konfiguration des OpenVPN-Servers
Öffnen Sie die Datei /etc/openvpn/server.conf und fügen Sie das Plugin zur Authentifizierung über das PAM-Modul hinzu
plugin /usr/lib64/openvpn/plugins/openvpn-plugin-auth-pam.so openvpnDas Plugin kann sich im Verzeichnis /usr/lib/openvpn/plugins/ oder /usr/lib64/openvpn/plugins/ je nach Ihrem System befinden.
Als nächstes müssen Sie das Modul pam_radius_auth installieren
$ sudo yum install pam_radiusÖffnen Sie zur Bearbeitung die Datei /etc/pam_radius.conf und geben Sie die Adresse des RADIUS-Servers von Multifaktor an
radius.multifactor.ru shared_secret 40{REPOSITORY_ABSOLUTE_PATH}
- radius.multifactor.ru – die Adresse des Servers
- shared_secret – kopieren Sie aus dem entsprechenden Parameter der VPN-Einstellungen
- 40 Sekunden – Timeout für die Anforderung mit großzügigem Puffer
Andere Server müssen gelöscht oder kommentiert werden (setzen Sie zu Beginn ein Semikolon)
Erstellen Sie als Nächstes die Datei für den Diensttyp openvpn
$ sudo vi /etc/pam.d/openvpnund fügen Sie Folgendes ein
auth required pam_radius_auth.so skip_passwd client_id=[NAS-IDentifier]
auth substack password-auth
account substack password-authDie erste Zeile verbindet das PAM-Modul pam_radius_auth mit den Parametern:
- skip_passwd – deaktiviert die Übermittlung des Benutzers Passworts an den Multifaktor-RADIUS-Server (muss er nicht wissen).
- client_id – setzen Sie anstelle von [NAS-Identifier] den entsprechenden Parameter aus den VPN-Ressourceneinstellungen ein.
Alle möglichen Parameter sind in der .
Die zweite und dritte Zeile aktivieren die systematische Überprüfung von Benutzername, Passwort und Rechten auf Ihrem Server zusammen mit dem zweiten Faktor der Authentifizierung.
Starten Sie OpenVPN neu
$ sudo systemctl restart openvpn@serverClient-Konfiguration
Fügen Sie in die Konfigurationsdatei des Clients die Aufforderung zur Eingabe von Benutzername und Passwort ein
auth-user-passÜberprüfung
Starten Sie den Client für OpenVPN, verbinden Sie sich mit dem Server und geben Sie Benutzername und Passwort ein. Von dem Telegram-Bot wird eine Zugriffsanforderung mit zwei Schaltflächen gesendet.

Eine Schaltfläche erlaubt den Zugriff, die andere sperrt.
Jetzt können Sie das Passwort sicher im 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
- Der Zugriff vom Server über den UDP-Port 1812 auf die Adresse radius.multifactor.ru ist geöffnet.
- Die Parameter NAS-Identifier und Shared Secret sind korrekt angegeben.
- Im System Multifaktor wurde ein Benutzer mit demselben Login angelegt und ihm wurde der Zugriff zur Gruppe VPN-Benutzer gewährt.
- Der Benutzer hat die Authentifizierungsmethode über Telegram konfiguriert.
Wenn Sie OpenVPN zuvor nicht konfiguriert haben, lesen Sie .
Die Anleitung enthält Beispiele für CentOS 7.
Quelle: habr.com
