Try   HackMD

TP OpenVPN et Wireguard

Ressources

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Fichiers liés au TP
Vous pouvez retrouver les fichiers liés au TP via les URL suivantes :

Introduction

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Definition VPN : Virtual Private Network, est un tunnel sécurisé à l'intérieur d'un réseau. Il permet d'échanger des informations de manière chiffrée et anonyme. Il est utilisé en entreprise pour le travail en remote afin de sécuriser les échanges, pour se protéger de la surveillance étatique en téléchargeant des torrents ou accéder à des données indisponibles dans notre zone géographique.

Nous allons distinguer deux types de VPN, VPN SSL et VPN IPSec. La plus grande difference entre les deux types de protocoles est la methode de chiffrement qui sont respectivement SSL/TLS ou IPSec. Ils vont encapsuler sur la couche 3 (réseau) du modèle OSI afin de transporter des paquets/trames (de couche 2 ou 3). Cette dernière propriété va le rendre indépendant du modèle TCP/IP. IPSec est standard en IPv6 a été pensé pour marcher en IPv6. OpenVPN est un VPN SSL et Wireguard est une alternative differente de IPSec.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Et concrètement ?

Très concrètement, comme on le voit sur le schéma ci-dessus, un VPN est simplement un "tunnel", un canal virtuel dédié, entre votre machine (ordinateur, routeur par exemple) et un serveur VPN.

Ce canal permettra de simuler pour votre équipement un réseau local entre lui et le serveur. La pratique la plus commune est de chiffrer les données qui y circulent via des protocoles comme IPSec ou TLS, pour éviter toute exposition sur Internet. En effet, le tunnel est virtuel, les données doivent bien passer par Internet pour arriver au serveur.

Les usages

Utiliser un VPN ouvre de nombreux usages :
Pour le commun des mortels :

  • Gagner en anonymat : L'adresse IP du client est cachée derrière celle du serveur VPN. On peut même "chaîner" des connexions VPN, pour doublement, triplement, etc. cacher son IP et rendre très difficile la remontée jusqu'à vous. Les VPNs, peuvent logger vos connexions et donc baisser ce niveau d'anonymat. À vous de vérifier la politique de log de votre fournisseur VPN. Ce besoin peut être exprimé par des opposants politiques en régimes totalitaires, par la presse là où la liberté n'est pas présente, ou par des citoyens peu scrupuleux qui souhaitent télécharger illégalement la dernière oeuvre de Christian Clavier.
  • Gagner en sécurité : Chiffrer sa connexion (en plus de sécurités offertes sur Internet via HTTPS par exemple) permet d'utiliser des connexions publiques sans risque par exemple. Ou simplement parce que vous n'avez pas confiance en votre FAI
  • Simuler une autre localisation : Si le serveur VPN est situé dans un autre pays que le vôtre, alors vous pourrez accéder à du contenu qui serait limité au pays de ce serveur. Cela vous permettrait par exemple d'accéder au catalogue US de Disney+

Pour les professionnels :

  • Simuler sa présence en entreprise : Un employé en télétravail peut se connecter, de façon sécurisée (c'est important en entreprise), aux ressources de l'entreprise, comme s'il était dans ces locaux. En effet, le VPN simule un réseau privé, et donc notamment celui de l'entreprise

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Prérequis :

  • Une machine avec un OS dérivé de UNIX avec un accès root qui pourra supporter le serveur OpenVPN et le serveur d'autorité de certification (MacOS nécéssitera un certain nombre d'adaptations supplémentaires)
  • Un(des) autre(s) appareil(s) (Android, IoS, PC, Mac) qui pourront être des clients de votre serveur OpenVPN.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Précisions :
Toutes les commandes de ce TP sont écrites pour les systèmes Archlinux et Debian, n'hésitez pas à demander aux assistants des précisions en cas de doute sur la "traduction" d'une commande.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Rendu de ce TP
Des fichiers vous seront demandé à la fin de chaque partie. Vous devrez rendre deux fichiers dans un fichier compressé en .zip qui devra être mis en ligne sur l'intra des tcom.

Si vous êtes sur une machine VM sur un Windows par exemple VirtualBox, vous devez configurer votre réseau en mode bridge (pont). Voici quelques screenshots :

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Partie 1 : OpenVPN

Nous allons maintenant procéder à l'installation de OpenVPN, cette installation va se faire en trois étapes :

  1. Installation du serveur OpenVPN,
  2. Installation du serveur d'autorité de certification (CA en anglais/AC en français),
  3. Mise en place des clients.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Précisions :
Dans le cadre de ce TP, nous allons déployer le serveur OpenVPN et l'autorité de certification sur la même machine dans un soucis de simplicité. De plus, le TP sera fait avec des IP locales afin d'encore une fois rendre les manipulations plus simples.
Il est possible pour vous de choisir des IP publiques mais des manipulations supplémentaires dépendantes de votre environnement sont à prévoir.

1.1 Présentation

1.1.1 OpenVPN

OpenVPN est logiciel libre permettant de créer un VPN SSL dont le développement a débuté en 2001. Le code source est disponible sur Github.

Comme tout logiciel/protocole utilisant SSL/TLS (comme HTTPS), il se base sur la cryptographie asymétrique et les clés RSA, ce qui est la même technologie utilisée pour le protocole SSH par exemple.

1.1.2 Chiffrement asymétrique

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Chaque utilisateur (un seul dans le cas du schéma ci-avant par soucis de clareté) possède un couple de clés (une publique/une privée). La clé privée sert à déchiffrer les messages et leurs signatures. La clé publique sert à chiffrer les messages et est obtenue par une fonction à sens unique (facilement calculable mais quasi-impossible à inverser). L'ANSSI recommande une clé de 2048 bits dans le cadre d'une clé RSA.

Pour envoyer un message à A, B utilise la clé publique de A, pour que A puisse déchiffrer le message grâce à sa clé privée. La clé privée est le seul moyen de déchiffrer le message. Si bien qu'une fois chiffré, même B ne peut pas le lire.

1.1.3 L'autorité de certification

Comme vous l'avez compris, A doit envoyer sa clé publique à B pour que B puisse chiffrer ses messages à destination de A, afin qu'ils soient lisibles par A (via sa clé privée).

Or, lors de l'envoi de cette clé publique, aucune vérification de l'expéditeur ne peut être effectuée pour que B soit assuré que la clé qu'il reçoit est bien émise par A ! D'où l'intégration d'un tiers : l'autorité de certification

L'autorité de certification a pour objectif de certifier que la clé publique émise est bien celle de A.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Autorité de certification
Tiers de confiance permettant d'authentifier l'identité des correspondants. Une autorité de certification délivre des certificats décrivant des identités numériques et met à disposition les moyens de vérifier la validité des certificats qu'elle a fourni.
Elle est appelée CA (Certificate Authority) en anglais.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Une personne souhaitant communiquer via TLS envoie à une autorité de certification une "demande de signature de certificat" (1) contenant sa clé publique et des informations sur son identité (comme ses coordonnées postales et numériques). La CA vérifie en interne ces informations et si elles sont correctes, signe elle-même (via sa propre clé privée) la demande de signature (qui devient de fait le certificat) et la renvoie au demandeur (3).
A chaque connexion d'un utilisateur, le serveur lui envoie le certificat (pour preuve), que le client peut donc authentifier avec certitude et débuter la connexion.

