Comment installer un serveur OpenVPN sur Ubuntu

Installation Open VPN sur Ubuntu 18.04 20.04 22.04

OpenVPN est un logiciel VPN (Virtual Private Network) gratuit et open-source qui vous permet de vous connecter en toute sécurité à un réseau distant sur Internet. Dans cet article, nous allons vous guider dans le processus d’installation d’OpenVPN sur un serveur Ubuntu 18.04/20.04/22.04.

Méthode 1 :

Installer OpenVPN en utilisant un script.

D’abord, récupérez le script et rendez-le exécutable :

$ curl -O https://raw.githubusercontent.com/angristan/openvpn-install/master/openvpn-install.sh
$ chmod +x openvpn-install.sh

Ensuite, exécutez-le :

$ ./openvpn-install.sh

Vous devez exécuter le script en tant que root et avoir le module TUN activé.

La première fois que vous l’exécutez, vous devrez suivre l’assistant et répondre à quelques questions pour configurer votre serveur VPN.

Lorsque OpenVPN est installé, vous pouvez relancer le script, et vous aurez le choix entre les deux :

root@ubuntu:~# ./openvpn-install.sh
Welcome to OpenVPN-install!
The git repository is available at: https://github.com/angristan/openvpn-install
It looks like OpenVPN is already installed.
What do you want to do?
   1) Add a new user
   2) Revoke existing user
   3) Remove OpenVPN
   4) Exit
Select an option [1-4]:

vous pouvez ajouter un nouvel utilisateur ou révoquer un utilisateur existant .


Méthode 2 :

Étape 1 : Mise à jour et mise à niveau d’Ubuntu

Avant d’installer un nouveau logiciel, il est toujours recommandé de mettre à jour et de mettre à niveau votre système Ubuntu. Vous pouvez le faire en exécutant les commandes suivantes :

$ sudo apt update 
$ sudo apt upgrade

Étape 2 : Installer OpenVPN

Vous pouvez installer OpenVPN sur Ubuntu en exécutant la commande suivante :

$ sudo apt install openvpn easy-rsa

Étape 3 : Générer les certificats et les clés

OpenVPN utilise des certificats et des clés pour authentifier les clients et les serveurs. Vous pouvez générer ces fichiers en exécutant le script easy-rsa inclus avec OpenVPN. Pour ce faire, suivez les étapes suivantes :

$ make-cadir ~/openvpn-ca && cd ~/openvpn-ca

Modifiez le fichier vars pour configurer les variables de l’autorité de certification (CA) :

$ nano ./vars

Modifiez les variables selon vos besoins, par exemple :

set_var EASYRSA_REQ_COUNTRY    "US"
set_var EASYRSA_REQ_PROVINCE   "California"
set_var EASYRSA_REQ_CITY       "San Francisco"
set_var EASYRSA_REQ_ORG        "Copyleft Certificate Co"
set_var EASYRSA_REQ_EMAIL      "[email protected]"
set_var EASYRSA_REQ_OU         "My Organizational Unit"
$ ./easyrsa init-pki
$ ./easyrsa build-ca
$ ./easyrsa gen-req server nopass
$ ./easyrsa sign-req server server
$ ./easyrsa gen-dh
$ openvpn --genkey secret pki/ta.key

Les certificats et les clés seront créés dans le répertoire /root/openvpn-ca/pki.

Étape 4 : Configurer OpenVPN

Après avoir généré les certificats et les clés, vous devez configurer OpenVPN. Pour ce faire, créez un nouveau fichier de configuration avec la commande suivante :

$ sudo cp pki/dh.pem pki/ca.crt pki/issued/server.crt pki/private/server.key /etc/openvpn/
$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf /etc/openvpn/server.conf

Modifiez le contenu suivant dans le fichier de configuration /etc/openvpn/server.conf :

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh.pem
;tls-auth ta.key 0
tls-crypt ta.key
push "redirect-gateway def1 bypass-dhcp"

Enregistrez et fermez le fichier.

Activer le transfert IP

$ sudo nano /etc/sysctl.conf
# Uncomment the following line:
net.ipv4.ip_forward=1

Appliquez ensuite les modifications :

$ sudo sysctl -p

Étape 5 : Démarrer et activer OpenVPN

