jeudi 30 mai 2013

Comment créer son VPN avec OpenVPN GUI

Le VPN Virtual Private Network ou en français réseau privé virtuel permet d'inter-connecter plusieurs ordinateurs entre eux à travers internet. Ici je vais vous montrer comme réaliser ce réseau avec un maximum de sécurité possible.

Tout d'abord nous allons commencer par installer OpenVPN GUI qui peut être téléchargé ici. Ce dernier nous permettra de mettre en place notre VPN avec chiffrement SSL.

Pour procéder à l'installation il suffit de suivre les étapes (suivant -suivant-suivant), n'oublier pas d'accepter l'installation de la carte réseau virtuelle.


Nous allon créé 2 scripts batch qui nous permettront de générer les certificats.

Le premier se nommera build-req.bat dont voici le code

@echo off
cd %HOME%
rem build a request for a cert that will be valid for ten years
openssl req -days 3650 -nodes -new -keyout %KEY_DIR%\%1.key -out %KEY_DIR%\%1.csr -config %KEY_CONFIG%
rem delete any .old files created in this process, to avoid future file creation errors
del /q %KEY_DIR%\*.old

Et le second code que nous nommerons sign-req.bat
 
@echo off
cd %HOME%
rem sign the cert request with our ca, creating a cert/key pair
openssl ca -days 3650 -out %KEY_DIR%\%1.crt -in %KEY_DIR%\%1.csr -config %KEY_CONFIG%
rem delete any .old files created in this process, to avoid future file creation errors
del /q %KEY_DIR%\*.old


Copiez ces 2 scripts dans le répertoire d'installation C:\Program Files\openvpn\easy-rsa

Dans le dossier ci-dessous appuyer sur la touche shift de votre clavier et faites un clic droit et sélectionner Ouvrir une fenêtre de commande ici

Dans le terminal, tapez les commandes suivantes:

init-config (on initialise la configuration de base en faisant un RAZ)
vars (on initialise les variables)
clean-all (afin d'effacer quelques manipes que vous auriez tenté)
build-ca (on génère le certificat privé qui ne doit en aucun cas être diffusé)

Plusieurs informations vous sera demandé pour le certificat (ci-dessous un exemple)

Country Name (2 letters code) [AU]: FR
State or Province Name (full name) [Some-State]: Ile de France
Locality Name (eg, city) []: Paris
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Babass
Organizational Unit Name (eg, section) []: babass.fr
Common name (eg, your name or your server's hostname) []: Sebastien
Email Address []: votre.adresse@gmail.com

Un dossier keys apparait dans le dossier easy-rsa

ca.crt: notre certificat d'authentification privé qui sera diffusé à nos clients
ca.key: la clé de ce certificat, il permettra de signer les certificats de nos clients

Maintenant créons le certificat serveur; toujours dans le terminal lancer la commande suivante

build-key-server serveur (serveur correspondant au nom de votre serveur)

Renseigner les informations demandées mais cette fois dans le Common Name entrez serveur
Challenge password et optional company name ne sont pas obligatoire.

Dans le dossier keys nous obtenons 3 nouveaux fichiers

server.crt (le certificat du serveur)
server.key (la clé confidentielle du serveur)
server.csr (la demande de signature du certificat, qui dans notre cas sera inutile car nous l'avons déjà signé)

Maintenant que les certificats du serveur sont générés nous allons nous occuper de ceux des clients. Toujours dans le terminal entrez les commandes suivantes

build-req client (client correspond au nom du fichier client)

Renseigner les informations demandées mais cette fois dans le Common Name entrez client
Challenge password et optional company name ne sont pas obligatoire.

sign-req client 

Validez les 2 questions par y. Le certificat serveur et client sont maintenant créé, nous allons générer les paramètres de Diffie Hellman, ce dernier permettra de chiffrer l'échange des données entre le serveur et le client.

Toujours dans le terminal tapez

build-dh

Un fichier dh1024.pem est généré que nous conserverons jusque la fin.

Maintenant nous allons créé le fichier de configuration du serveur pour OpenVPN GUI.

Configuration server.ovpn

port 1194       #Port de communication sortant. 1193 est la norme pour OpenVPN, mais il est possible d'en prendre un autre
proto udp       #Protocole d'envoi des données(ou tcp).
dev tap       #Mode de transmission, ici en mode route (ou tun pour un mode manuel)
mode server       #Configuration serveur.
tls-server       #Authentification serveur TLS.

#Configuration IP.
ifconfig 10.8.0.1 255.255.255.0               #Adresse du serveur, bien choisir une adresse IP différente de votre DHCP interne, si vous en posséder un ;)
server-bridge 10.8.0.1 255.255.255.0 10.8.0.2 10.8.0.20      #serveur DHCP, ici on distribue des adresses IP de 10.8.0.2 à 10.8.020
#max-clients 5                     #Nombre max de client (ne doit pas excéder la taille de la plage IP du DHCP).
client-to-client                  #Permet la communication entre client.

#Sécurité
dh dh1024.pem            #Paramètre Diffie Hellman 1024bits(Protocole d'échange).
ca ca.crt            #Certificat de l'administrateur réseau, il permet de signer les certificat client.
cert server.crt            #Certificat du Serveur.
key server.key            #Clé du certificat serveur.
persist-key            #Evite de reinterroger un client qui s'est déjà authentfié.
cipher BF-CBC            #Cryptage des données en Blowfish (ex: (Cryptage AES) AES-128-CBC,(Cryptage Triple-DES) DES-EDE3-CBC).
keepalive 10 120         #Effectue un ping vers le client tout les 10s pendant 120s.
duplicate-cn            #Pour partager le même certificat entre plusieurs clients.

#Utilisateur anonyme, ne fonctionne que sous Linux !
#user nobody            #Aucun utilisateur prédéfinis.
#group nogroup            #Aucun groupe prédéfinis.

#Utiliser la compression dynamique LZO.
comp-lzo

#Régler le niveau de traces (0 pour un mode silencieux excepté les erreurs fatales, 4 utilisation courante par défaut, 5 et 6 pour le debugage, 9 renseigne toutes les traces).
verb 3

#Au bout de 10 fois la même ligne, plus de trace.
mute 10

Configuration client.ovpn

client            #Défini comme client.

#adresse à laquelle le client doit se connecter, et le numéro de port pour entrer sur le serveur.
remote XX.XX.XX.XX 1194

dev tap            #Mode de transmission(ou tun).
proto udp         #Protocole d'envoi des données (ou tcp).
resolv-retry infinite      #Résout indéfiniment les tentatives de connexion au serveur.
nobind            #Pas de port local spécifié.

#Sécurité
#ns-cert-type server      #Vérifie l'authenticité du serveur.
tls-client         #Authentification client TLS.
dh dh1024.pem         #Paramètre Diffie Hellman 1024bits(Protocole d'échange).
ca ca.crt         #Certificat de l'administrateur réseau, il permet de signer les certificat client.
cert client.crt         #Certificat du client.
key client.key         #Clé du certificat client.
persist-key         #Évite de réinterroger un client qui s'est déjà authentfié.
cipher BF-CBC         #Cryptage des données en Blowfish (ex: (Cryptage AES) AES-128-CBC,(Cryptage Triple-DES) DES-EDE3-CBC).

#utilisateur anonyme
#user nobody         #Aucun utilisateur prédéfinis.
#group nogroup         #Aucun groupe prédéfinis.

#Utiliser la compression dynamique LZO.
comp-lzo
pull            #oblige le client à demander sa configuration au serveur.

#Régler le niveau de traces(0 pour un mode silencieux excepté les erreurs fatales, 4 utilisation courante par défaut, 5 et 6 pour le debugage, 9 renseigne toutes les traces).
verb 3

#Au bout de 10x la même ligne, plus de trace.
mute 10

Dans le dossier config d'OpenVPN du serveur nous allons copier ca.crt server.crt server.key dh1024.pem et le fichier server.ovpn

Dans le dossier config d'OpenVPN du client nous allons copier ca.crt client.crt client.key client.ovpn (si vous avez plusieurs clients, il suffit de renommer les 3 derniers fichier avec le nom souhaité)

Sur votre routeur ouvrez le port 1194 en UDP et créé ouvrez votre firewall de votre ordinateur pour OpenVPN.

 Il ne reste plus qu'à lancer le logiciel OpenVPN GUI et connecter le serveur puis les clients.


Aucun commentaire:

Enregistrer un commentaire