Comment configurer le serveur VPN OpenConnect

Avoir un réseau privé virtuel (VPN) est indispensable à cette ère de la technologie. Les VPN sont devenus de plus en plus cruciaux pour un usage personnel, notamment pour les entreprises et les sociétés. Et si vous hésitez encore sur la solution VPN à choisir, pourquoi ne pas envisager OpenConnect VPN?

OpenConnect VPN est une solution VPN gratuite avec des performances et des fonctionnalités de qualité professionnelle. Et dans ce tutoriel, vous apprendrez comment configurer et vous connecter au serveur VPN OpenConnect (ocserv).

Continuez à lire et éloignez les entités malveillantes de votre réseau!

Prérequis

Ce tutoriel comprend des démonstrations pratiques. Pour suivre, assurez-vous d’avoir les éléments suivants en place:

  • A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
  • Un utilisateur administratif ou un utilisateur non root avec des privilèges sudo/root.
  • A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
  • A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.

Installation du Serveur VPN OpenConnect

Le Serveur VPN OpenConnect est un serveur VPN basé sur SSL et open source pour Linux, disponible sur la plupart des distributions Linux, telles que Debian, Ubuntu, RHEL/CentOS et Fedora.

Le Serveur VPN OpenConnect prend en charge la plupart des clients, du bureau/ordinateur aux appareils mobiles (Android et iOS). De même, le Serveur VPN OpenConnect prend en charge plusieurs backends d’authentification, tels que Radius, OpenID, Kerberos et Smart Card.

Mais avant de tirer parti de ces fonctionnalités, vous devez d’abord installer le Serveur VPN OpenConnect, comme suit:

1. SSH vers votre serveur, et exécutez la commande suivante apt update pour mettre à jour et rafraîchir l’index des packages. Cette commande garantit que vous disposez des dernières informations sur les packages.

sudo apt update
Updating the package repository

2. Ensuite, exécutez la commande apt install suivante pour installer le package ocserv.

sudo apt install ocserv -y

Une fois l’installation terminée, le nouveau service systemd appelé ocserv sera opérationnel et

Installing the OpenConnect VPN Server

3. Maintenant, exécutez les commandes systemctl suivantes pour vous assurer que le service ocserv est en cours d’exécution.

# Vérification que le service ocserv est activé
sudo systemctl is-enabled ocserv
# Vérification que le service ocserv est en cours d'exécution
sudo systemctl status ocserv

Comme vous pouvez le voir dans la sortie, le statut du service ocserv est activé et en cours d’exécution.

Verifying the ocserv service is enabled and running

Génération de certificats SSL/TLS

Avec le serveur VPN OpenConnect installé, l’étape suivante consiste à vous assurer que vous pouvez vous connecter en toute sécurité au serveur VPN OpenConnect. Comment ? La première étape consiste à générer des certificats SSL/TLS via Certbot et LetsEncrypt.

Mais avant de générer des certificats, assurez-vous d’avoir une adresse e-mail pour vous inscrire à LetsEncrypt, et que le nom de domaine est pointé vers l’adresse IP du serveur Debian.

Pour générer des certificats SSL/TLS :

1. Exécutez la commande ci-dessous pour installer certbot sur votre serveur Linux.

sudo apt install certbot -y
Installing Certbot

2. Ensuite, exécutez la commande certbot ci-dessous pour générer des certificats SSL/TLS. Assurez-vous de modifier l’adresse e-mail ([email protected]) et le nom de domaine (vpn.atadomain.io) en conséquence.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. Enfin, exécutez la commande suivante pour vérifier que les certificats SSL/TLS générés existent dans le répertoire de votre domaine.

ls /etc/letsencrypt/live/vpn.atadomain.io

Si cela réussit, vous verrez les clés publique (fullchain.pem) et privée (privkey.pem), comme indiqué ci-dessous.

Verifying the SSL/TLS certificates exist

Configuration du serveur VPN OpenConnect

