Comment configurer le serveur VPN Pritunl sur Rocky Linux 8

Pritunl est un serveur VPN et IPsec open-source avec gestion des utilisateurs et mise à l’échelle horizontale pour les petites et grandes organisations. Il donne à l’utilisateur le choix d’utiliser les protocoles OpenVPN et Wireguard. Il est doté d’une interface graphique facile à utiliser et prend en charge les clients sur la plupart des appareils et plateformes. Tout le trafic entre les clients et le serveur est crypté. Pritunl est construit sur MongoDB, une base de données fiable et évolutive qui peut être déployée rapidement et avec une prise en charge intégrée de la réplication, ce qui facilite le déploiement du cluster Pritunl.

Ce tutoriel t’apprendra à installer le serveur VPN Pritunl sur Rocky Linux 8. Nous verrons aussi comment nous connecter au VPN à l’aide d’un client Linux.

Conditions préalables

  1. Un système exécutant Rocky Linux 8 pour héberger le serveur Pritunl.

  2. Un utilisateur non-root avec des privilèges sudo.

  3. Un nom de domaine pointé vers le serveur.

  4. Un système exécutant Rocky Linux 8 en tant que client.

  5. Assure-toi que tout est mis à jour.

    $ sudo dnf update
    
  6. Installe tous les prérequis.

    $ sudo dnf install nano
    

Étape 1 – Configurer le pare-feu

Rocky Linux utilise le pare-feu Firewalld. Vérifie le statut du pare-feu.

$ sudo firewall-cmd --state
running

Cela indique qu’il est en place et fonctionne avec succès.

Le pare-feu fonctionne avec différentes zones et la zone publique est la zone par défaut, que nous utiliserons. Répertorie tous les services et ports actifs sur le pare-feu.

$ sudo firewall-cmd --permanent --list-services

Il devrait afficher la sortie suivante.

dhcpv6-client mdns ssh

Autorise les ports HTTP et HTTPS.

$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https

Vérifie à nouveau l’état du pare-feu.

$ sudo firewall-cmd --permanent --list-all

Tu devrais voir une sortie similaire.

public
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client http https ssh
  ports: 
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Recharge le pare-feu pour activer les modifications.

$ sudo firewall-cmd --reload

Étape 2 – Installe MongoDB

Pritunl est construit sur la base de données MongoDB, donc nous devons d’abord l’installer. Rocky Linux n’est pas livré avec MongoDB, nous devons donc utiliser le dépôt officiel de MongoDB.

Remarque : MongoDB 5.0 ne fonctionne que sur les processeurs les plus récents. Si ton serveur fonctionne sur du matériel plus ancien, tu dois opter pour une version plus ancienne de MongoDB ou passer à un serveur plus récent.

Crée et ouvre le fichier /etc/yum.repos.d/mongodb-org-5.0.repo pour le modifier.

$ sudo nano /etc/yum.repos.d/mongodb-org-5.0.repo

Colle le code suivant dans ce fichier.

