Authentification à deux facteurs dans OpenVPN avec le bot Telegram

L'article décrit la configuration d'un serveur OpenVPN pour activer l'authentification à deux facteurs avec un bot Telegram qui enverra une demande de confirmation lors de la connexion.

OpenVPN est un serveur VPN open source gratuit et bien connu, largement utilisé pour organiser un accès sécurisé des employés aux ressources internes de l'organisation.

Comme authentification pour la connexion à un serveur VPN, une combinaison d'une clé et d'un identifiant/mot de passe utilisateur est généralement utilisée. Dans le même temps, le mot de passe stocké sur le client transforme l'ensemble en un seul facteur qui n'offre pas le niveau de sécurité approprié. Un attaquant, ayant accédé à l'ordinateur client, accède également au serveur VPN. Cela est particulièrement vrai pour les connexions à partir de machines exécutant Windows.

L'utilisation du deuxième facteur réduit le risque d'accès non autorisé de 99 % et ne complique pas du tout le processus de connexion pour les utilisateurs.

Permettez-moi de faire une réservation tout de suite : pour la mise en œuvre, vous devrez connecter un serveur d'authentification tiers multifactor.ru, dans lequel vous pourrez utiliser un tarif gratuit pour vos besoins.

Comment ça marche?

  1. OpenVPN utilise le plugin openvpn-plugin-auth-pam pour l'authentification
  2. Le plugin vérifie le mot de passe de l'utilisateur sur le serveur et demande le deuxième facteur via le protocole RADIUS dans le service Multifactor
  3. Multifactor envoie un message à l'utilisateur via le bot Telegram confirmant l'accès
  4. L'utilisateur confirme la demande d'accès dans le chat Telegram et se connecte au VPN

Installer un serveur OpenVPN

Il existe de nombreux articles sur Internet décrivant le processus d'installation et de configuration d'OpenVPN, nous ne les dupliquerons donc pas. Si vous avez besoin d'aide, vous trouverez plusieurs liens vers des tutoriels à la fin de l'article.

Configuration du multifacteur

Aller à Système de contrôle multifactoriel, allez dans la section "Ressources" et créez un nouveau VPN.
Une fois créé, vous aurez deux options qui s'offrent à vous : Identifiant NAS и Secret partagé, ils seront nécessaires pour la configuration ultérieure.

Authentification à deux facteurs dans OpenVPN avec le bot Telegram

Dans la section "Groupes", accédez aux paramètres du groupe "Tous les utilisateurs" et supprimez le drapeau "Toutes les ressources" afin que seuls les utilisateurs d'un certain groupe puissent se connecter au serveur VPN.

Créez un nouveau groupe "Utilisateurs VPN", désactivez toutes les méthodes d'authentification sauf Telegram et indiquez que les utilisateurs ont accès à la ressource VPN créée.

Authentification à deux facteurs dans OpenVPN avec le bot Telegram

Dans la section "Utilisateurs", créez les utilisateurs qui auront accès au VPN, ajoutez-les au groupe "Utilisateurs VPN" et envoyez-leur un lien pour configurer le deuxième facteur d'authentification. La connexion de l'utilisateur doit correspondre à la connexion sur le serveur VPN.

Authentification à deux facteurs dans OpenVPN avec le bot Telegram

Configuration d'un serveur OpenVPN

Ouvrir le fichier /etc/openvpn/server.conf et ajoutez un plugin pour l'authentification à l'aide du module PAM

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

Le plugin peut être situé dans le répertoire /usr/lib/openvpn/plugins/ ou /usr/lib64/openvpn/plugins/ en fonction de votre système.

Ensuite, vous devez installer le module pam_radius_auth

$ sudo yum install pam_radius

Ouvrir le fichier pour le modifier /etc/pam_radius.conf et précisez l'adresse du serveur RADIUS du Multifactor

radius.multifactor.ru   shared_secret   40

où:

  • radius.multifactor.ru — adresse du serveur
  • shared_secret - copie du paramètre de paramètres VPN correspondant
  • 40 secondes - délai d'attente pour attendre une demande avec une grande marge

Les serveurs restants doivent être supprimés ou commentés (mettre un point-virgule au début)

Ensuite, créez un fichier pour openvpn de type service

$ sudo vi /etc/pam.d/openvpn

et écris-le

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

La première ligne connecte le module PAM pam_radius_auth avec les paramètres :

  • skip_passwd - désactive la transmission du mot de passe de l'utilisateur au serveur RADIUS Multifactor (il n'a pas besoin de le connaître).
  • client_id — remplacez [NAS-Identifier] par le paramètre correspondant dans les paramètres des ressources VPN.
    Tous les paramètres possibles sont décrits dans documentation du module.

Les deuxième et troisième lignes incluent la vérification du système de l'identifiant, du mot de passe et des droits d'utilisateur sur votre serveur ainsi qu'un deuxième facteur d'authentification.

Redémarrez OpenVPN

$ sudo systemctl restart openvpn@server

Configuration client

Inclure une demande de connexion utilisateur et de mot de passe dans le fichier de configuration client

auth-user-pass

Проверка

Lancez le client OpenVPN, connectez-vous au serveur, saisissez votre nom d'utilisateur et votre mot de passe. Le bot Telegram enverra une demande d'accès avec deux boutons

Authentification à deux facteurs dans OpenVPN avec le bot Telegram

Un bouton permet l'accès, le second le bloque.

Vous pouvez désormais enregistrer votre mot de passe en toute sécurité sur le client ; le deuxième facteur protégera de manière fiable votre serveur OpenVPN contre tout accès non autorisé.

Si quelque chose ne fonctionne pas

Vérifiez séquentiellement que vous n'avez rien manqué :

  • Il y a un utilisateur sur le serveur avec OpenVPN avec un mot de passe défini
  • Le serveur a accès via le port UDP 1812 à l'adresse radius.multifactor.ru
  • Les paramètres NAS-Identifier et Shared Secret sont correctement spécifiés
  • Un utilisateur avec le même identifiant a été créé dans le système Multifactor et a obtenu l'accès au groupe d'utilisateurs VPN.
  • L'utilisateur a configuré la méthode d'authentification via Telegram

Si vous n'avez jamais configuré OpenVPN auparavant, lisez article étendu.

Les instructions sont faites avec des exemples sur CentOS 7.

Source: habr.com

Ajouter un commentaire