TOTAL
Depuis Dec 2006
1'942'871 Visiteurs
4'218'042 Pages

Stats Nov 2010
82'909 Visiteurs
146'476 Pages
196 pays
Statistiques completes



Aidez-nous à traduire
nos tutoriaux!

REJOINGNEZ
l'équipe OpenManiak.
OPENVPN - Le Tutorial Facile - Tutorial

OpenVPN Tutorial
Dernière modif: Mar 12 2008


Outil
Installation
Ergonomie
Forum



Détails OpenVPN, c'est quoi?
Captures d'écran
Prérequis & Installation
Tutorial OpenVPN
-----MODE DE SECURITÉ -----------
Tunnel transparent
Clef statique
SSL & PKI (certificats)
-----ÉTUDE DE CAS-----------
VPN IP (TUN)
VPN Ethernet (TAP)
Configurations VPN avancées
----------------
Bridging
Routing




If you like our tutorials, don't hesitate to support us and visit our sponsors!
Si vous aimez nos tutoriaux, n'hésitez pas à nous supporter et visiter nos sponsors!



INSTALLATION D'OPENVPN:

Suivez le tutorial d'installation d'OpenVPN.

ARCHITECTURE CLIENT/SERVER:

Parmi les deux boitiers OpenVPN, il est nécessaire d'en déclarer un en tant que serveur et l'autre en tant que client. Dans certains scenarios, chaque boitier peut être déclaré comme serveur ou client, mais dans d'autres, il est obligatoire de choisir spécifiquement un boitier comme serveur et l'autre comme client, regardons quand.
Avant d'établir le VPN SSL, le client essaie d'abord de joindre le serveur sur un port spécifique, le serveur n'ayant pas besoin d'atteindre le client. Prenons un exemple où vous êtes dans un environnement professionnel et voulez établir un VPN avec un équipement directement connecté à Internet, disons un équipement à votre domicile.
Dans ce cas usuel, le client peut atteindre le serveur mais pas le contraire, Ceci est du au fait que le client est situé dans un réseau local et se connecte à Internet via un proxy et un Pare-feu qui vont changer son adresse IP source par leur propre adresse IP ou une autre membre d'un pool.
Bien-sûr, quand le tunnel est créé, le trafic en son intérieur est bidirectionnel.



FICHIER DE CONFIGURATION:

Créez un fichier où vous stockez votre configuration d'OpenVPN.
Dans notre exemple, nous allons appeler ce fichier config.txt and le sauver dans le dossier /home/user/ ou "C:\Program Files\OpenVPN\config\" selon s'il s'agit d'une machine Linux/Unix ou Microsoft.

Les paramètres de configuration sont présentés dans les paragraphes suivants.

DESIGNATION CLIENT/SERVEUR :

SERVEUR CLIENT
# ADRESSE IP DU SERVEUR
# L'adresse IP WAN du client n'est pas
# requise
# ADRESSE IP DU SERVEUR
remote 100.0.0.1
#
MODE DE TUNNEL:

Vous pouvez choisir entre un tunnel IP (pilote TUN) ou Ethernet (pilote TAP).
Le tunneling IP est également appelé mode de routage tandis que le tunneling Ethernet est aussi appelé mode pont (bridging).
Préférez le mode tunnel IP (par défaut) à moins que vous n'ayez besoin de faire passer du trafic ethernet comme du NetBios dans le tunnel.

PORT DU TUNNEL:

Le port source et destination de tunneling est par défaut le port UDP 1194. Il est possible qu'il soit nécessaire de le changer pour des raisons d'ouverture de port sur le pare-feu autrement vous pouvez le garder telle quelle.
Preferez les ports UDP. L'utilisation de TCP peut mener à la dégradation des performances.

Comme la majorité des applications utilisent TCP, si un mode de tunnel TCP est également choisi, vous allez créer un tunnel TCP sur TCP (TCP over TCP). Ce mode de tunnel n'est pas recommandé parce qu'en cas de retransmissions de paquets à l'intérieur du tunnel, des recalcules vont intervenir dans les deux tunnels, ce qui va mener à de basses performances comme un temps de réponse élevé. Préférez le protocole UDP pour tunneliser vos applications parce que UDP ne fournit pas de mecanisme de vérification d'erreur comme le fait TCP.
Lisez cet article pour obtenir plus de détails à propos du problème des tunnels TCP sur TCP.

SERVEUR ET CLIENT
# TUNNEL TCP OU UDP
# TCP tunnel

proto tcp
# Tunnel UDP est recommandé
proto udp
# Utilisez UDP ou TCP mais pas les deux
#
# PORT TCP OU UDP

port 1194
PARAMETRAGES DU FIREWALL:

Vous devez vérifier que l'adresse IP de votre client OpenVPN peut atteindre l'adresse IP de votre serveur ainsi que le port TCP/UDP.
Voici un exemple d'une règle de sécurité qui peut être implémenté sur le pare-feu du schéma ci-dessous.



Grâce à la simplicité des configurations d'OpenVPN, les problèmes pour établir une connexion proviennent très souvent de restrictions d'adresses IP ou de ports sur le chemin entre le client et le serveur.

TUNNEL ETHERNET/IP:

Vous pouvez choisir de construire soit des VPNs Ethernet, soit des VPNs IP avec l'aide respectivement des pilotes TAP et TUN. TAP/TUN sont disponibles sur toutes les plates-formes et sont déjà présent avec les Linux noyau 2.4 et supérieur.
Préférez TUN (par défaut) à moins que vous avez besoin de faire passer du trafic Ethernet comme du NetBios à l'intérieur du tunnel.

Pour vérifier que les pilotes TUN/TAP sont chargés:

#lsmod | grep tun
tun 12672 1

Notez que le pilote "tun" est aussi le pilote TAP.
Si vous n'avez aucune réponse, vous pouvez le module du noyau de la façon suivante:

#modprobe tun
SERVEUR et CLIENT
# TUNNEL ETHERNET OU IP
# "dev tun" will create a routed IP tunnel

dev tun
# "dev tap" will create an Ethernet IP tunnel
dev tap
# use "dev tun" or "dev tap" but not both
ARCHITECTURE OPENVPN de SECURITE:

Transparent tunnel:

OpenVPN tunnelise juste les données sans authentification, confidentialité ou intégrité. En d'autres termes, il n'y a aucune vérification de sécurité et les données peuvent être vues quand elles transitent dans le tunnel.

SERVEUR et CLIENT
# Client AND Server configs
# Pas d'intégrité (algorithme
# de hachage)

auth none
# Pas de chiffrement (algorithme de chiffrement)
cipher none
Clefs partagées:

Une combinaison secrète et permanente est partagées entre les deux passerelles VPN.

Créez d'abord les clefs partagées avec le tutorial de création de clefs partagées.
SERVEUR et CLIENT
# CLEFS PARTAGEES
# Système LINUX
static /home/user/openvpn/key.txt
# Système Windows
static "C:\\Program Files\\OpenVPN\\config\\key.txt"
#openvpn /home/teddybear/openvpn/config.txt
>openvpn "C:\Program Files\OpenVPN\config\config.txt"

SSL/TLS:

- Client ou serveur SSL/TLS:

SERVEUR CLIENT
# SERVEUR SSL/TLS
tls-server
# CLIENT SSL/TLS
tls-client
- Certificats et clefs publiques:

Chaque équipement doit avoir ses propres clefs privée et publique. La clef publique étant incluse dans un certificat.
Le certificat de l'autorité de certification (CA) doit aussi être détenu par chaque équipement OpenVPN.

Voir le Tutorial sur la PKI pour comprendre l'infrastructure à clés publiques (Public Key Infrastructure) et savoir comment créer des clefs publiques et des certificats.
SERVEUR CLIENT
# CERTIFICATS ET CLEF PRIVEE
# Certificat de l'autorité (clef publique du CA)

ca ca.key
# Certificat du server (clef publique du serveur)
cert server.crt
# Clef privée du serveur
key server.key
# CERTIFICATS AND CLEF PRIVEE
# Certificat de l'autorité (clef publique du CA)

ca ca.key
# Certificat du client (clef publique du serveur)
cert client.crt
# Clef privée du client
key client.key
- Paramètres Diffie-Hellmann (DH):

Une fois que les boitiers OpenVPN sont surs de l'identité de l'autre (authenticité), DH peut être utilisé pour créer un clef secrète partagée pour les algorithmes de fonction de hachage (intégrité) et de chiffrement (confidentialité).
En combinant un clef DH privée avec la clef DH public de l'autre boitier OpenVPN, il est possible de calculer une clef partagée secrète que seul les deux machines OpenVPN connaissent.

