Mettre en place un VPN

Le VPN c'est quoi ?

Le Réseau privé virtuel (VPN) présenté ici, est vu comme une extension des réseaux locaux et préserve la sécurité logique que l'on peut avoir à l'intérieur d'un réseau local. Il correspond en fait à une interconnexion de réseaux locaux via une technique de "tunnel". Un réseau privé Virtuel repose sur un protocole, appelé protocole de tunnelisation (tunneling), 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.

Pré-requis et mise au point sur l'article

Attention, veuillez bien lire ce qui suit avant de foncer tête baissée :

  • Puissance de la machine : dépend du nombre d'utilisateurs, je vais interroger un admin qui à mis ça en place avec un nombre conséquent de client ;
  • Dans notre cas, on utilise OpenVPN bien sûr (libre, gratuit, toussa..) ;
  • L'article n'est pas finalisé, là on parle juste de se connecter en VPN, pas de ce qui se passe post-connexion VPN (pour l'instant) ;
  • Les paquets suivant sont nécessaires : openvpn, liblzo (pour la compression), openssl (pour les certificats) ;
  • A insérer, image architecture du réseau.

FIXME

Sur le serveur

Dans un premier temps, on va créer les certificats, fichiers indispensables pour s'authentifier sur le VPN, aussi bien du coté serveur que client. C'est le serveur qui génère tous les certificats (ceux des clients, mais aussi le sien).

  • Préconfiguration des certificats
cd /usr/share/doc/openvpn/examples/easy-rsa/

Il faut éditer le fichier « vars », puis remplir à la fin de celui-ci, les champs suivant, à votre guise bien sûr :

export KEY_COUNTRY=XX
export KEY_PROVINCE=MonPays
export KEY_CITY=MaVille
export KEY_ORG=”MaPetiteEntreprise”
export KEY_EMAIL=”contact@MaPetiteEntreprise.fr”

La KEY_CONTRY est bien sûr le code "pays" : FR pour France, UK pour United Kingdom etc.

  • Initialisation des certificats
. vars
./clean-all
  • Le certificat principal
./build-ca

Attention, tous les champs sont pré-remplis, grâce à l'édition précédente du fichier vars, SAUF le common name. Mettez ce que vous voulez (« principal » par exemple, est souvent utilisé).

  • Le certificat du serveur
./build-key-server serveur

Attention là aussi, champs pré-remplis. Sauf le common name, mettre à « serveur » par exemple, c'est pas mal ;)

  • Le certificat d'un client

On va créer un certificat pour un client. Il faut un certificat par client, donc n'hésitez pas à scripter ce qui suit ;)

On va produire ici un certificat « Client01.crt » et sa clef « Client01.key »

cd /usr/share/doc/openvpn/examples/easy-rsa/
. vars
./build-key Client01
  • Création du paramètre Diffie Hellman (ça c'est la classe)
./build-dh
  • Copie des certificats
cp ./keys/ca.crt /etc/openvpn/
cp ./keys/ca.key /etc/openvpn/
cp ./keys/serveur.crt /etc/openvpn/
cp ./keys/serveur.key /etc/openvpn/
cp ./keys/dh1024.pem /etc/openvpn/
  • Fichier de configuration d'OpenVPN
# Port en écoute utilisé pour la connexion VPN
 
port XXX
 
# Protocole utilisé
 
proto udp
 
# Type d’interface réseau virtuelle créée
 
dev tun
 
# Nom des fichiers servant à l’authentification des clients via OpenSSL
 
ca /etc/openvpn/ca.crt
cert /etc/openvpn/serveur.crt
key /etc/openvpn/serveur.key
dh /etc/openvpn/dh1024.pem
 
# Adresse du réseau virtuel (Le serveur aura l’adresse 192.168.0.1)
 
server 10.8.0.0 255.255.255.0
 
# Cette ligne ajoute sur le client la route du réseau du serveur
 
push "route 192.168.0.0 255.255.255.0"
 
# Ces lignes indiquent aux clients l’adresse des serveur DNS et WINS
 
push "dhcp-option DNS 192.168.0.254"
push "dhcp-option WINS 192.168.0.254"
 
# Cette ligne permet aux clients de voire les autres clients
 
client-to-client
keepalive 10 120
 
#Cette ligne active la compression
 
comp-lzo
 
#Ces lignes permettent de rendre persistante la connexion
 
persist-key
persist-tun
 
#Cette ligne permet d’indiquer le niveau de log souhaité (de 1 à 9)
 
verb 3

Voilà ! Attention si votre VPN n'est pas directement sur votre Routeur, pensez à router le port quivabien :-P

Chez les clients

Clients GNU/Linux

On parlera ici de l'utilisation du Vpn via le Network Manager. Tout d'abord :

sudo aptitude install network-manager-openvpn

Ensuite, clique droit sur l'icône du network manager. Menu Connexions VPN, Configurer le réseau VPN. On clique ensuite sur Ajouter, puis Suivant, vérifiez que vous avez bien sélectionné "OpenVPN Client", puis Suivant encore. Connection Name : Celui que vous voulez, celui qui sera vu dans la liste des VPN configuré.

Ensuite :

  1. Gateway address : ip ou nom de votre serveur VPN
  2. Gateway port : le port ;)
  3. Connection Type : X.509 Certificates
  4. CA File : le fichier "ca.crt"
  5. Certificate : le fichier "NomDuClient.crt"
  6. Clef : le fichier "NomDuClient.key"

Allez donc aussi faire un tour dans l'onglet Optional pour activer la compression (cochez la case "Use LZO compression".

Ensuite, suivant et le tour est joué ! Pour vous connecter à ce VPN, clique gauche sur le Network Manager, puis Connexion VPN, et sélectionnez le VPN fraîchement configuré :) Un petit cadenas vous indiquera que vous êtes bien connecté.

Clients Microsoft Windows©

Installez OpenVPN, disponible ici : http://openvpn.net/download.html.

Lors de l’installation de ce programme, la carte réseau virtuelle « TAP-Win32 Adapter V8 » est installée. Une fois le programme installé, il est lancé automatiquement et à chaque démarrage de Windows. Un icône pour le configurer est disponible à coté de l’heure.

Une version française du front-end est disponible par ici : http://openvpn.se/files/localized/binary/1.0.3/openvpn-gui-1.0.3-fr.exe

La première chose à faire est de copier dans le dossier « C :\Program Files\OpenVPN\config » les fichiers servant à l’authentification du client via OpenSSL créés dans les chapitres précédents : - ca.crt, Client01.crt et Client01.key

Ensuite, il faut modifier le fichier de configuration pour l’adapter à votre cas. Pour éditer le fichier, il est possible de faire un clic droit sur l’icône « OpenVPN » situé à gauche de l’heure et de choisir l’option « Éditer la configuration ».

# on indique que c'est un client
client
 
# on est en mode tunneling
dev tun
 
# on utilise de l'UDP
proto udp
 
# l'adresse du serveur vpn, ainsi que son port
remote monserveurvpn.com 1194
 
# on essaie à l'infini de se connecter
resolv-retry infinite
nobind
 
# on veut laisser la connexion ouverte en permanence
persist-key
persist-tun
 
# la liste des certifs
ca ca.crt
cert Client01.crt
key Client01.key
 
# on indique qu'on utilise la compression
comp-lzo
 
# le degré de verbose
verb 1
debian/mettre_en_place_un_vpn.txt · Dernière modification: 2008/11/06 13:56 (édition externe)
Haut de page
CC Attribution-Noncommercial-Share Alike 3.0 Unported chimeric.de = chi`s home Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0