Alors que la course à l’anonymat sur internet bat son plein, que ce soit pour télécharger le dernier Lara Fabian ou simplement pour surfer en toute tranquillité, je m’en vais vous présenter un tutoriel qui vous permettra de créer un VPN.

Commençons les choses dans l’ordre !

Un vépéquoi ?

VPN, ça signifie Virtual Private Network, et si on le traduit en français ça donne Réseau Privé Virtuel. Pour faire court, il s’agit d’une passerelle entre le Client (nous) et, pour être vulgaire, Internet. C’est en tout cas l’utilisation que nous allons en faire ici.

Le grand avantage d’un tel tunnel c’est qu’il crypte toutes les données qu’il envoie et qu’il reçoit. Si vous passez par un VPN, vous êtes donc assez protégé. De plus, votre adresse IP sera celle du serveur sur lequel le VPN est installé.

En somme, il s’agit d’un gros proxy… en mieux.

Principe de fonctionnement du VPN

Un VPN repose sur un protocole, appelé protocole de tunnelisation, c’est-à-dire un protocole permettant aux données passant d’une extrémité à l’autre du VPN d’être sécurisées par des algorithmes de cryptographie.

Le terme tunnel est utilisé pour symboliser le fait qu’entre l’entrée et la sortie du VPN les données sont chiffrées et donc normalement incompréhensibles pour toute personne située entre les deux extrémités du VPN, comme si les données passaient dans un tunnel.

De plus, créer un tunnel signifie aussi encapsuler un protocole dans un protocole de même niveau du modèle OSI (IP dans IPSec par exemple). Dans le cas d’un VPN établi entre deux machines, on appelle client VPN l’élément permettant de chiffrer les données à l’entrée et serveur VPN (ou plus généralement serveur d’accès distant) l’élément déchiffrant les données en sortie.

Ainsi, lorsqu’un système extérieur à un réseau privé (client nomade, agence ou travailleur à domicile) souhaite se connecter au réseau de son entreprise :

  • les paquets (qui contiennent les données) sont chiffrés par le client VPN (selon l’algorithme décidé par les deux interlocuteurs lors de l’établissement du tunnel VPN) et éventuellement signés.
  • ils sont transmis par le biais du réseau transporteur (Internet en général).
  • ils sont reçus par le serveur VPN qui les déchiffre et les traite si les vérifications requises sont correctes.
A lire :  Linux : réparer la table de partition d'une carte SD (erreur : "can't read superblock")

Pré-requis

De quoi avons-nous besoin ?

  • d’un serveur dédié tournant sous Debian Lenny. Ici, je travaille sur Dedibox, mais n’importe quel serveur dédié devrait faire l’affaire.
  • d’OpenVPN, à la fois côté serveur et côté client. Pas de panique, c’est un logiciel libre.
  • de Putty et WinSCP, deux logiciels permettant de se connecter à un serveur en SSH et qui sont également libres.
  • d’un PC avec une connexion internet, évidemment.

Côté serveur

Allez, ne tardons plus. Commençons par nous connecter au serveur via Putty. Nous nous assurons que tout est à jour :

apt-get update && apt-get upgrade

Si ce n’est pas déjà fait, nous installons OpenSSH, qui s’occupera de sécuriser les connexions entrantes et sortantes du serveur.

apt-get install openssh-server

Ensuite, nous installons directement OpenVPN :

apt-get install openvpn

Pour faciliter les choses, nous déplaçons le dossier vers un chemin plus accessible :

cp /usr/share/doc/openvpn/examples/easy-rsa ~/openvpn/ -R
cd ~/openvpn/2.0/

Nous éditons ensuite le fichier vars qui contient certaines variables utiles à la création des certificats. Adaptez ces lignes comme bon vous semble :

export KEY_COUNTRY="FR" # Pays
export KEY_PROVINCE="FR" # On met la même chose
export KEY_CITY="Cannes" # Nom de la ville
export KEY_ORG="Orga" # Nom de l'organisation
export KEY_EMAIL="contact@example.com" # Adresse e-mail

Nous exécutons le fichier pour être sûr qu’il soit bien pris en compte.

source ./vars

Nous allons désormais créer l’Autorité de Certification ainsi que les clés qui nous permettront de nous identifier auprès du serveur. Des questions vous seront posées, répondez-y sans trop vous prendre la tête, elles n’ont pratiquement aucune incidence sur la suite.

N’oubliez pas de donner un nom personnalisé ET différent à nom_serveur et nom_client.

# Autorité de Certification
./build-ca

# Clé Serveur
./build-key-server nom_serveur # NOM À MODIFIER

# Clé Client
./build-key nom_client # NOM À MODIFIER

Nous passons ensuite à la création des paramètres Diffie-Hellman, un échange de clés cryptées qui tient son nom de ses inventeurs : Whitfield Diffie et Martin Hellman.

./build-dh

Avant d’aller plus loin, vous devez vous munir du DNS de votre hébergeur. Pour l’obtenir, il vous suffit d’éditer ce fichier :

nano /etc/resolv.conf

nameserver 127.0.0.1
nameserver 88.191.254.60 # DNS primaire des Dedibox

Le DNS est généralement en seconde ligne. Si ce n’est pas le cas (ça peut arriver), une recherche google devrait vous permettre de le retrouver.

A lire :  Subliminal : résoudre l'erreur "AttributeError: list object has no attribute lower"