À chaque envoi de certificat, le client demande à la CA si le certificat reçu est encore valide, faute de quoi, il sera refusé par le client. Notez que par le passé, les clients (navigateurs dans le cas d'HTTPS) téléchargeaient régulièrement les listes de révocation.
NB : Cette pratique est effectuée par le serveur dans le cas de notre VPN car c'est au serveur de vérifier l'identité du client et non l'inverse dans notre cas. Notez que la CA envoie les mises à jour au serveur quand elles sont nécessaires, afin que le serveur n'ait pas à demander des confirmations à la CA à chaque connexion :

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Pour aller plus loin :
Nous rentrons peu dans les détails dans le cadre de ce TP. La logique est celle présentée dans le TP, mais des principes mathématiques (comment est calculée la clé privée, comment le message est chiffré, etc.) et des détails d'implémentation (comment le certificat est vérifié, comment est-il envoyé, etc.) sont utilisés et peuvent vous intéresser.

1.2 Installation

Assurez-vous de mettre votre système à jour avec la commande correspondant au packet manager de votre OS.

$ sudo pacman -Syu
ou
$ sudo apt update

Puis installer OpenVPN via celui-ci,

$ sudo pacman -S openvpn
ou
$ sudo apt install openvpn

Ce packet doit contenir les commandes nécessaires pour configurer OpenVPN ainsi que les fichiers correspondants. Le contenu peut varier d'une distribution à l'autre.

Assurez-vous d'avoir la commande wget installée, puis effectuez cette commande :

$ wget -P ~/ https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.4/EasyRSA-3.0.4.tgz

Cela permet de télécharger EasyRSA, qui va nous fournir les fichiers nécessaires pour mettre en place notre serveur CA (autorité de certification).

Créez les dossiers permettant de différencier le serveur de l'autorité de certification. Le dossier ca sera l'authorité de certification et le dossier server sera votre serveur OpenVPN :

$ cd ~
$ mkdir ca
$ mkdir server

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Fichiers sources :
Nous avons dissocié les deux entités serveur OpenVPN et CA dans deux dossiers differents. En revanche les fichiers sources sont les mêmes : la tarball EasyRSA. La différenciation se fera par la suite en fonction des options que nous donnerons au script easyrsa, les fichiers générés seront différents.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Bestpractice
Une configuration correcte veut que le serveur VPN et la CA soit sur deux machines séparées (géographiquement distinctes au mieux). Si un attaquant parvenait à infiltrer votre CA, il pourrait accéder à la clé privée de cette CA et s'en servir pour signer de nouveaux certificats, leur accordant des accès à votre VPN.
Il est également conseillé d'éteindre la CA lorsqu'elle ne doit pas signer de nouveaux certificats car elle n'est pas nécessaire pour les vérifier.

Extrayez le contenu de la tarball dans chacun des dossiers ca etserver :

$ cd ~/ca
$ tar -xvf ../EasyRSA-3.0.4.tgz

$ cd ~/server
$ tar -xvf ../EasyRSA-3.0.4.tgz

Vous disposez maintenant de toutes les ressources nécessaires pour le TP.

1.3 Mise en place de l'autorité de certification

Nous allons maintenant configurer le serveur CA (autorité de certification). Pour cela EasyRSA dispose d'un fichier de configuration, allez dans le répertoire EasyRSA de la CA :

$ cd ~/ca/EasyRSA-3.0.4/

Vous allez trouver un fichier nommé vars.example qui va contenir un ensemble de variables de préférence liées aux certificats que l'on va générer. Faites-en une copie en la nommant vars sans extension. Certaines variables doivent être décommentées.
Remplissez les selon vos préférences mais ne les laissez pas vides :

set_var EASYRSA_REQ_COUNTRY    "US"
set_var EASYRSA_REQ_PROVINCE   "NewYork"
set_var EASYRSA_REQ_CITY       "New York City"
set_var EASYRSA_REQ_ORG        "DigitalOcean"
set_var EASYRSA_REQ_EMAIL      "admin@example.com"
set_var EASYRSA_REQ_OU         "Community"

Exemple :

set_var EASYRSA_REQ_COUNTRY    "FR"
set_var EASYRSA_REQ_PROVINCE   "France"
set_var EASYRSA_REQ_CITY       "Paris"
set_var EASYRSA_REQ_ORG        "Lab TCOM"
set_var EASYRSA_REQ_EMAIL      "lab@t.com"
set_var EASYRSA_REQ_OU         "Lab"

Vous trouverez également un script easyrsa, c'est via celui-ci que nous allons mettre en place et gérer la CA.
Vous pouvez effectuer cette commande pour avoir une idée de tout ce que propose ce script :

$ ./easyrsa help

Nous allons commencer avec cette commande pour pouvoir créer les clés publiques que nous délivrerons avec la CA :

$ ./easyrsa init-pki

Puis maintenant construisez la CA avec cette commande, cela devrait créer deux nouveaux fichiers ca.crt et ca.key qui correspondent respectivement à votre clé publique et votre clé privé. Si vous ne voulez pas de mot de passe pour votre CA vous pouvez rajouter l'option nopass.

$ ./easyrsa build-ca nopass

À la suite de cette commande, il vous sera demandé le nom de votre CA. Ce nom peut être modifié à votre convenance.

Vous avez maintenant une autorité de certification prête à signer des certificats.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Fichiers manquants
Il est possible que des fichiers vous manquent dans ce TP lors de certains ratés d'installation ou par la volonté de votre packet manager (loués soient pacman & apt)
Vous retrouverez la plupart des fichiers manquants sur ce Git : https://github.com/OpenVPN/openvpn/tree/master/sample/sample-config-files

Remarque
Vous pouvez utiliser l'option revoke pour révoquer un client, cependant le client révoqué aura toujours accès au service VPN. Pour palier ce problème vous devez mettre en place une liste de révocation avec la commande :
$ ./easyrsa gen-crl qui va créer un fichier crl.pem. Transférez-le vers votre serveur OpenVPN (cp dans le cadre de ce TP sinon scp) vers /etc/openvpn. Puis éditez le fichier server.conf en ajoutant cette ligne en bas du fichier :
crl-verify crl.pem puis redémarrez OpenVPN via
$ sudo restart openvpn@server
Cette opération est scriptable est doit être refaite pour chaque révocation d'un client.

Remarque
Les certificats SSL que nous allons pouvoir générer sont du même type que les certificats permettant de certifier un protocole HTTPS qui n'est autre qu'un protocole HTTP associé à un certificat SSL.

1.4 Génération des premiers certificats

Création des certificats

Nous allons maintenant créer les premiers certificats. Naviguez dans le dossier du serveur OpenVPN :

$ cd ~/server/EasyRSA-3.0.4/

Comme pour la CA, vous devez créer une PKI qui sera différente de celle utilisée pour votre CA :

$ ./easyrsa init-pki

Générez le certificat de notre serveur afin pouvoir communiquer avec lui avec la commande suivante :

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Attention :
Le nom de votre certificat peut être choisi à votre envie. Pour la suite du TP nous utiliserons le nom server. Si vous le modifiez, assurez-vous de ne pas faire d'impair suite à un copié/collé des commandes.

$ ./easyrsa gen-req server nopass

Cette commande a pour effet de générer une requête de certificat (.req) et une clé privée (.key). La requête de certificat doit maintenant être certifiée/signée par la CA. Elle prendra la forme server.crt après signature et pourra être propagée.
Les requêtes de certificats générées sont dans le dossier pki/reqs.
Les clés privées sont dans le dossier pki/private.

Déplaçons la requête du certificat nouvellement créé (server.req) dans le dossier /tmp/ afin de la transférer à notre CA.

Il faut aussi déplacer la clé privée du serveur (server.key) dans le dossier /etc/openvpn (accessible uniquement en sudo) qui sera utilisée dans la suite du TP.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Bestpractice
Étant donné que la CA et le serveur VPN devraient être sur deux machines séparées, l'envoi de la requête de certificat et de la réponse de la CA doivent être fait à distance. Une commande comme scp permet de le faire en sécurité.

Signature des certificats

Naviguez dans le dossier de la CA :

$ cd ~/ca/EasyRSA-3.0.4/

Il est maintenant temps d'importer votre certificat dans la CA :

$ ./easyrsa import-req /tmp/server.req server

Pour rappel c'est cette entité qui va orchestrer tout ce qui a un rapport avec les certificats et également exécuter des fonctions dessus comme la révocation ou la création de certificats, c'est la raison pour laquelle elle doit avoir en mémoire tous les certificats existants.

Puis signons ce certificat :

$ ./easyrsa sign-req server server

Dans cette commande, nous avons deux arguments le premier indique que nous voulons signer un certificat server ou client.
Le deuxième est le nom du certificat qui sera généré (ici server).

Les certificats générés par cette commande sont stockés dans le répertoire pki/issued

Après la génération du certificat serveur il nous faut maintenant le renvoyer sur la machine qui contient le serveur (dans le cadre de ce TP comme précisé en introduction, le serveur OpenVPN et le serveur CA cohabitent sur la même machine).

$ cp pki/issued/server.crt /tmp/

Il nous faut aussi le certificat de notre CA pour vérifier les signatures.
Copiez-le dans le dossier de transition tmp:

$ cp pki/ca.crt /tmp/

Envoyons maintenant ces clés dans le dossier d'OpenVPN :

$ sudo cp /tmp/{server.crt,ca.crt} /etc/openvpn/

Création des clés coté serveur

Nous allons passer dans la partie serveur :

$ cd ~/server/EasyRSA-3.0.4/

Des clés de chiffrement doivent être générées pour finaliser la création des clés coté serveur. Nous allons générer une clé pour sécuriser nos différents échanges avec l'algorithme de Diffie-Hellman :

$ ./easyrsa gen-dh

Il nous faut ensuite une signature afin d'avoir une sécurité renforcée. La signature générée peut être répandue sur les clients afin d'ajouter une sécurité.

$ sudo openvpn --genkey --secret ta.key

Et enfin copiez ces clés vers le dossier d'OpenVPN.

$ sudo cp ~/server/EasyRSA-3.0.4/ta.key /etc/openvpn/
$ sudo cp ~/server/EasyRSA-3.0.4/pki/dh.pem /etc/openvpn/

La partie serveur CA est maintenant terminée nous allons pouvoir commencer à nous occuper des clients.

1.5 Génération des fichiers clients

Cette partie vous explique comment générer une seule paire clé certificat/clé client, si vous désirez en avoir plusieurs, vous pouvez répéter ce processus ou écrire un script qui va s'occuper de créer et remplir les fichiers de config des clients et de les transferer automatiquement de la CA au client.

Pour cette partie notre client s'appelera ploppy
On va commencer par créer un répertoire sur votre machine serveur :

$ mkdir -p ~/client-configs/keys

Dans ce répertoire on va stocker des informations critiques liées à nos clients, nous allons donc y restreindre les droits :

$ chmod -R 755 ~/client-configs

Ensuite, retournez dans le répertoire EasyRSA et exécutez le script easyrsa avec les options gen-req et nopass, ainsi que le nom commun du client :

$ cd ~/server/EasyRSA-3.0.4/
$ ./easyrsa gen-req ploppy nopass

Copiez le fichier ploppy.key dans le répertoire /client-configs/keys/ que vous avez créé précédemment :
$ cp pki/private/ploppy.key ~/client-configs/keys/

Ensuite, copiez le fichier ploppy.req sur votre machine CA (encore une fois, on utiliserait une méthode sécurisée telle que scp si les deux serveurs ne cohabitaient pas sur la même machine) :

$ cp pki/reqs/ploppy.req /tmp

Puis naviguez jusqu'à la CA et importez ploppy.req

$ cd ~/ca/EasyRSA-3.0.4/
$ ./easyrsa import-req /tmp/ploppy.req ploppy
$ ./easyrsa sign-req client ploppy

Entrez yes quand on vous invite à signer la demande de certification ; pour ceux qui en ont un, on vous demandera également votre mot de passe.

Vous avez un nouveau fichier nommé ploppy.crt que vous pouvez transferer au serveur (on utiliserait une méthode sécurisée tel que scp si les deux serveurs ne cohabitent pas sur la même machine).

$ cp pki/issued/ploppy.crt /tmp/
$ cp /tmp/ploppy.crt ~/client-configs/keys/

Transferez vos clés publique et privé dans le dossier de configuration des clients.

$ sudo cp ~/server/EasyRSA-3.0.4/ta.key ~/client-configs/keys/
$ sudo cp /etc/openvpn/ca.crt ~/client-configs/keys/

Nous reviendrons sur ces fichiers dans la suite du TP en attendant nous devons finir la configuration d'OpenVPN sur notre serveur.

1.6 Configuration du serveur OpenVPN

L'objectif de cette partie est de créer un service openVPN cela est possible grâce à différents outils pour ce TP nous avons choisit systemctl.

Commencez par copier un exemple de fichier de configuration OpenVPN dans le répertoire de configuration, puis extrayez-le afin de l'utiliser comme base pour votre installation :

$ sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz /etc/openvpn/

$ sudo gzip -d /etc/openvpn/server.conf.gz

Attention, si vous êtes sur Archlinux, on doit différencier les dossiers de serveur et de client, ducoup mettez tous les fichiers suivant dans /etc/openvpn/server : ca.crt, dh.pem. nomduserver.crt, servername.key et ta.key. Le fichier de conf du serveur est dans /usr/share/openvpn/examples/server.conf

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Présence de ce fichier
Il est possible que les fichiers de configuration d'exemple d'OpenVPN ne soient pas présentent sur votre machine.
Vous pouvez retrouvez tous les fichiers sur le répo suivant : https://github.com/OpenVPN/openvpn/tree/master/sample

Nous allons maintenant modifier la configuration par défaut d'OpenVPN.
Ouvrez le fichier de configuration :

$ sudo vim /etc/openvpn/server.conf

Vérifiez que la ligne suivante n'est pas précédée d'un ; (qui permet de mettre en commentaire) :

tls-auth ta.key 0 # This file is secret

Trouvez la ligne contenant le mot cipher. Le AES-256-CBC permet un bon niveau de chiffrement et est assez bien supporté. Cette ligne doit être décommentée :

cipher AES-256-CBC

En dessous de cette ligne ajoutez un auth pour selectionner une fonction de hachage. SHA256 est un bon choix :

auth SHA256

Trouvez la ligne contenant la directive dh. Elle permet de définir le nom du fichier contenant les paramètres pour l'algorithme de Diffie-Hellman. Nous l'avons créé plus tôt sous le nom de dh.pem. Modifiez le nom préconfiguré par la configuration d'exemple :

dh dh.pem

Décommentez la ligne permettant de créer les logs et choisissez openvpn.log comme fichier de log. Cela nous permettra de vérifier les logs par la suite.

log /var/log/openvpn/openvpn.log

Décommentez la ligne suivante pour pouvoir forward le traffic et pouvoir obtenir l'IP du serveur sans quoi le traffic ne passera pas par notre VPN.

push "redirect-gateway def1 bypass-dhcp"

Dernière ligne à modifier, trouvez user et groupe et décommentez-les.

user nobody
group nogroup

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Attention : Si vous êtes sur une distribution RedHat (Fedora, centOS) ou Archlinux le group nogroup doit être remplacé par group nobody

1.7 Paramétrage du réseau

Afin de rendre votre VPN accessible et ainsi réussir à vous connecter, il vous faut maintenant changer certains paramètre réseaux.

En premier lieu, nous allons modifier les règles d'IP forwarding. Ouvrez le fichier de config sysctl. Si ce fichier n'est pas présent vous pouvez le créer :

$ sudo vim /etc/sysctl.conf

Cherchez la ligne net.ipv4.ip_forward et décommentez-la en enlevant le # :

net.ipv4.ip_forward=1

Fermez le fichier et appliquez les modifications.

$ sudo sysctl -p

La sortie devrait afficher :

net.ipv4.ip_forward = 1

Installez le packet ufw. UFW ou Uncomplicated Firewall est un firewall assez répandu et utilisé. Même si vous l'avez déjà, cela permettra de récupérer tous les fichiers par défaut qui ne sont pas sur votre machine.

$ sudo pacman -S ufw
ou
$ sudo apt install ufw

Vérifions votre interface réseau avec la commande :

$ ip route | grep default

Vous devriez obtenir en sortie une ligne similaire à :

default via 192.168.1.13 dev wlp11s0 proto static

wlp11s0 (eth0 ou autre) est votre inferface réseau. Gardez-la en mémoire, elle sera utile plus tard.

Ouvrez le fichier de règles de UFW :

$ sudo vim /etc/ufw/before.rules

Les règles UFW permettent de gérer le firewall. Normalement, il faut utiliser la commande ufw pour ajouter des règles mais les règles présentent dans le before.rules sont chargées en avance.
Nous allons ajouter des lignes dans le fichier de configuration afin de pouvoir utiliser OpenVPN. Elles vont permettre de définir la politique de routage dans la table NAT. N'oubliez pas de changer wlp11s0 par votre interface réseau.

A la suite de :

#
# rules.before
#
# Rules that should be run before the ufw command line added rules. Custom
# rules should be added to one of these chains:
#   ufw-before-input
#   ufw-before-output
#   ufw-before-forward

et avant

# Don't delete these required lines, otherwise there will be errors
*filter

Ajoutez ces lignes :

# START OPENVPN RULES
# NAT table rules
*nat
:POSTROUTING ACCEPT [0:0] 
# Allow traffic from OpenVPN client to wlp11s0 (change to the interface you discovered!)
-A POSTROUTING -s 10.8.0.0/8 -o wlp11s0 -j MASQUERADE
COMMIT
# END OPENVPN RULES

Nous en avons terminé avec ce fichier, sauvegardez et fermez-le.

Ouvrez le fichier /etc/default/ufw pour autoriser les paquets transmis par défaut.

$ sudo vim /etc/default/ufw

Changez le DROP par ACCEPT dans la ligne :

DEFAULT_FORWARD_POLICY="DROP"

Fermez le fichier.

Nous allons maintenant ajuster le firewall pour autoriser le trafic OpenVPN. Le port que nous utilisons ici 1194 doit être le même que celui mis dans le fichier /etc/openvpn/server.conf. Si vous n'avez rien touché, pas d'inquiétude c'est bien le port par défaut.

$ sudo ufw allow 1194/udp
$ sudo ufw allow 22/tcp

$ sudo ufw disable
$ sudo ufw enable

Votre serveur est maintenant prêt à gérer le traffic OpenVPN.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Info : ufw est souvent utile quand vous avez un réseau extérieur qui veut se connecter sur votre serveur OpenVPN. Dans le cadre de notre TP tout se déroule sur le réseau local.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Votre machine
Si vous faites tourner une VM sous google cloud ou tout autre cloud, signalez le aux assistants. Des manipulations des firewalls sont à faire afin de laisser passer les flux.

1.8 Lancer le service OpenVPN

Lançons maintenant le service OpenVPN avec systemctl. Le service est connu grâce au fichier /etc/openvpn/server.conf. :

$ sudo systemctl start openvpn@server

Sous Archlinux on fait la disctonction entre serveur et client, ducoup la commande pour lancer le serveur est:
sudo systemctl start openvpn-server@server

Vérifiez que le service est bien en état de marche :

$ sudo systemctl status openvpn@server

Vous devriez obtenir une sortie du type :

openvpn@server.service - OpenVPN connection to server
   Loaded: loaded (/lib/systemd/system/openvpn@.service; disabled; vendor preset: enabled)
   Active: active (running) since Tue 2016-05-03 15:30:05 EDT; 47s ago
     Docs: man:openvpn(8)
           https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage
           https://community.openvpn.net/openvpn/wiki/HOWTO
  Process: 5852 ExecStart=/usr/sbin/openvpn --daemon ovpn-%i --status /run/openvpn/%i.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/%i.conf --writepid /run/openvpn/%i.pid (code=exited, sta
 Main PID: 5856 (openvpn)
    Tasks: 1 (limit: 512)
   CGroup: /system.slice/system-openvpn.slice/openvpn@server.service
           └─5856 /usr/sbin/openvpn --daemon ovpn-server --status /run/openvpn/server.status 10 --cd /etc/openvpn --script-security 2 --config /etc/openvpn/server.conf --writepid /run/openvpn/server.pid

Vérifiez que l'interface tun0 est disponible via la commande :

$ ip addr show tun0

Cela devrait vous donner un résultat similaire :

4: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 100
    link/none 
    inet 10.8.0.1 peer 10.8.0.2/32 scope global tun0
       valid_lft forever preferred_lft forever

Activez le service pour qu'il soit lancé au démarrage de la machine (facultatif) :

$ sudo systemctl enable openvpn@server

Votre serveur OpenVPN est maintenant lancé. Il faut maintenant créer les fichiers de configuration client afin de permettre à vos utilisateurs d'utiliser ce VPN.

1.9 Créer l'infrastructure de configuration client

Nous allons automatiser la création des configuration client car pour chaque client que vous voudrez créer, il vous faut créer une nouvelle configuration client.
Le dossier files contiendra toutes les configurations générées.

$ mkdir -p ~/client-configs/files

Copiez la configuration de base pour les clients OpenVPN dans votre dossier client-config et ouvrez-la :

$ cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/client-configs/base.conf
$ vim ~/client-configs/base.conf

Cherchez l'instruction remote et remplacez my-server-1 par votre adresse IP. Si vous êtes sur le même réseau local, récuperez votre IP privée. Si ce n'est pas le cas, utilisez votre IP publique.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Adresses IP
Si vous essayez d'utiliser une adresse IP publique, cela implique que vous soyez en capacité d'ouvrir les ports de votre box et autoriser les flux de passage du coté serveur.
En utilisant votre réseau local, vous évitez de sortir de votre box, ce qui facilite grandement les communications.

Pour récupérer votre IP publique :
$ curl ifconfig.me
(ou n'importe quel site comme https://www.monippublique.com/)

Pour récupérer votre IP privée :
$ ip a

Vous retrouverez dans les prochaines lignes les configurations que nous avons mises dans la configuration du serveur OpenVPN.
Vérifiez que la configuration est bien en mode udp comme défini précédement :

proto udp

Décommentez user et group :

user nobody
group nogroup

Commentez maintenant les directives ca, cert et key avec un #. Le script de configuration ira chercher les fichiers dont il a besoin par lui même.

ca ca.crt
cert client.crt
key client.key

Assurez vous que la ligne suivante est bien commentée. Cela vous demandera la clé sur vos clients sinon (dans notre but éducatif, ce n'est pas essentiel) :

#tls-auth ta.key 1

Retrouvez les informations de chiffrement cipher et remplacez-les par la configuration serveur :

cipher AES-256-CBC
auth SHA256

Enfin, nous devons ajouter une commande à la fin du fichier : key-direction 1. Cela permet de signifier au client qu'il est bien client et non pas serveur.

Vous pouvez maintenant fermer ce fichier.

Nous allons maintenant créer le script de création de configuration client :

$ vim ~/client-configs/make_config.sh

Voici le script que vous utiliserez :

#!/bin/bash # First argument: Client identifier user_home="/home/clement.david" # Change "/home/clement.david" by the path to the client-config folder # you can find your path by using pwd in user mode KEY_DIR=$user_home/client-configs/keys OUTPUT_DIR=$user_home/client-configs/files BASE_CONFIG=$user_home/client-configs/base.conf 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-auth>') \ ${KEY_DIR}/ta.key \ <(echo -e '</tls-auth>') \ > ${OUTPUT_DIR}/${1}.ovpn

Rendons ce fichier exécutable :

$ chmod +x make_config.sh

1.10 Créer une configuration client

Nous allons maintenant créer les configurations pour nos clients avec le script précédent.

$ cd ~/client-configs
$ sudo ./make_config.sh ploppy

Vous pouvez trouver la configuration que vous venez de générer dans le dossier ~/client-configs/files sous le format *.ovpn

$ ls ~/client-configs/files

Il vous faut maintenant transférer ce fichier sur votre client et suivre les prochaines étapes pour tester votre VPN.

1.11 Installer le client sur une autre machine

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Cette partie soit être faite sur une machine différente de votre serveur
Vous pouvez utiliser un autre PC ou un téléphone. Nous recommandons pour votre premier client de le faire sur votre téléphone.

Android / Iphone

Télécharger l'application OpenVPN Connect via votre store.
Lancez l'application et trouvez l'onglet Import Profile, donnez lui votre .ovpn. Vous n'avez plus qu'à appuyer sur le bouton connecter.

Windows

Téléchargez l'application client OpenVPN pour Windows depuis la page de téléchargement d'OpenVPN ( https://openvpn.net/client-connect-vpn-for-windows/).

Vous aurez besoin des privilèges d'administrateur pour installer openVPN sur votre machine windows.

Une fois OpenVPN installé, copiez le fichier .ovpn dans le dossier:

C:\Program Files\OpenVPN\config ou le dossier où vous avez installé OpenVPN.

Pour pouvoir utiliser OpenVPN, vous devez l'exécuter en tant que administrateur (même si vous êtes avec un compte admin, modifiable dans les proprités de l'application).

Une fois qu'OpenVPN est lancé, initiez une connexion en vous rendant dans l'applet de la barre d'état système et en cliquant avec le bouton droit de la souris sur l'icône de l'applet OpenVPN. Cela ouvre le menu contextuel. Sélectionnez ploppy en haut du menu (c'est votre profil ploppy.ovpn) et choisissez Connecter.

Une fenêtre d'état s'ouvrira, montrant la sortie du journal pendant que la connexion est établie, et un message s'affichera une fois que le client sera connecté.

Déconnectez-vous du VPN de la même manière : allez dans l'applet de la barre d'état système, cliquez avec le bouton droit de la souris sur l'icône de l'applet OpenVPN, sélectionnez le profil du client et cliquez sur Déconnecter.

Linux

Si vous utilisez Linux, vous pouvez utiliser plusieurs outils en fonction de votre distribution. Votre environnement de bureau ou votre gestionnaire de fenêtres peut également inclure des utilitaires de connexion.

La façon la plus universelle de se connecter, cependant, est d'utiliser simplement le logiciel OpenVPN que vous trouverez avec votre packet manager si votre distribution n'est pas trop obscure.

Debian/Ubuntu:

$ sudo apt update
$ sudo apt install openvpn

CentOs/Fedora:

$ sudo yum install epel-release
$ sudo yum install openvpn

Pour Archlinux:

$ sudo pacman -Syu
$ sudo pacman -S openvpn

Vérifiez la présence du script /etc/openvpn/update-resolve-conf.
Il est présent si vous êtes sur une distribution dérivé de debian ou faites par Redhat normalement, dans ce cas modifiez le fichier de config (le .ovpn) et décommentez ces trois lignes:

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

Si vous êtes sous Archlinux, le fichier de conf se trouve dans
/usr/share/openvpn/examples/client.conf.

Si vous avez une distribution Redhat n'oubliez pas de modifiez le group nogroup en group nobody.

Vous pouvez maintenant lancer la commande:
$ sudo openvpn --config ploppy.ovpn pour vous connecter au serveur OpenVPN.

MacOS

Tunnelblick est un client OpenVPN gratuit et open source pour macOS. Vous pouvez télécharger la dernière image disque à partir de la page de téléchargement de Tunnelblick (version stable). Double-cliquez sur le fichier .dmg téléchargé et suivez les instructions pour l'installer.

Vers la fin du processus d'installation, Tunnelblick vous demandera si vous avez des fichiers de configuration. Répondez J'ai des fichiers de configuration et laissez Tunnelblick finir. Ouvrez une fenêtre du Finder et double-cliquez sur ploppy.ovpn. Tunnelblick installera le profil du client. Des privilèges administratifs sont requis.

Lancez Tunnelblick en double-cliquant sur l'icône de Tunnelblick dans le dossier Applications. Lorsque Tunnelblick est lancé, une icône Tunnelblick apparaît dans la barre de menu en haut à droite de l'écran pour contrôler les connexions. Cliquez sur l'icône, puis sur l'élément de menu Connecter ploppy pour lancer la connexion VPN.

1.12 Evaluation

Afin de vérifier votre avancée sur le TP, il vous faut maintenant nous faire parvenir un fichier qui sera généré par le script suivant :

Pour toutes les personnes qui ne sont pas sur archlinux :

#!/bin/sh rendu="$1.openvpn" touch $rendu echo '---------------------------SYSTEMCTL---------------------------------' >> $rendu systemctl status openvpn@server >> $rendu echo '---------------------------UFW---------------------------------' >> $rendu ufw status verbose >> $rendu echo '---------------------------LOGS--------------------------------------' >> $rendu cat /var/log/openvpn/openvpn.log >> $rendu

Pour les personnes sur archilinux, utiliser ce script :

#!/bin/sh rendu="$1.openvpn" touch $rendu echo '---------------------------SYSTEMCTL---------------------------------' >> $rendu systemctl status openvpn-server@server >> $rendu echo '---------------------------UFW---------------------------------' >> $rendu ufw status verbose >> $rendu echo '---------------------------LOGS--------------------------------------' >> $rendu echo 'arch' >> $rendu

Avant de lancer le script, assurez vous que vous êtes connecté sur votre VPN avec votre client.
Exécutez ce script avec votre login sous le format prenom.nom :

$ chmod +x eval.sh
$ sudo ./eval.sh prenom.nom

Un fichier sera généré sous le nom : prenom.nom.openvpn

Gardez ce fichier, il vous sera demandé de le rendre un peu plus tard.

1.13 Éteindre le service

Pour finir, éteignez le service OpenVPN :

$ sudo systemctl stop openvpn@server
$ sudo systemctl disable openvpn@server

Arrêter le service ufw :

$ sudo ufw reset


Part 2: Wireguard

Nous allons maintenant parler de Wireguard, un acteur du marché VPN différent d'OpenVPN avec comme spécificité son débit proche du Gigabit par seconde.
Contrairement à OpenVPN, nous ne créerons qu'un tunnel entre deux machines et non pas un forward complet du traffic. Si vous voulez faire du forward complet du traffic (et du coup naviguer sur internet avec l'IP de votre serveur), il vous faut modifier votre serveur comme un routeur et ce n'est pas le but de ce TP.

Voici une des façons d'utiliser votre VPN Wireguard :

Vous habitez Lyon. Vous possedez un NAS chez vous (à Lyon) avec une centaine de films téléchargés illégalement sur Internet. Vous possédez une autre machine (ordinateur portable / téléphone) et vous êtes en déplacement en Italie (parce que le Covid-19 ne vous fait pas peur et que vous êtes un imbécile fini). Avec un VPN Wireguard qui lie votre portable et votre machine distante, vous avez accès à vos films via un tunnel sécurisé et avec un acces haut débit.

2.1 Installation de Wireguard

Wireguard peut être déjà installé sur votre machine car il est devenu un des paquets par défaut disponible. Cependant, si ce n'est pas le cas, veuillez l'installer :

https://www.wireguard.com/install/

2.2 Mise en place des clés

Wireguard fonctionne avec des paires de clés publique et privée. Rendez-vous dans un dossier où vous aller stocker les clés, son emplacement n'a pas d'importance, soyez juste sur d'avoir les droits sur ce dossier.

$ cd /etc/wireguard/
$ umask 077
$ wg genkey | tee privatekey | wg pubkey > publickey

Cela va nous créer deux fichiers :

  • privatekey
  • publickey

Dans lesquels, nous retrouvons des clé du style : N3F9FOP/JxHr6vA+u3SwTGsIjOmodmlbus4hicdsbje=

C'est ces combinaisons de caractères que vous devrez mettre dans vos fichiers de config.

2.3 Création de la configuration wireguard

Créez le fichier /etc/wireguard/wg0.conf et remplissez le avec le schema ci-dessous. Nous allons utiliser wg0 comme nom de notre interface. Vous pouvez le nommer comme vous le souhaitez.

[Interface]
PrivateKey = <private_key_server>
ListenPort = 51820
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Address = 172.21.12.1/24, fd10:21:12::1/64
# Client
[Peer]
PublicKey = <public_key_client>
AllowedIPs = 172.21.12.2/32, fd10:21:12::2/128

Remplacez le <private_key> par la clé privée que nous avons générée juste avant (ici dans privatekey). Il vous faudra une section [Peer] par client, nous y reviendrons plus tard.

Les PostUp et PostDown sont les ajouts qui seront fait dans les iptables. Cela permet de gérer les redirections et les forwards.

Remplacez eth0 par l'interface liée à internet (voir ip a)

Fermez ce fichier.

2.4 Ouverture des ports

Comme pour OpenVPN nous allons utiliser UFW pour les ouvertures des ports dans le firewall avec les commandes suivantes:

$ sudo ufw allow 22/tcp
$ sudo ufw allow 51820/udp
$ sudo ufw enable

Vous pouvez vérifier votre firewall avec :

$ sudo ufw status verbose

2.5 Clients

A la main

Des applications pour les clients sont disponibles pour tous les OS (PC et téléphones). Il vous suffit de prendre l'application Wireguard officielle sur votre appstore préféré.
Si vous êtes sur Linux, vous devez désactiver votre network manager afin de ne pas pourrir votre config et laisser wireguard jouer avec vos networks. Pour toute questions, appelez un assistant.

Voici la configuration qui répond au client 1 de la conf serveur précédente :

[Interface]
PrivateKey = <private_key_client>
Address = 172.21.12.2/32, fd10:21:12::2/128
[Peer]
PublicKey = <public_key_server>
AllowedIPs = 172.21.12.1/32, fd10:21:12::1/128
Endpoint = <server_ip>:51820

Avec un QRcode

Si vous êtes sur téléphone, vous pouvez créer un QRcode sur votre serveur et prendre une photo de ce dernier via l'application Wireguard.

Pour cela, il vous faut une nouvelle paire de clé de wireguard :

$ wg genkey | tee client_privatekey | wg pubkey > client_publickey

Créez un fichier client.conf, et ajoutez la configuration :

[Interface]
PrivateKey = <private_key_client>
Address = 172.21.12.2/32, fd10:21:12::2/128
[Peer]
PublicKey = <public_key_server>
AllowedIPs = 172.21.12.1/32, fd10:21:12::1/128
Endpoint = <server_ip>:51820

Remplissez les champs <...> avec les valeurs demandées.
<server_ip> étant votre ip privée ou publique.
<private_key_client> étant votre clé privé client (ici dans client_privatekey)
<public_key_server> étant votre clé publique serveur (ici dans publikey)

Exécutez les commandes suivantes :

$ sudo apt install qrencode
ou
$ sudo pacman -S qrencode

$ qrencode -t ansiutf8 < client.conf

Et scannez le QRcode généré.

2.6 Finitions

Retournons dans le fichier de configuration /etc/wireguard/wg0.conf.

Remplacez <public_key> par la clé publique de votre client (ici dans client_publickey).

2.7 Lancement de Wireguard

Nous allons utiliser wg-quick comme outil pour gérer l'état de Wireguard.

Démarez le VPN avec :

$ wg-quick up wg0

Vous pouvez vérifier l'état avec :

$ sudo wg show

Si vous avez l'erreur:
RTNETLINK answers: Operation not supported

Installez les dépendances requises avec :
apt-get install wireguard-dkms wireguard-tools linux-headers-$(uname -r)

Et avec :

$ sudo ifconfig wg0

Si ifconfig est installé sur votre machine

2.8 Tester la connexion

Depuis votre client, pingez le serveur :

$ ping 172.21.12.1

  • Sur Android / iOS des applications du style Termux existent.
  • Sur Windows, cmd dispose de la commande ping.
  • Sur Mac, dans le terminal la commande ping est disponible.
  • Sur Linux, vous avez evidemment la commande ping.

Pour voir si tout fonctionne, faites :

$ sudo wg show

Si vous voyez votre nombre de bits entrants/sortants augmenter sur l'adresse de votre client c'est que tout va bien.

2.9 Evaluation

#!/bin/sh rendu="$1.wireguard" touch $rendu echo '---------------------------CONFIG---------------------------------' >> $rendu cat /etc/wireguard/wg0.conf >> $rendu echo '---------------------------UFW---------------------------------' >> $rendu ufw status verbose >> $rendu echo '---------------------------LOGS--------------------------------------' >> $rendu wg show >> $rendu

Si vous avez utilisé un autre nom de fichier pour la configuration, merci de changer wg0.conf par <votre_nom>.conf

Avant de lancer le script, assurez vous que vous êtes connecté sur votre VPN avec votre client et avez fait un ping.
Exécutez ce script avec votre login sous le format prenom.nom :

$ chmod +x eval.sh
$ sudo ./eval.sh prenom.nom

Un fichier sera généré sous le nom : prenom.nom.wireguard

Gardez ce fichier, il vous sera demandé de le rendre un peu plus tard.

2.10 Éteindre le service

Pour finir, éteignez le service Wireguard :

$ wg-quick down wg0

Arrêter le service ufw :

$ sudo ufw reset

Évaluation

Au cours de ce TP, deux fichiers ont été générés sous la forme :

  • prenom.nom.openvpn
  • prenom.nom.wireguard

Il est possible que le zip n'accepte pas ces fichiers, n'hésitez pas à faire un chmod 666 pour changer les permissions.

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Rendu
Ces deux fichiers doivent être compréssés dans un dossier .zip nommé : prenom.nom.zip.
Vous devez ensuite rendre ce dossier compressé via l'intranet TCOM dans la partie rendus : http://vivelestcom2020.ovh/

Le nom du sujet sur l'intra est prénom.nom
Vous devez rendre un seul dossier zip contenant vos deux fichiers.
En cas de soucis demandez de l'aide sur discord via @Assistant ou sur le slack via @lab

Votre avis nous intéresse

Afin d'améliorer les prochains TPs, nous vous proposons de répondre à ce formulaire afin de nous donnez vos impression sur ce TP. Sachez que ce formulaire est anonymisé.

Lien vers le formulaire

C'est fini

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Félicitations vous avez fini ce TP ! Good job !
Vous pouvez faire des choses illégales sans vous inquiéter (attention tout de même, votre (futur) serveur VPN est exposé).