Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram-Bot

Der Artikel beschreibt die Einrichtung eines OpenVPN-Servers, um die Zwei-Faktor-Authentifizierung mit einem Telegram-Bot zu ermöglichen, der beim Herstellen einer Verbindung eine Bestätigungsanfrage sendet.

OpenVPN ist ein bekannter, kostenloser Open-Source-VPN-Server, der häufig zur Organisation des sicheren Mitarbeiterzugriffs auf interne Unternehmensressourcen verwendet wird.

Als Authentifizierung für die Verbindung zu einem VPN-Server wird üblicherweise eine Kombination aus einem Schlüssel und einem Benutzer-Login/Passwort verwendet. Gleichzeitig macht das auf dem Client gespeicherte Passwort das gesamte Set zu einem einzigen Faktor, der nicht das richtige Maß an Sicherheit bietet. Nachdem sich ein Angreifer Zugriff auf den Client-Computer verschafft hat, erhält er auch Zugriff auf den VPN-Server. Dies gilt insbesondere für Verbindungen von Computern, auf denen Windows ausgeführt wird.

Die Verwendung des zweiten Faktors reduziert das Risiko eines unbefugten Zugriffs um 99 % und erschwert den Verbindungsprozess für Benutzer überhaupt nicht.

Lassen Sie mich gleich eine Reservierung vornehmen: Für die Implementierung müssen Sie einen Authentifizierungsserver eines Drittanbieters multifactor.ru anbinden, in dem Sie einen kostenlosen Tarif für Ihre Bedürfnisse nutzen können.

Arbeitsprinzip

  1. OpenVPN verwendet zur Authentifizierung das Plugin openvpn-plugin-auth-pam
  2. Das Plugin prüft das Passwort des Benutzers auf dem Server und fordert den zweiten Faktor über das RADIUS-Protokoll im Multifactor-Dienst an
  3. Multifactor sendet per Telegram-Bot eine Nachricht an den Benutzer, die den Zugriff bestätigt
  4. Der Benutzer bestätigt die Zugriffsanfrage im Telegram-Chat und verbindet sich mit dem VPN

Installation eines OpenVPN-Servers

Es gibt viele Artikel im Internet, die den Prozess der Installation und Konfiguration von OpenVPN beschreiben, daher werden wir sie nicht wiederholen. Wenn Sie Hilfe benötigen, finden Sie am Ende des Artikels mehrere Links zu Tutorials.

Einrichten des Multifaktors

Gehen Sie zu Multifaktor-Steuerungssystem, gehen Sie zum Abschnitt „Ressourcen“ und erstellen Sie ein neues VPN.
Nach der Erstellung stehen Ihnen zwei Optionen zur Verfügung: NAS-ID и Geteiltes Geheimnis, sie werden für die spätere Konfiguration benötigt.

Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram-Bot

Gehen Sie im Abschnitt „Gruppen“ zu den Gruppeneinstellungen „Alle Benutzer“ und entfernen Sie das Flag „Alle Ressourcen“, damit nur Benutzer einer bestimmten Gruppe eine Verbindung zum VPN-Server herstellen können.

Erstellen Sie eine neue Gruppe „VPN-Benutzer“, deaktivieren Sie alle Authentifizierungsmethoden außer Telegram und geben Sie an, dass Benutzer Zugriff auf die erstellte VPN-Ressource haben.

Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram-Bot

Erstellen Sie im Abschnitt „Benutzer“ Benutzer, die Zugriff auf das VPN haben sollen, fügen Sie sie der Gruppe „VPN-Benutzer“ hinzu und senden Sie ihnen einen Link zur Konfiguration des zweiten Authentifizierungsfaktors. Die Benutzeranmeldung muss mit der Anmeldung auf dem VPN-Server übereinstimmen.

Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram-Bot

Einrichten eines OpenVPN-Servers

Öffne die Datei /etc/openvpn/server.conf und fügen Sie ein Plugin zur Authentifizierung mithilfe des PAM-Moduls hinzu

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

Das Plugin kann im Verzeichnis liegen /usr/lib/openvpn/plugins/ oder /usr/lib64/openvpn/plugins/ Abhängig von Ihrem System.

Als nächstes müssen Sie das Modul pam_radius_auth installieren

$ sudo yum install pam_radius

Öffnen Sie die Datei zum Bearbeiten /etc/pam_radius.conf und geben Sie die Adresse des RADIUS-Servers des Multifactors an

radius.multifactor.ru   shared_secret   40

wo:

  • radius.multifactor.ru – Serveradresse
  • shared_secret – aus dem entsprechenden VPN-Einstellungsparameter kopieren
  • 40 Sekunden – Zeitüberschreitung beim Warten auf eine Anfrage mit großem Spielraum

Die restlichen Server müssen gelöscht oder auskommentiert werden (ein Semikolon am Anfang einfügen)

Erstellen Sie als Nächstes eine Datei für den Diensttyp openvpn

$ sudo vi /etc/pam.d/openvpn

und schreibe es ein

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

Die erste Zeile verbindet das PAM-Modul pam_radius_auth mit den Parametern:

  • skip_passwd – deaktiviert die Übertragung des Benutzerkennworts an den RADIUS Multifactor-Server (er muss es nicht kennen).
  • client_id – Ersetzen Sie [NAS-Identifier] durch den entsprechenden Parameter aus den VPN-Ressourceneinstellungen.
    Alle möglichen Parameter sind in beschrieben Dokumentation zum Modul.

Die zweite und dritte Zeile umfassen die Systemüberprüfung des Logins, des Passworts und der Benutzerrechte auf Ihrem Server sowie einen zweiten Authentifizierungsfaktor.

Starten Sie OpenVPN neu

$ sudo systemctl restart openvpn@server

Client-Setup

Fügen Sie eine Anfrage nach Benutzeranmeldung und Passwort in die Client-Konfigurationsdatei ein

auth-user-pass

Проверка

Starten Sie den OpenVPN-Client, stellen Sie eine Verbindung zum Server her und geben Sie Ihren Benutzernamen und Ihr Passwort ein. Der Telegram-Bot sendet eine Zugriffsanfrage mit zwei Schaltflächen

Zwei-Faktor-Authentifizierung in OpenVPN mit Telegram-Bot

Eine Taste ermöglicht den Zugriff, die zweite blockiert ihn.

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

Wenn etwas nicht funktioniert

Überprüfen Sie nacheinander, ob Sie nichts verpasst haben:

  • Auf dem Server mit OpenVPN befindet sich ein Benutzer mit festgelegtem Passwort
  • Der Server hat Zugriff über den UDP-Port 1812 auf die Adresse radius.multifactor.ru
  • Die Parameter NAS-Identifier und Shared Secret sind korrekt angegeben
  • Ein Benutzer mit demselben Login wurde im Multifactor-System erstellt und erhält Zugriff auf die VPN-Benutzergruppe
  • Der Benutzer hat die Authentifizierungsmethode über Telegram konfiguriert

Wenn Sie OpenVPN noch nicht eingerichtet haben, lesen Sie erweiterter Artikel.

Die Anleitung erfolgt anhand von Beispielen unter CentOS 7.

Source: habr.com

Kommentar hinzufügen