Linux

Installation d’un Serveur OpenVPN sous Debian

OpenVPN est un VPN SSL se basant sur la création d’un tunnel IP.

Installation du Serveur OpenVPN

On commence par installer le package OpenVPN

On copie ensuite les fichiers de configurations.

Configuration du serveur OpenVPN
On commence par éditer le fichier /etc/openvpn/easy-rsa/vars:

on lance la séquence suivante qui va générer les clés (.key) et les certificats (.crt):

Le password utilisé dans ce cas de figure est PASSWORD

On copie ensuite les clés et les certificats utiles pour le serveur dans le répertoire /etc/openvpn/:
cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/
Puis on génère un répertoire /etc/openvpn/jail

Enfin on créé le fichier de configuration /etc/openvpn/server.conf:

Ce fichier permet de créer un serveur VPN SSL routé basée sur le protocole TCP et utilisant le port HTTPS (443) enfin de maximiser sont accessibilité depuis des réseaux sécurisés par des Firewalls. Les clients obtiendrons une nouvelle adresse IP dans le range 10.8.0.0/24.

On teste la configuration en saisissant la commande suivante:

On doit obtenir les messages suivants:

Initialization Sequence Completed

Si le serveur démarre correctement, on peut terminer la configuration sur serveur OpenVPN en décommentant la dernière ligne du fichier /etc/openvpn/server.conf :

Une fois fait on lance le serveur :

A ce stade un client va pouvoir ce connecter au serveur VPN. Par contre impossible d’aller plus loin car l’adresse 10.8.0.x ne sera par routée en dehors de votre serveur. Il faut donc configurer le serveur pour jouer le rôle de routeur entre l’interface VPN (tun0) et l’interface physique (eth0) et de NATeur entre les adresses en 10.8.0.x et son adresse IP réelle.

Configuration du routage:

Pour rendre ce paramètrage de routage permanant (même après un reboot), il faut ajouter la ligne suivante au fichier /etc/sysctl.conf:

Configuration du NAT:

Le serveur est maintenant prêt à accueillir ses clients. Nous allons donc voir comment faire une déclaration de client sur le serveur.

Création d’un compte client OpenVPN

On va créer le client martinbranda

Le build-key va générer 3 fichiers dans le répertoire /etc/openvpn/easy-rsa/keys:
martinbranda.crt: Certificat pour le client
martinbranda.csr: Certificat à garder sur le serveur
martinbranda.key: Clés pour le client
On copie les fichiers nécessaires dans un sous répertoire /etc/openvpn/clientconf/ préalablement créé:

On va ensuite dans le répertoire /etc/openvpn/clientconf/martinbranda

Puis on créé le fichier client.conf :

Pour assurer la compatibilité avec le client Windows OpenVPN, on fait une copie du fichier client.conf vers client.ovpn:

Il ne reste plus qu’à mettre ces fichiers dans une archive ZIP et de la transmettre sur le PC client:

Attribuer une adresse IP statique à un client VPN

Pour des raisons de sécurité , il est nécessaire d’affecter une adresse IP statique à un client VPN. Pour cela, il faut créer un répertoire qui va contenir les configurations statiques:

Ensuite on édite à l’intérieur de ce répertoire un fichier correspondant au CNAME (X509) de l’utilisateur dont on veut rendre la configuration statique (par exemple martinbranda):

La syntaxe est la suivante: ifconfig-push @IPCLIENTTUNNELVPN @IPSERVEURTUNNELVPN.
Ainsi quand le client martinbranda se connectera au serveur VPN il obtiendra une adresse en 10.8.0.18. Le bout du tunnel VPN (coté serveur) sera lui en 10.8.0.17.

Révocation d’un certificat client

Si le certificat d’un client à été volé au si ce dernier n’est plus nécessaire, il est important de le révoquer pour qu’il ne puisse plus être utilisé.

Pour révoquer un certificat, il copier les certificats de l’utilisateur à révoquer dans le dossier /etc/openvpn/easy-rsa/keys

La commande suivante permet de révoquer un certificat :

Remarque : Avec ce script, il ne faut pas mettre l’extension « .crt » du certificat.

A chaque révocation de certificat son numéro est ajouté dans le fichier « keys/crl.pem ». Ce fichier contient donc la liste des certificats révoqués. Après chaque révocation de certificat, il faut donc copier ce fichier dans « /etc/openvpn »

La commande suivante, permet de consulter la liste des certificats révoqués :

Il faut également ajouter cette ligne dans « etc/openvpn/server.conf » du serveur OpenVPN :

Pour information, le fichier « keys/index.txt » contient la liste des certificats créés et révoqués

Pour finir et pour information, lors de la création d’un client, les fichiers suivants sont créés ou modifiés dans « keys/crl.pem »

les connexions VPN

le processus OpenVPN server va écrire toute les minutes un état des clients connectés au serveur dans le fichier /etc/openvpn/openvpn-status.log.
On aura, par exemple, les informations suivantes:

Standard