[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc

Enregistre le fichier en appuyant sur Ctrl + X et en saisissant Y lorsque tu y es invité une fois terminé.

Installe MongoDB.

$ sudo dnf install mongodb-org

Active et démarre le service MongoDB.

$ sudo systemctl enable mongod --now

Étape 3 – Installer le serveur Pritunl

La première étape consiste à créer le référentiel officiel de Pritunl. Crée et ouvre le fichier /etc/yum.repos.d/pritunl.repo pour le modifier.

$ sudo nano /etc/yum.repos.d/pritunl.repo

Colle le code suivant dans ce fichier.

[pritunl]
name=Pritunl Repository
baseurl=https://repo.pritunl.com/stable/yum/centos/8/
gpgcheck=1
enabled=1

Sauvegarde le fichier en appuyant sur Ctrl + X et en entrant Y lorsque tu y es invité une fois terminé.

Installe d’abord le référentiel Epel qui est requis par Pritunl.

$ sudo dnf install epel-release

Ajoute et importe les clés GPG nécessaires à Pritunl.

$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
$ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp

Installe Pritunl.

$ sudo dnf install pritunl

Vérifie la version de Pritunl.

$ pritunl version
pritunl v1.30.2960.4

Active et démarre le service Pritunl.

$ sudo systemctl enable pritunl --now

Augmenter la limite de fichiers ouverts

Exécute les commandes suivantes pour augmenter la limite de fichiers ouverts sur le serveur. Cela permettra d’éviter tout problème de connexion en cas de charge élevée. Si tu as installé MongoDB sur un serveur séparé, tu dois exécuter ces commandes sur ce serveur.

$ sudo sh -c 'echo "* hard nofile 64000" >> /etc/security/limits.conf'
$ sudo sh -c 'echo "* soft nofile 64000" >> /etc/security/limits.conf'
$ sudo sh -c 'echo "root hard nofile 64000" >> /etc/security/limits.conf'
$ sudo sh -c 'echo "root soft nofile 64000" >> /etc/security/limits.conf'

Étape 4 – Accéder à Pritunl et le configurer

Tu peux lancer Pritunl en entrant http://<serverIP>/ dans ton navigateur. Les navigateurs modernes essaient d’accéder à la version HTTPS de chaque site, tu devras donc contourner l’erreur de confidentialité lancée par le navigateur.

Tu obtiendras l’écran suivant lorsque tu lanceras l’URL pour la première fois.

Écran de configuration de la base de données Pritunl

Il saisit automatiquement l’URI de MongoDB. Pour la clé de configuration, exécute la commande suivante.

$ sudo pritunl setup-key
eacbd641982048fd9a60cdf09f7ebaa3

Saisis la clé générée sur le site Web et clique sur le bouton Enregistrer. Il mettra à jour la base de données et ouvrira l’écran de connexion.

Écran de connexion Pritunl

Exécute la commande suivante pour générer les informations de connexion par défaut.

$ sudo pritunl default-password
[undefined][2021-11-08 22:34:55,255][INFO] Getting default administrator password
Administrator default password:
  username: "pritunl"
  password: "krZQLlH9U7P1"

Saisis les informations de connexion et connecte-toi. Tu obtiendras l’écran de configuration suivant.

Écran de configuration initiale de Pritunl

Saisis un mot de passe fort pour remplacer celui par défaut. Saisis un domaine dans le champLets Encrypt Domain. Pritunl va générer et configurer automatiquement un certificat SSL pour le domaine.

Tu peux maintenant lancer le serveur en utilisant le nom de domaine en tapant https://pritunl.example.com dans ton navigateur.

Étape 5 – Ajouter une organisation, un serveur et des utilisateurs

L’étape suivante consiste à ajouter une Organisation pour ton VPN. Clique sur l’onglet Utilisateurs et clique sur le bouton Ajouter une Organisation.

Pritunl Utilisateurs TAB

Pritunl Add Organisation

Clique sur le bouton Ajouter pour continuer.

L’étape suivante consiste à ajouter un utilisateur. Il y a deux options. Tu peux soit ajouter des utilisateurs un par un, soit les ajouter en vrac. Pour l’instant, nous allons ajouter un seul utilisateur. Clique sur le bouton Ajouter un utilisateur.

Pritunl Add User

Le champ PIN est facultatif et est utilisé si tu vas utiliser l’authentification à deux facteurs. Le code PIN est composé uniquement de chiffres.

Une fois que l’organisation et les utilisateurs ont été définis, va dans l’onglet Serveurs et clique sur le bouton Ajouter un serveur.

Serveur d'appoint Pritunl

Port: Tu peux ajouter n’importe quel port que le serveur utilisera. Assure-toi que le port que tu as spécifié est ouvert à tout le trafic entrant dans le groupe de sécurité.

DNS : Tu peux ajouter soit Google DNS, soit OpenDNS.

Réseau virtuel : Tu peux ajouter une IP privée dans ce champ, mais assure-toi qu’aucune autre ressource ne l’utilise. Les clients se verront attribuer des adresses IP de cette plage.

Réseau virtuel WG : Adresse du réseau WireGuard pour le réseau privé qui sera attribué aux clients WireGuard. Il doit avoir le même bloc CIDR que le réseau virtuel.

Activer WireGuard : Si cette case est cochée, il utilisera WireGuard au lieu d’OpenVPN. Nous utiliserons cependant OpenVPN pour notre tutoriel, alors laisse cette case décochée.

Port WG : Ce port sera utilisé pour les connexions WireGuard. Il ne doit être utilisé que lorsque nous avons activé l’option WireGuard.

Activer Google Authenticator : Pour utiliser la vérification en deux étapes, active cette option. Si cette option est activée sur le serveur, tous les clients sous ce serveur doivent vérifier l’OTP avant de se connecter au VPN à chaque fois.

Activer IPv6: Active les serveurs DNS IPv6. Les clients reçoivent des adresses IPv6 privées.

Clique sur le bouton Ajouter pour terminer.

Clique sur le bouton Add Organization pour lier l’organisation au serveur nouvellement créé.

Joindre l'organisation

Clique sur le bouton Start Server pour lancer le VPN.

Serveur de démarrage Pritunl

Activer le port dans le pare-feu

Pour accepter les connexions du client sur le port VPN, nous devons l’activer dans notre pare-feu.

$ sudo firewall-cmd --permanent --add-port=18412/udp
$ sudo firewall-cmd --reload

Étape 6 – Installer le client Pritunl

Maintenant que notre serveur est opérationnel, il est temps d’installer un client et de se connecter au VPN. Pritunl propose deux types de clients : une ligne de commande et un client GUI.

Pour notre tutoriel, nous utiliserons le client en ligne de commande. Tu ne peux installer qu’un seul type de client sur un système.

Installe le référentiel EPEL nécessaire au client Pritunl.

$ sudo dnf install epel-release

Ajoute le dépôt officiel de Pritunl à ton système Rocky Linux.

$ sudo tee -a /etc/yum.repos.d/pritunl.repo << EOF
[pritunl]
name=Pritunl Stable Repository
baseurl=https://repo.pritunl.com/stable/yum/centos/8/
gpgcheck=1
enabled=1
EOF

Ajoute et importe les clés GPG.

$ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 7568D9BB55FF9E5287D586017AE645C0CF8E292A
$ gpg --armor --export 7568D9BB55FF9E5287D586017AE645C0CF8E292A > key.tmp; sudo rpm --import key.tmp; rm -f key.tmp

Installe le client en ligne de commande.

$ sudo dnf install pritunl-client

Étape 7 – Connecte le client au serveur

Depuis l’onglet des utilisateurs du site du serveur Pritunl, récupère le lien temporaire du profil pour te connecter au client.

Pritunl Get Profile Link Button

Copie le lien URI temporaire de la dernière entrée.

Pritunl Copie de lien de profil temporaire

Saisis la commande suivante sur le terminal du client pour ajouter le profil.

$ pritunl-client add pritunl://example.com/ku/2hd6S6Ug

Veille à ajouter le lien de profil copié précédemment après add dans la commande.

Vérifie la liste des profils ajoutés.

$ pritunl-client list
+----------------------------------+-------------------------+--------------+----------------+----------------+
|                ID                |          NAME           |  ONLINE FOR  | SERVER ADDRESS | CLIENT ADDRESS |
+----------------------------------+-------------------------+--------------+----------------+----------------+
| wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | Disconnected | -              | -              |
+----------------------------------+-------------------------+--------------+----------------+----------------+

Exécute la commande suivante pour te connecter au profil. Tu n’as pas besoin d’utiliser l’ID complet du profil dans la commande. Utilise simplement les 3 premières lettres de l’ID du profil pour t’y référer.

$ pritunl-client start wki --mode=ovpn --password=PINOTP
  • Pour spécifier le mode OPVN, ajoute le drapeau --mode=ovpn dans la commande.
  • Si tu as activé l’option Google Authenticator, tu dois la configurer en utilisant un client Google Authenticator ou Authy.
  • Pour spécifier le pin et le code d’authentification à deux facteurs, utilise le drapeau --password=PINOTP dans la commande. Par exemple, si le code PIN est 54321 et le code OTP est 456789, alors utilise le drapeau --password=54321456789 dans la commande ci-dessus. Si tu n’utilises que le code PIN, alors utilise le drapeau --password=PIN.

Exécute à nouveau la commande list pour vérifier si la connexion fonctionne.

$ pritunl-client list
+----------------------------------+-------------------------+------------+----------------+----------------+
|                ID                |          NAME           | ONLINE FOR | SERVER ADDRESS | CLIENT ADDRESS |
+----------------------------------+-------------------------+------------+----------------+----------------+
| wkinhnnjyz3ybektjbavy8qpecafqp1e | hforgeuser (howtoforge) | 6 secs     | 178.62.233.196 | 192.168.238.2  |
+----------------------------------+-------------------------+------------+----------------+----------------+

Tu as réussi à établir une connexion au VPN de Pritunl.

Ligne de commande Pritunl

Le serveur Pritunl est livré avec un outil de ligne de commande que tu peux utiliser pour effectuer certaines opérations de base.

Réparer la base de données

Tu peux utiliser Pritunl pour réparer la base de données et permettre la récupération d'une base de données corrompue ou incohérente.

Tout d'abord, arrête le serveur Pritunl.

$ sudo systemctl stop pritunl

Répare la base de données.

$ sudo pritunl repair-database

Redémarre le service Pritunl.

$ sudo systemctl start pritunl

La commande repair-database effacera tous les journaux, réinitialisera toutes les adresses IP virtuelles statiques des utilisateurs et mettra tous les serveurs à l'état arrêté.

Réinitialiser les informations d'identification

La commande suivante réinitialisera le nom d'utilisateur et le mot de passe de l'administrateur à pritunl. Elle supprimera également tous les paramètres de connexion unique et d'authentification en deux étapes pour l'utilisateur administrateur s'ils sont activés.

$ sudo pritunl reset-password

Modifier le port de la console Web

Par défaut, Pritunl fonctionne sur le port 443. Si tu veux le modifier, utilise la commande suivante.

$ sudo pritunl set app.server_port 8443

Pritunl exécute un serveur Web sur le port 80 pour la vérification de Let's Encrypt et redirige les demandes HTTP vers HTTPS. Tu peux désactiver la redirection à l'aide de la commande suivante. Cela empêchera également l'utilisation des certificats Let's Encrypt.

$ sudo pritunl set app.redirect_server false

Conclusion

Ceci conclut notre tutoriel sur la configuration et l'utilisation du serveur VPN Pritunl sur un serveur Rocky Linux 8. Si tu veux en savoir plus sur Pritunl, tu peux suivre sa documentation officielle. Si tu as des questions, poste-les dans les commentaires ci-dessous.

Vous aimerez aussi...