Il nous faut maintenant éditer, ou plutôt créer, le fichier de configuration d’OpenVPN :

nano /etc/openvpn/server.conf

Contenu:

port 1194 # port par défaut
proto udp # on peut utiliser le protocole TCP ou UDP, ici nous utilisons l’UDP
dev tun # l’interface réseau utilisée

# Chemin vers les fichiers ssl
ca keys/ca.crt
cert keys/nom_serveur.crt # NOM À MODIFIER
key keys/nom_serveur.key # NOM À MODIFIER
dh dh1024.pem 

# NE PAS MODIFIER
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

# On définit le serveur VPN comme passerelle par défaut pour les clients
push "redirect-gateway def1" 

# On définit le DNS du serveur
push "dhcp-option DNS 88.191.254.60" # DNS À MODIFIER

Maintenant, nous allons créer un dossier et y copier les clés et les certificats :

mkdir /etc/openvpn/keys/
cd ~/openvpn/2.0/keys
cp ca.crt nom_serveur.crt nom_serveur.key /etc/openvpn/keys/ # NOMS À MODIFIER
cp dh1024.pem /etc/openvpn/

Dernière étape, la création d’un script shell qui se lancera à chaque redémarrage du serveur et qui contiendra différentes règles de routage :

cd /etc/init.d
nano openVPN.sh
chmod +x openVPN.sh
update-rc.d openVPN.sh defaults 99

Nous éditons ensuite le fichier et lui ajoutons les règles. Nous ouvrons également le port afin qu’il puisse être utilisé :

iptables -t filter -A OUTPUT -p udp --dport 1194 -j ACCEPT
iptables -t filter -A INPUT -p udp --dport 1194 -j ACCEPT
iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

Aucun redémarrage n’est nécessaire mais il faut cependant lancer le script que l’on vient de créer :

/etc/init.d/openVPN.sh

Voilà, c’est terminé pour la partie serveur !

Côté client

Maintenant que tout est opérationnel côté serveur, il faut pouvoir nous y connecter. Pour cela vous allez avoir besoin de la version client d’OpenVPN.

Une fois le programme installé, rendez-vous dans le dossier suivant (le chemin peut légèrement changer selon votre OS ou votre installation) : C:\Program Files (x86)\OpenVPN\config\

S’il n’existe pas, créez le. Et créez également le fichier config.ovpn puis ajoutez-y ces lignes :

client
dev tun
proto udp
remote IP_PUBLIQUE_DE_VOTRE_SERVEUR 1194 # IP À MODIFIER
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert nom_client.crt # NOM À MODIFIER
key nom_client.key # NOM À MODIFIER
comp-lzo
verb 3
route-method exe 
route-delay 2

Copiez dans ce répertoire les certificats et la clé client que vous aurez au préalable récupérés sur le serveur grâce à WinSCP. Ces fichiers se trouvent dans /root/openVPN/2.0/keys/ et portent les noms suivants : nom_client.key, nom_client.crt, ca.crt.

L’architecture de votre dossier config devrait finalement ressembler à ceci :
ca.crt
config.ovpn
Stephane.crt
Stephane.key
README.txt

Nous entrons désormais dans la dernière ligne droite. Sur votre bureau a dû apparaitre le raccourci OpenVPN GUI. Faites un clic droit sur celui-ci et sélectionnez Propriétés. Rendez-vous dans l’onglet Compatibilité et cochez Exécutez en tant qu’administrateur. Appliquez et fermez.

A lire :  Linux : résoudre l'erreur APT de clé publique : "no public key available for the following key IDs"

Lancez OpenVPN GUI. Une icône représentant deux moniteurs a dû apparaitre dans la barre des tâches. Elle doit à ce moment être rouge. Faites un clic droit sur cette icône et sélectionnez Connect.

Une fenêtre s’affichera et l’icône deviendra jaune puis, quelques secondes plus tard, verte. Un petit tour sur MonIP.org pour vérifier que votre adresse IP est bien celle de votre serveur, et le tour est joué ! Vous êtes désormais connectés via votre VPN !

Ce tutoriel est terminé mais il vous reste encore de nombreuses choses à explorer au sujet des VPN.

Sachez par exemple qu’il est possible de créer plusieurs clients. Vous pourrez alors permettre à un ami d’utiliser votre VPN. Il vous faudra pour cela vous placer dans le répertoire ~/openvpn/2.0/ et relancer la commande ./build-key nom_client, avec bien entendu un nom_client différent.

Sachez également qu’au bureau, un VPN configuré sur le port 443, généralement toujours ouvert puisque c’est le port utilisé par SSL, vous permettra de surfer en toute sécurité, sans craindre les restrictions imposées par l’administrateur du réseau, et de vous connecter, au hasard, sur Facebook ou MSN… Les possibilités sont nombreuses ;)

N’hésitez pas à me faire part de vos problèmes, si vous en rencontrez. Je serai ravi de vous aider !

Pour développer votre projet WordPress ou Woocommerce, faites appel à mon expertise pour réaliser un site rapide, performant et fonctionnel.

Contactez-moi

Si vous avez trouvé une faute d’orthographe, informez-nous en sélectionnant le texte en question et en appuyant sur Ctrl + Entrée s’il vous plaît.

Articles en rapport:

Créer un réseau privé virtuel (VPN) sous Debian

par Stéphane Lecture: 8 min

Pin It on Pinterest

Share This

Spelling error report

The following text will be sent to our editors: