Maniatux's Blog

Welcome to the internet

Serveur VPN: #1 Installation et configuration de base

Rédigé par Xavier - -

Les VPN commencent à devenir très célèbres car ils constituent des moyens pour contourner les filtrages mis en place par certains pays non démocratiques (dont la France bientôt). Mais bien avant cela, ils étaient déjà très utilisés en entreprise. Une entreprise disposant de plusieurs antennes peut fonctionner sur un seul réseau grâce à ça, et de manière sécurisée.

vpn

Le fonctionnement est simple, un tunnel est créé entre les clients et le serveur. Des cartes réseau virtuelles sont créés sur les machines, et grâce au tunnel elles peuvent communiquer ensemble, comme si elles étaient directement connectée. Donc, par exemple, quelqu'un situé en Egypte peut se connecter à son réseau local en France grâce au VPN, et accéder a ses partages, son imprimante, etc...

Dans la première partie de ce tutoriel, nous allons apprendre à configurer un serveur VPN et deux clients (un Linux et un Windows) de manière simple. Dans la seconde partie nous verrons comment accéder à un réseau local à travers un VPN à l'aide des routes.

Logiciels

  • Ubuntu/Debian
  • Windows Seven (client uniquement)

Compétences

  • Utiliser la ligne de commandes
  • Savoir faire un réseau TCP/IP fonctionnel
  • Savoir transférer des fichiers (à l'aide d'une clé usb, d'un partage réseau...) si votre serveur est en mode console
  • Administration d'un système Windows

Réseau

Vous pouvez faire les manipulations sur des machines physiques ou virtuelles. Pour l'exemple, nous en utiliserons trois:

  • Serveur debian en 192.168.0.1
  • Client Ubuntu en 192.168.0.50
  • Client Windows 7 en 192.168.0.100

Plan et fonctionnement

Un VPN est quelque chose de très restrictif, aussi dans notre exemple nous allons devoir générer des autorisations pour chaque client amené à se connecter. Voici ce que nous allons faire:

  1. Installation d'OpenVPN
  2. Génération des clés de sécurité serveur & clients
  3. Création d'un utilisateur pour OpenVPN
  4. Configuration du serveur
  5. Configuration du client Ubuntu avec Network-Manager
  6. Configuration du client Ubuntu sans Network-Manager
  7. Configuration du client Seven

Côté serveur: installation d'OpenVPN

Les paquets nécessaires sont disponibles dans les dépôts de Ubuntu et Debian. Il faut donc installer OpenVPN et OpenSSL (le second est pour générer les clés de sécurité).

# apt-get install openvpn openssl

Passons maintenant à la suite.

Côté serveur: génération des clés

OpenVPN fournit des scripts pour générer de manière simple les clés. Ils sont situés dans /usr/share/doc/openvpn/examples/easy-rsa/. Mais pour plus de commodité nous allons les copier dans /root (le répertoire personnel de root, sous lequel nous travaillons pour l'instant).

# cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /root/openvpn

Entrez ensuite dans le répertoire /root/openvpn puis dans son sous-répertoire 2.0:

# cd /root/openvpn/2.0

Il faut commencer par lancer un script qui va préparer la génération des certificats:

# . ./vars
# ./clean-all

Ensuite, il faut exécuter le script "build-ca":

# ./build-ca

Le script va vous poser plusieurs questions, auxquelles vous n'êtes pas obligé de répondre SAUF "Common Name" (vous devez indiquer le nom de votre serveur, il sera utilisé plus tard).

Une fois que c'est bon, vous pouvez générer un second script pour votre serveur, avec la commande ./build-key-server NOMDUSERVER. Par exemple, si notre serveur s'appelle "DebVPN":

# ./build-key-server DebVPN

Même topo ici, ne renseignez rien sauf le Common Name. Ne mettez pas de mot de passe. A la question "Sign the certificate? [y/n]: " répondez Y, et de même pour la question suivante. Maintenant nous allons créer les certificats pour les clients.

Vous devez entrer la commande ./build-key NOMCLIENT. Par exemple nous allons en générer un pour le client "ubuntu":

# ./build-key ubuntu

Vous devrez encore répondre Y aux questions. Répétez l’opération pour le client "seven":

# ./build-key seven

Dernière étape, lancez le script build-dh:

# ./build-dh

Nous allons maintenant copier les clés et certificats destinés au serveur dans le dossier de configuration d'openVPN situé dans /etc/openvpn:

# cp ./keys/ca.crt /etc/openvpn/
# cp ./keys/DebVPN.crt /etc/openvpn/
# cp ./keys/DebVPN.key /etc/openvpn/
# cp ./keys/dh1024.pem /etc/openvpn/

Dans le dossier /root/openvpn/2.0/keys vous trouverez également:

seven.crt
seven.key
ubuntu.crt
ubuntu.key
ca.crt

Ce sont les clés destinées aux clients. Vous devrez leur donner, à l'aide d'une clé usb, d'un accès sftp, etc...

Côté serveur: création d'un utilisateur pour OpenVPN

Nous allons créer un utilisateur inoffensif pour faire tourner OpenVPN. Cet utilisateur s'appellera OpenVPN et n'aura aucun droit sur le système:

# groupadd openvpn
# useradd -d /dev/null -g openvpn -s /bin/false openvpn

La première commande créé un groupe nommé "openvpn". Celui-ci n'a aucun droit. La deuxième commande créé l'utilisateur "openvpn". L'option "-d" indique le répertoire personnel par défaut. L'indication "-s" son shell par défaut. Les deux options pointent vers des "pièges". Ainsi, il n'y a pas de répertoire perso ni de shell.

Configuration du serveur

Des fichiers de configuration d'exemples peuvent être trouvés dans /usr/share/doc/openvpn/examples/sample-config-files/ mais nous allons créer le notre de A à Z. Créez un fichier server.conf dans /etc/openvpn:

# nano /etc/openvpn/server.conf

Voici ce que nous allons mettre dedans:

# Port du serveur
port 1194

# Protocole
proto udp

# Utilisation d'un tunnel pour les connexions
dev tun

# Clés et certificats du serveur
ca ca.crt
cert DebVPN.crt
key DebVPN.key
dh dh1024.pem

# Le sous réseau des interfaces virtuelles
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

# Compression LZO
comp-lzo

# Utilisateur et groupe
user openvpn
group openvpn

# Maintient de la configuration après restart
persist-key
persist-tun

# Fichier de log
status openvpn-status.log

# Niveau de verbosité
verb 1

Maintenant nous pouvons démarrer le serveur:

# /etc/init.d/openvpn start

Avec un ifconfig, vous devez voir apparaitre une nouvelle interface réseau nommée "tun0" et portant l'adresse 10.8.0.1. Si ce n'est pas le cas ou si vous avez un message d'erreur, consultez le fichiers /var/log/syslog ou /etc/openvpn/openvpn-status.log

Configuration du client Ubuntu avec Network-Manager

Tout d'abord, récupérez sur la machine les fichiers suivants:

  • ca.crt
  • ubuntu.key
  • ubuntu.crt

Ensuite, il y a plusieurs moyens de se connecter. Le plus simple est d'utiliser network-manager, le gestionnaire de réseau par défaut sous Ubuntu (et pas mal d'autres distributions). Commencez par installer le module VPN pour networkmanager:

$ sudo apt-get install network-manager-openvpn

Ensuite relancez network-manager ainsi que l'applet (ou redémarrez votre machine si vous voulez):

$ sudo /etc/init.d/network-manager restart
$ pkill nm-applet
$ nm-applet &

Sur l'applet network-manager, faites un clic gauche puis allez dans "Connexions VPN" puis "Configurer le VPN".

Ajoutez-en un nouveau, puis sélectionnez le type "OpenVPN".

  • Passerelle: 192.168.0.1
  • Certificat utilisateur: ubuntu.cert
  • Certificat du CA: ca.crt
  • Clé privée: ubuntu.key

Cliquez ensuite sur "Avancé" et cochez "utiliser la compression de données LZO" ainsi que "port de passerelle personnalisé" (1194).

Ensuite validez et fermez le tout. Faites un clic gauche sur l'applet de Network-manager et allez dans "Connexions VPN" et sélectionnez celui que vous venez d'ajouter. Après quelques secondes, si vous voyez un petit cadenas sur l'icône, et que le tout est statique, alors c'est bon. Pour vérifiez, lancez un terminal et faites un ifconfig. Vous devez avoir une interface tun0. Lancez un ping vers 10.8.0.1 (le serveur, à travers le VPN). Si vous avez une réponse, c'est bon!

Configuration du client Ubuntu sans Network Manager

Pour ceux qui n'ont pas Network-Manager, ou si cela ne fonctionne pas, vous pouvez initier la connexion à l'ancienne. Pour cela, commencez par installer OpenVPN sur le client:

$ sudo apt-get install openvpn

Dans le dossier /etc/openvpn vous devez copier les clés destinées au client Ubuntu. Pour rappel: ca.crt, ubuntu.crt, ubuntu.key

Ensuite on va créer un fichier texte dans lequel on met nos paramètres:

$ sudo nano /etc/openvpn/config.conf

Dans ce fichier, entrez les paramètres suivants:

# Mode de fonctionnement client
client

# Fonctionnement en tunnel
dev tun

# Protocole UDP
proto udp

# Adresse serveur et port
remote 192.168.0.1 1194

# Paramètres divers
resolv-retry infinite
nobind

# Mode persistant
persist-key
persist-tun

# Certificats
ca ca.crt
cert ubuntu.crt
key ubuntu.key

# Compression LZO
comp-lzo

# Mode verbeux
verb 1

Ensuite vous pouvez lancer le serveur:

$ sudo /etc/init.d/openvpn start

Vous devriez voir apparaitre une nouvelle interface réseau, tun0. Essayez de lancer un ping sur le serveur (10.8.0.1) et voyez si il répond.

Configurer un client Windows

Vous devez télécharger une version récente de OpenVPN sur Windows. Vous pouvez en trouver une ici: http://www.fiberworks.com/DNN/Support/OpenVPN/tabid/171/Default.aspx. Installez-la. Dans le centre Réseaux et Partages, vous devez voir une nouvelle carte réseau (virtuelle).

Ensuite vous allez devoir créer un fichier de config nommé client.ovpn dans c:\Program Files\OpenVPN\config

Si vous travaillez avec Notepad++, n'oubliez pas de le lancer en mode administrateur sinon l'écriture échouera. Dans ce fichier, entrez les lignes suivantes:

# Mode de fonctionnement client
client

# Fonctionnement en tunnel
dev tun

# Protocole UDP
proto udp

# Adresse serveur et port
remote 192.168.0.1 1194

# Paramètres divers
resolv-retry infinite
nobind

# Mode persistant
persist-key
persist-tun

# Certificats
ca ca.crt
cert seven.crt
key seven.key

# Compression LZO
comp-lzo

# Mode verbeux
verb 1

Toujours dans le même répertoire (c:\Program Files\openVPN\config) vous deviez copier vos fichiers de clés et certificats (ca.crt, seven.crt et seven.key).

L'étape suivante consiste à démarrer le service OpenVPN. Les services Windows se trouvent dans: Panneau de configuration > Outils d'administration > Services. Dans la liste, vous allez devoir trouver OpenVPN.

Faites un clic droit puis "Démarrer". Lancez OpenVPN GUI (il y a un racourci sur le bureau, ou alors trouvez-le dans le menu démarrer. Dans la barre des tâches, un nouvel icône apparait. Faites un clic droit dessus puis "Connect". Si tout se passe bien, il vous dira que vous êtes maintenant connecté au VPN. Ouvrez une console et lancez un Ping sur le serveur. Si vous avez des erreurs, essayez de lancer OpenVPN-GUI en administrateur.

Classé dans : Sysadmin - Mots clés : aucun