Voir le Tutorial SSL et PKI pour savoir comment créer les paramètres DH.


SERVEUR CLIENT
# Paramètres Diffie-Hellman
dh dh1024.pem
# Aucun paramètre DH sur le client
#
Cette clef DH partagée peut être comparée à la clef partagée OpenVPN.
Ces clefs partagée seront utilisées par les algorithmes de chiffrement symétrique et fonctions de hachage comme montré dans les deux prochains paragraphes.

ALGORITHME DE CHIFFREMENT

SERVEUR et CLIENT
# ALGORITHME DE CHIFFREMENT
cipher AES-256-CBC
- La confidentialité est assurée par des algorithmes de chiffrement comme 3DES ou AES pour empêcher la lecture des données.
L'algorithme OpenVPN par défaut est le Blowfish (signifiant poisson-lune en français).
Pour vérifier les algorithmes disponibles:

#openvpn --show-ciphers
DES-CBC 64 bit default key (fixed)
IDEA-CBC 128 bit default key (fixed)
RC2-CBC 128 bit default key (variable)
DES-EDE-CBC 128 bit default key (fixed)
DES-EDE3-CBC 192 bit default key (fixed)
DESX-CBC 192 bit default key (fixed)
BF-CBC 128 bit default key (variable)
RC2-40-CBC 40 bit default key (variable)
CAST5-CBC 128 bit default key (variable)
RC5-CBC 128 bit default key (variable)
RC2-64-CBC 64 bit default key (variable)
AES-128-CBC 128 bit default key (fixed)
AES-192-CBC 192 bit default key (fixed)
AES-256-CBC 256 bit default key (fixed)


CBC pour Cipher Block Chaining (Chiffrement par bloc de données) est un mode opérationel de cryptographie utilisé pour chiffrer les données avec un algorithme de chiffrement par bloc comme CBC utilise de petits segments de données, à la place de processer des blocs entiers en une fois, d'autres modes d'operation cryptographique sont EBF, OFB, CFB. CBC est recommandé.

ALGORITHME DE HACHAGE

- L'intégrité utilise des fonctions de hachage pour protéger l'altération des données.
HMAC est souvent utilisé en addition de SHA1 et MD5.
Les fonctions de hachage par défaut de OpenVPN sont HMAC-SHA1.
Pour vérifier les algorithmes disponibles:

#openvpn --show-digests
MD2 128 bit digest size
MD5 128 bit digest size
RSA-MD2 128 bit digest size
RSA-MD5 128 bit digest size
SHA 160 bit digest size
RSA-SHA 160 bit digest size
SHA1 160 bit digest size
RSA-SHA1 160 bit digest size
DSA-SHA 160 bit digest size
DSA-SHA1-old 160 bit digest size
MDC2 128 bit digest size
RSA-MDC2 128 bit digest size
DSA-SHA1 160 bit digest size
RSA-SHA1-2 160 bit digest size
DSA 160 bit digest size
RIPEMD160 160 bit digest size
RSA-RIPEMD160 160 bit digest size
MD4 128 bit digest size
RSA-MD4 128 bit digest size


SERVEUR et CLIENT
# ALGORITHME DE HACHAGE
auth MD5
"openvpn --show-tls" affiche le chiffrement et le code d'authentification du message (MAC) utilisé durant la négociation SSL/TLS. Ils ne doivent pas être confondus avec le chiffrement et le MAC utilisé pour sécuriser le tunnel.

ADRESSES IP:

Choississez les adresses IP que vous voulez utiliser à l'intérieur du tunnel.

Adresses IP statiques:

En mode routé, deux adresses IP (locale et distante) à l'intérieur d'un masque de sous-réseau de 30 bits doivent être choisi.
En mode pont (bridged), une adresse pour le boitier local OpenVPN et un masque de sous-réseau incluant l'adresse IP du serveur sont choisis.

SERVEUR CLIENT
# ADDRESSAGE IP
# Exemple mode IP:
# Serveur IP: 10.8.0.1 ; Client IP: 10.8.0.2

ifconfig 10.8.0.1 10.8.0.2
# Exemple mode pont
# Serveur IP: 10.8.0.1