Vous pouvez démarrer et activer le service OpenVPN avec les commandes suivantes :

$ sudo systemctl start openvpn@server 
$ sudo systemctl enable openvpn@server

La partie @server spécifie le nom du fichier de configuration que vous avez créé précédemment.

Étape 6 : Configurer le pare-feu

Vous devez autoriser le trafic OpenVPN à travers le pare-feu. Vous pouvez le faire en créant une nouvelle règle avec la commande suivante :

$ sudo ufw allow OpenVPN # ignorer si vous n'utilisez pas de pare-feu

Ajouter le routage iptables

$ ifconfig
.
.
.
venet0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP>  mtu 1500
        inet 127.0.0.1  netmask 255.255.255.255  broadcast 0.0.0.0  destination 127.0.0.1
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 0  (UNSPEC)
        RX packets 4825  bytes 467045 (467.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 3331  bytes 322185 (322.1 KB)
        TX errors 0  dropped 1167 overruns 0  carrier 0  collisions 0
venet0:0: flags=211<UP,BROADCAST,POINTOPOINT,RUNNING,NOARP>  mtu 1500
        inet 7.249.98.8  netmask 255.255.255.0  broadcast 7.249.98.255  destination 7.249.98.8
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 0  (UNSPEC)
.
.

Notre réseau principal est venet0, vous avez peut-être eth0 ou autre chose.

$ sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE

Étape 7 : Se connecter au serveur OpenVPN

Maintenant que le serveur OpenVPN est opérationnel, vous pouvez vous y connecter à partir d’un ordinateur client. Pour ce faire, vous devez installer le logiciel client OpenVPN sur votre ordinateur et télécharger le fichier de configuration client depuis le serveur. Vous pouvez le faire en exécutant la commande suivante sur le serveur :

$ ./easyrsa gen-req client1 nopass
$ ./easyrsa sign-req client client1
$ sudo cp pki/private/client1.key /etc/openvpn/client/
$ sudo cp pki/issued/client1.crt /etc/openvpn/client/
$ sudo cp pki/{ca.crt,ta.key} /etc/openvpn/client/

Créez un fichier de configuration client dans le répertoire /root/openvpn-ca à utiliser comme configuration de base :

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /root/openvpn-ca/

Ouvrez ce fichier en utilisant nano et éditez ces variables :

remote 192.168.1.5 1194 # 192.168.1.5 est l'IP publique du serveur
user nobody
group nogroup
;ca ca.crt
;cert client.crt
;key client.key
;tls-auth ta.key 1
key-direction 1

Créez maintenant un script pour compiler la configuration de base avec les fichiers de certificat, de clé et de chiffrement nécessaires.

$ nano config_gen.sh

 Ajouter le contenu suivant :

#!/bin/bash
# First argument: Client identifier
KEY_DIR=/etc/openvpn/client
OUTPUT_DIR=/root # changer le répertoire de sortie
BASE_CONFIG=/root/openvpn-ca/client.conf # Modifiez-le en client.conf dans votre système
cat ${BASE_CONFIG} \
    <(echo -e '<ca>') \
    ${KEY_DIR}/ca.crt \
    <(echo -e '</ca>\n<cert>') \
    ${KEY_DIR}/${1}.crt \
    <(echo -e '</cert>\n<key>') \
    ${KEY_DIR}/${1}.key \
    <(echo -e '</key>\n<tls-crypt>') \
    ${KEY_DIR}/ta.key \
    <(echo -e '</tls-crypt>') \
    > ${OUTPUT_DIR}/${1}.ovpn

Après avoir écrit le script, enregistrez et fermez le fichier config_gen.sh.

N’oubliez pas de rendre le fichier exécutable en le lançant :

$ sudo chmod 700 /root/openvpn-ca/config_gen.sh
$ sudo ./config_gen.sh client1

Cette commande crée un nouveau fichier appelé client1.ovpn dans le /root/ répertoire.

Copiez ce fichier sur votre ordinateur client et utilisez-le pour vous connecter au serveur OpenVPN.

Conclusion

Dans cet article, nous vous avons montré comment installer et configurer OpenVPN sur un serveur Ubuntu. Avec OpenVPN, vous pouvez vous connecter en toute sécurité à un réseau distant et accéder à ses ressources depuis n’importe où dans le monde.

Laisser un commentaire