Même si vous disposez des certificats SSL/TSL, ils resteront inactifs tant que vous n’aurez pas configuré le serveur VPN OpenConnect. Vous modifierez la configuration par défaut du serveur VPN OpenConnect (/etc/ocserv/ocserv.conf) comme suit :

  • Modifiez la méthode d’authentification par défaut.
  • Désactivez l’UDP sur le serveur VPN OpenConnect.
  • Modifiez les certificats SSL/TLS par défaut.
  • Configuration du nom de domaine et d’un réseau interne ou d’une adresse IP pour les clients.

Pour configurer le serveur VPN OpenConnect, suivez les étapes ci-dessous :

1. Tout d’abord, exécutez la commande cp ci-dessous pour sauvegarder la configuration par défaut du serveur VPN OpenConnect (ocserv.conf) dans ocserv.conf.orig stocké dans le répertoire /etc/ocserv.

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

2. Ensuite, ouvrez la configuration du serveur VPN OpenConnect (/etc/ocserv/ocserv.conf) à l’aide de votre éditeur préféré.

3. Modifiez la valeur du paramètre auth en plain[passwd=/etc/ocserv/ocpasswd], comme indiqué ci-dessous. Cela remplace l’authentification par défaut avec le fichier de mots de passe (Pluggable Authentication Modules (PAM)).

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Changing the default authentication to a password file

4. Maintenant, mettez un # devant le paramètre udp-port pour désactiver les connexions UDP par défaut.

Vous utiliserez OpenConnect VPN en mode TCP uniquement, ce qui vous permettra d’augmenter la vitesse via les paramètres du noyau.

tcp-port = 443
#udp-port = 443
Disabling the UDP support

5. Remplacez le chemin du fichier de certificat dans le paramètre server-cert par la clé publique et le paramètre server-key par la clé privée.

server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem
Changing the SSL/TLS certificate files path

6. Changez la valeur du paramètre try-mtu-discovery à true pour activer la découverte de la MTU. Cela augmente la vitesse et les performances du serveur VPN OpenConnect.

try-mtu-discovery = true
Enabling MTU discovery

7. Ensuite, saisissez le nom de domaine du serveur VPN OpenConnect dans le paramètre default-domain et modifiez l’adresse IP interne par défaut dans le paramètre ipv4-network.

Dans cet exemple, les clients VPN utiliseront le réseau interne 10.11.0.0/24.

default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0
Setting up the default domain and internal network for VPN clients

8. Commentez les paramètres de route par défaut en ajoutant le caractère # au début de chaque ligne pour désactiver la passerelle de route par défaut. Une fois terminé, enregistrez le fichier et quittez l’éditeur.

#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default
Disabling the default route gateway

9. Maintenant, exécutez les commandes suivantes pour redémarrer le service ocserv, appliquer les modifications et lister tous les ports ouverts (ss) sur votre système.

# Redémarrer le service ocserv et appliquer les modifications
sudo systemctl restart ocserv
# Lister tous les ports ouverts
ss -tulpn | grep ocserv

Si le serveur VPN OpenConnect est en cours d’exécution, vous verrez le port 443 en état LISTEN utilisé par le service ocserv, comme indiqué ci-dessous.

Checking the ocserv port

Ajout d’utilisateurs au serveur VPN OpenConnect

Avec le serveur VPN OpenConnect configuré, vous avez besoin d’un moyen de vous y connecter. Comment ? En créant et en ajoutant un utilisateur VPN au serveur VPN OpenConnect.

Pour ajouter un utilisateur au serveur VPN OpenConnect, vous allez créer un utilisateur VPN et générer un fichier de mot de passe via l’utilitaire ocpasswd comme suit :

Exécutez la commande ocpasswd ci-dessous pour créer un nouvel utilisateur. Lorsque vous y êtes invité, saisissez un nouveau mot de passe pour l’utilisateur et répétez. Le nom d’utilisateur choisi pour ce tutoriel est atauser, mais vous pouvez fournir le vôtre.

Une fois l’utilisateur créé, le fichier de mot de passe (/etc/ocserv/ocpasswd) est également créé.

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

Maintenant, exécutez la commande cat suivante pour vérifier les détails du fichier de mot de passe (/etc/ocserv/ocpasswd).

cat /etc/ocserv/ocpasswd
Checking the password file’s details

Ajout de règles de pare-feu UFW pour ouvrir les ports cruciaux

Sur un système Debian, le pare-feu par défaut est IPTables, ce qui nécessite une compréhension approfondie du réseau pour être configuré. Pourquoi ne pas simplifier le processus ? Dans ce tutoriel, vous installerez et configurerez l’UFW comme pare-feu par défaut.

1. Exécutez la commande ci-dessous pour installer UFW tout en acceptant automatiquement toutes les invites (-y)

sudo apt install ufw -y
Installing UFW

2. Une fois UFW installé, exécutez les commandes ufw suivantes pour ouvrir les ports cruciaux pour que le serveur VPN OpenConnect fonctionne correctement.

# Ajoutez le service OpenSSH qui s'exécute sur le port 22.
sudo ufw allow OpenSSH
# Ajoutez le port 80 pour renouveler les certificats LetsEncrypt, 
# et le port 443 à utiliser par le serveur VPN OpenConnect.
sudo ufw allow 80,443/tcp
# Démarrez et activez UFW.
sudo ufw enable

Lorsqu’on vous demande, entrez Y et appuyez sur Entrée pour procéder à l’opération, comme indiqué ci-dessous.

Adding firewall rules to open ports

3. Enfin, exécutez la commande suivante pour vérifier le statut d’UFW et assurez-vous qu’UFW est en cours d’exécution.

sudo ufw status

La sortie ci-dessous montre le statut actif d’UFW et toutes les règles de pare-feu ajoutées.

Checking the UFW status and listing all firewall rules

Activation de la redirection de port

Avec un serveur VPN en cours d’exécution, vous devez diriger le trafic depuis le monde extérieur vers votre serveur en activant la redirection de port. Vous autoriserez la redirection de port sur votre serveur Debian via les paramètres du noyau.

Pour activer la redirection de port, suivez ces étapes :

Exécutez la commande suivante, qui ne produit pas de sortie dans le terminal, mais crée un nouveau fichier appelé /etc/sysctl.d/60-ocserv.conf. Ce fichier contient des paramètres du noyau pour activer la redirection de port sur votre système.

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

Maintenant, exécutez la commande sysctl ci-dessous pour appliquer les nouveaux paramètres du noyau et activer la redirection de port.

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

Configuration du NAT avec UFW

Activer la redirection de port n’est que l’une des premières étapes à franchir. Cette fois, vous devez vous assurer que les clients VPN peuvent se connecter à Internet ou à des réseaux spécifiques via le serveur VPN OpenConnect. Comment ? En configurant le NAT via UFW.

Pour configurer NAT avec UFW pour le serveur OpenConnect VPN :

1. Exécutez la commande suivante pour vérifier la liste des interfaces sur votre système.

ip a

Dans cet exemple, l’interface eth1 sera la passerelle NAT pour les clients VPN.

Checking available interfaces

2. Ensuite, ouvrez la configuration UFW (/etc/ufw/before.rules) à l’aide de votre éditeur préféré, et ajoutez les lignes suivantes avant l’option *filter. Ces configurations permettront de NATer les utilisateurs VPN (spécifiez l’interface de sortie) ou le réseau interne vers l’interface eth1.

N’oubliez pas de modifier le sous-réseau (10.11.0.0/24) avec les réseaux des clients VPN et l’interface (eth1) avec votre interface réseau.

# NAT pour le serveur OpenConnect VPN
# avec le réseau client 10.11.0.0/24
# vers l'interface eth1
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT
Configuring NAT via UFW

3. Ajoutez les lignes suivantes sous la section ok icmp code for FORWARD des options ufw-before-forward, enregistrez le fichier et quittez l’éditeur.

Ces configurations permettent la redirection (source et destination) du réseau client VPN.

# autoriser la redirection du réseau client VPN
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT
Enabling forwarding for VPN client network

4. Une fois enregistré, exécutez la commande suivante pour recharger les règles UFW et redémarrer le service UFW. Cela garantit que la configuration NAT sera appliquée au système.

sudo ufw reload
sudo systemctl restart ufw

5. Enfin, exécutez la commande iptables suivante pour vérifier l’état du NAT sur UFW, car le backend de UFW est IPTables.

sudo iptables -t nat -L POSTROUTING

Lorsque cela réussit, vous recevrez une sortie similaire à celle ci-dessous.

Connexion au serveur OpenConnect VPN via OpenConnect-GUI

Suivant les instructions, vous devriez maintenant avoir un serveur OpenConnect VPN entièrement fonctionnel en cours d’exécution. Mais après tout ce travail acharné, le moment de vérité est arrivé.

Le serveur OpenConnect VPN peut fonctionner, mais il n’y a qu’une seule meilleure façon de le vérifier – se connecter au serveur OpenConnect VPN.

Pour vous connecter au serveur OpenConnect VPN, vous devez installer l’application OpenConnect-GUI :

1. Ouvrez votre navigateur web préféré et visitez la page GitHub de OpenConnect-GUI.

2. Ensuite, téléchargez et installez l’application OpenConnect VPN pour Windows.

Downloading the OpenConnect VPN application for Windows

3. Ouvrez le client VPN OpenConnect-GUI et cliquez sur le menu FichierProfilsNouveau profil (avancé) (ou appuyez sur Ctrl+Shift+N). Une petite fenêtre apparaît où vous pouvez remplir les détails du nouveau profil (étape quatre).

Creating a new VPN profile

4. Maintenant, remplissez les informations du profil VPN avec les éléments suivants :

  • Nom – Fournissez un nom de connexion (par exemple, testvpn).
  • Passerelle – Spécifiez le nom de domaine de votre serveur OpenConnect VPN (par exemple, https://vpn.atadomain.io).
  • Nom d’utilisateur – L’utilisateur ajouté (atauser) au serveur OpenConnect VPN.

Une fois rempli, cliquez sur Enregistrer pour confirmer les informations et créer le profil VPN.

Configuring the new VPN profile

5. Ensuite, configurez votre profil VPN nouvellement créé (testvpn) en tant que Serveur, et cliquez sur Connecter pour établir une connexion au serveur VPN OpenConnect.

Connecting to the OpenConnect VPN Server

6. Lorsque vous y êtes invité, saisissez le Mot de passe de votre utilisateur VPN et cliquez sur OK.

Authenticating the connection to the OpenConnect VPN Server

7. Une fois connecté, la couleur du cadenas passe au vert, comme illustré ci-dessous.

Confirming successful connection to the OpenConnect VPN Server

8. Enfin, cliquez sur l’onglet Info VPN pour obtenir des informations détaillées sur la connexion. Vous devriez voir l’adresse IP interne que vous avez obtenue à partir du serveur VPN, le serveur DNS et la version TLS que vous utilisez.

Checking the VPN connection details

Conclusion

Tout au long de ce tutoriel, vous avez appris à configurer le serveur VPN OpenConnect. En même temps, vous avez appris à utiliser des certificats SSL/TSL et à ajouter des règles de pare-feu pour établir une connexion sécurisée au serveur VPN OpenConnect.

Avec cette nouvelle connaissance, pourquoi ne pas intégrer le serveur VPN OpenConnect avec plusieurs référentiels d’authentification, tels que Radius et OpenID? Ou ajouter une couche de sécurité pour l’authentification client via l’authentification à deux facteurs?

Source:
https://adamtheautomator.com/openconnect-vpn/