ifconfig 10.8.0.1 255.255.255.0
# Utilisez le mode IP ou bridge mais
# pas les deux
# Le client et le serveur doivent utiliser
# le même mode de tunnel
# ADDRESSAGE IP
# IP Tunnel
# Serveur IP: 10.8.0.1 ; Client IP: 10.8.0.2

ifconfig 10.8.0.2 10.8.0.1
# Exemple mode pont
# Client IP: 10.8.0.2

ifconfig 10.8.0.2 255.255.255.0
# # Utilisez le mode IP ou bridge mais
# pas les deux
# Le client et le serveur doivent utiliser
# le même mode de tunnel
Adresses IP dynamiques:

Dans ce cas, le serveur possède une adresse IP statique et fournir des adresses IP aux clients comme un serveur DHCP.

SERVEUR CLIENT
# PARAMETRES DHCP
# Etendue DHCP
# Le serveur s'attribue la première
# adresse de l'étendue
server 10.8.0.0 255.255.255.0
# LE CLIENT ACCEPTE LES OPTIONS
# DU SERVEUR
# Le client devrait accepter les options
# poussées par le serveur

pull
PARAMETRES OPTIONELS:

OpenVPN offre un très large nombre de paramètres.
Référez-vous à la page man OpenVPN pour de l'assistance.

PARAMETRES DE JOURNALISATION:

La verbosité du journal (log) est configuré de 0 (minimal) à 15 (complet). Dans une utilisation normale, les niveaux verbeux "2" et "4" vont déjà fournir assez de journaux.

# Niveau de verbosité.
# 0 -- Erreurs fatales seulement.
# 1 -- Très silencieux mais affiche des erreurs non-fatales.
# 3 -- Sortie moyenne, idéal pour des opérations moyennes.
# 9 -- verbeux, bon pour un dépannage.

SERVEUR and CLIENT
# VERBOSITE DU JOURNAL
# Paramétrage de la verbosité du journal, 0=min 15=max

verb 3


UTILISATEUR OPENVPN:

Pour des raisons de sécurité, c'est toujours mieux de faire tourner un logiciel sans les privilèges root.
Vous pouvez réduire les privilèges du démon OpenVPN après initialisation pour opérer en tant qu'utilisateur "nobody".
Une autre chose intéressante pour la sécurité est de limiter le droit pour OpenVPN à accéder à des fichiers après initialisation avec "chroot".

Ces deux paramètres de sécurité sont disponibles sous des systèmes comme Linux ou Unix mais pas sous Microsoft Windows. Une autre raison de préférer des outils open source comme les systèmes opérationels Linux ...

SERVEUR and CLIENT
# SECURITE OPENVPN - Linux seulement
# Utilisateur OpenVPN
user nobody
# Après initialisation, OpenVPN peut
# seulement accéder à un dossier
# Le dossier peut être vide
# Limitation du processus OpenVPN

chroot /etc/openvpn/
LANCEMENT D'OPENVPN:

Utilisez la syntaxe suivante pour lancer OpenVPN.

#openvpn chemin-du-fichier-de-configuration
Ci-dessous deux exemples avec Linux et Windows. Le fichier de config est "config.txt":

#openvpn /home/teddybear/openvpn/config.txt
>openvpn "C:\Program Files\OpenVPN\config\config.txt"
VERIFICATION DES JOURNAUX:

Le journal devrait se terminer avec la ligne suivante:

Initialization Sequence Completed

Ceci indique que le tunnel OpenVPN a été créé avec succès.

TESTS DE CONNECTIVITES:

Ping est un utilitaire commun pour vérifier les connectivités IP.
Les passerelles VPN devraient pinger l'adresse IP tunnel de l'autre.
Par exemple, dans notre scenario, nous pingons l'adresse IP tunnel du client depuis le serveur:

ping 10.8.0.2
VERIFICATION DU PROCESSUS OPENVPN:

A venir bientôt ...


Here are some OpenVPN default values:

PARAMETRE: VALEUR:
port source et dest: UDP 1194
Mode de tunnel: Tunnel IP (mode tun)
Chiffrement symétrique: Blowfish - CBC (128 bits)
Fonctions de hachage: HMAC - SHA1 (160 bits)
Compression: NON
MTU du tunnel: 1500 bytes
mode verbeux: 0
Haut de la page





If you liked our tutorials, don't hesitate to support us and visit our sponsors!
Si vous aimez nos tutoriaux, n'hésitez pas à nous supporter et visiter nos sponsors!