Authentification à deux facteurs dans OpenVPN avec un bot Telegram

Cet 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 gratuit et open source largement connu, couramment utilisé pour organiser un accès sécurisé des employés aux ressources internes de l'organisation.

Pour l'authentification lors de la connexion au serveur VPN, une combinaison de clé et de nom d'utilisateur / mot de passe est généralement utilisée. Cependant, le mot de passe enregistré sur le client transforme l'ensemble en un seul facteur, n'assurant pas un niveau de sécurité adéquat. Un attaquant ayant accès à l'ordinateur client a également accès au serveur VPN. Cela est particulièrement vrai pour les connexions depuis des machines sous Windows.

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

Je tiens à préciser que pour réaliser cela, il est nécessaire de se connecter à un serveur d'authentification tiers multifactor.ru, qui peut être utilisé gratuitement pour vos besoins.

Principe de fonctionnement

  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 au service Multifacteur.
  3. Multifacteur envoie un message à l'utilisateur via le bot Telegram pour confirmer l'accès.
  4. L'utilisateur confirme la demande d'accès dans le chat Telegram et se connecte au VPN.

Installation du serveur OpenVPN.

Il existe de nombreux articles en ligne décrivant le processus d'installation et de configuration d'OpenVPN, nous ne les dupliquerons donc pas. Si vous avez besoin d'aide, à la fin de l'article, vous trouverez quelques liens vers des ressources pédagogiques.

Configuration du Multifacteur.

Connectez-vous à système de gestion du Multifacteur, allez à la section "Ressources" et créez un nouveau VPN.
Après la création, deux paramètres seront disponibles : NAS-IDentifier et Shared Secret, ils seront nécessaires pour la configuration ultérieure.

Authentification à deux facteurs dans OpenVPN avec un bot Telegram

Dans la section "Groupes", allez aux paramètres du groupe "Tous les utilisateurs" et décochez l'option "Tous les ressources" afin que seuls les utilisateurs d'un certain groupe puissent se connecter au serveur VPN.

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

Authentification à deux facteurs dans OpenVPN avec un bot Telegram

Dans la section "Utilisateurs", créez des utilisateurs qui auront accès au VPN, ajoutez-les au groupe "VPN users" et envoyez-leur un lien pour configurer le second facteur d'authentification. Le nom d'utilisateur doit correspondre au nom d'utilisateur sur le serveur VPN.

Authentification à deux facteurs dans OpenVPN avec un bot Telegram

Configuration du serveur OpenVPN

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

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

Le plugin peut se trouver 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

Ouvrez le fichier pour modification /etc/pam_radius.conf et indiquez l'adresse du serveur RADIUS Multifactor.

radius.multifactor.ru shared_secret 40

où :

  • radius.multifactor.ru — adresse du serveur
  • shared_secret — copiez à partir du paramètre correspondant dans les paramètres VPN
  • 40 secondes — délai d'attente de la requête avec une grande marge

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

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

$ sudo vi /etc/pam.d/openvpn

et écrivez-y

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 ne doit pas le connaître).
  • client_id — remplacez [NAS-Identifier] par le paramètre correspondant des paramètres de la ressource VPN.
    Tous les paramètres possibles sont décrits dans la documentation du module..

Les deuxième et troisième lignes incluent la vérification système du nom d'utilisateur, du mot de passe et des droits de l'utilisateur sur votre serveur avec le second facteur d'authentification.

Redémarrez OpenVPN

$ sudo systemctl restart openvpn@server

Configuration du client

Activez dans le fichier de configuration client la demande de nom d'utilisateur et de mot de passe.

auth-user-pass

Vérification

Démarrez le client OpenVPN, connectez-vous au serveur et saisissez votre nom d'utilisateur et votre mot de passe. Un message du bot Telegram demandera l'accès avec deux boutons.

Authentification à deux facteurs dans OpenVPN avec un bot Telegram

Un bouton permet d'accéder, l'autre bloque.

Vous pouvez maintenant enregistrer le mot de passe sur le client, le second facteur protégera efficacement votre serveur OpenVPN contre les accès non autorisés.

Si quelque chose ne fonctionne pas

Vérifiez progressivement que vous n'avez rien oublié :

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

Si vous n'avez pas encore configuré OpenVPN, lisez un article détaillé.

Le guide est réalisé avec des exemples sur CentOS 7.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster