Documentation technique : Debian
Documentation basée sur la distribution Debian

> > > Installation et configuration d’OpenVPN

Installation et configuration d’OpenVPN

Installation du serveur OpenVPN

Pour l’installation, on va utiliser la version fournie par les dépots officiels de Debian. On utilise donc APT pour cela :

  1. sudo apt-get install openvpn

Préconfiguration

Le paquet openvpn fournit des examples de configuration, on les copie donc dans le répertoire de configuration pour les modifier ensuite :

  1. #Création du répertoire easy-rsa
  2. sudo mkdir /etc/openvpn/easy-rsa/
  3. # Copie des fichiers de configuration
  4. sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
  5. # On change l'utilisateur des fichiers
  6. sudo chown -R $USER /etc/openvpn/easy-rsa/

Télécharger

On a dorénavant les fichiers nécessaire pour configurer le serveur.

Configuration du serveur OpenVPN

On configure en premier lieu l’authentification par clés et certificats. Pour cela, on modifie le fichier /etc/openvpn/easy-rsa/vars :

  1. sudo nano /etc/openvpn/easy-rsa/vars

Ce fichier correspond aux paramètres de création de clés et certificats. On laisse les valeurs par défaut de la plupart des options, on modifie principalement les lignes à la fin du fichier correspondant aux valeurs par défaut des informations qui seront dans les certificats. Par défaut elles sont :

  1. export KEY_COUNTRY="US"
  2. export KEY_PROVINCE="CA"
  3. export KEY_CITY="SanFrancisco"
  4. export KEY_ORG="Fort-Funston"
  5. export KEY_EMAIL="me@myhost.mydomain"

Télécharger

Il faut les modifier par des valeurs correspondant au serveur, dans notre cas :

  1. export KEY_COUNTRY="FR"
  2. export KEY_PROVINCE="75"
  3. export KEY_CITY="Paris"
  4. export KEY_ORG="Arscenic"
  5. export KEY_EMAIL="contact@arscenic.org"

Télécharger

L’étape suivante correspond à la génération de la clé et du certificat du serveur. On lance les commandes suivantes :

  1. # On se déplace dans le répertoire de configuration
  2. cd /etc/openvpn/easy-rsa/
  3. # On charge les valeurs par défaut
  4. source vars
  5. # On nettoie ce qui existe au cas où
  6. ./clean-all
  7. ./build-dh
  8. # Génération de la clé privée ca du serveur dans keys/ca.key
  9. ./pkitool --initca
  10. # Génération de la clé privée du serveur dans keys/server.key et du certificat dans keys/server.crt
  11. ./pkitool --server server
  12. # Génération de la clé du serveur dans keys/ta.key
  13. sudo openvpn --genkey --secret keys/ta.key

Télécharger

Les fichiers keys/ca.crt, keys/ta.key, keys/server.crt, keys/server.key et keys/dh1024.pem sont nécessaire pour l’identification au serveur, on les copie dans /etc/openvpn/ :

  1. sudo cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/

On crée ensuite deux répertoires :

  • /etc/openvpn/jail où sera chrooté le processus du serveur OpenVPN ;
  • /etc/openvpn/clientconf où seront stockés les fichiers de configuration des utilisateurs qui seront créés par la suite ;
  1. sudo mkdir /etc/openvpn/jail
  2. sudo mkdir /etc/openvpn/clientconf

Télécharger

On crée ensuite le fichier de configuration à proprement dit du serveur /etc/openvpn/server.conf :

  1. sudo nano /etc/openvpn/server.conf

Dans ce fichier on met le contenu suivant :

  1. # Serveur TCP/444
  2. # On utilise le port 444 car le 443 est souvent utilisé par apache ssl
  3. mode server
  4. proto tcp
  5. port 444
  6. dev tun
  7.  
  8. # Cles et certificats
  9. # On utilise les clés et certifcats générés
  10. ca ca.crt
  11. cert server.crt
  12. key server.key
  13. dh dh1024.pem
  14. tls-auth ta.key 0
  15. cipher AES-256-CBC
  16.  
  17. # Reseau
  18. # La machine connectée sera dans le sous-réseau 10.8.0.0
  19. # Les DNS utilisés seront ceux de google
  20. server 10.8.0.0 255.255.255.0
  21. push "redirect-gateway def1 bypass-dhcp"
  22. push "dhcp-option DNS 4.4.4.4"
  23. push "dhcp-option DNS 8.8.8.8"
  24. keepalive 10 120
  25.  
  26. # Securite
  27. # Configuration de la sécurité du serveur
  28. # Le processus sera chrooté dans /etc/openvpn/jail
  29. user nobody
  30. group nogroup
  31. chroot /etc/openvpn/jail
  32. persist-key
  33. persist-tun
  34. comp-lzo
  35.  
  36. # Log
  37. # Configuration de la manière dont les fichiers de logs fonctionnent
  38. # Enlever le ";" de la dernière ligne pour activer les logs
  39. verb 3
  40. mute 20
  41. status /var/log/openvpn-status.log
  42. log-append /var/log/openvpn.log

Télécharger

On peut maintenant tester le serveur, on se déplace dans le répertoire de configuration :

  1. cd /etc/openvpn

Et on lance la commande suivante qui lancera le serveur :

  1. sudo openvpn server.conf

Vous devez avoir la ligne suivante à la fin :

  1. Initialization Sequence Completed

Si aucun problème n’apparait, on peut alors décommenter la dernière ligne de la configuration du serveur afin de logguer dans le fichier /var/log/openvpn.log :

  1. # Remplacer la ligne :
  2. ; log-append /var/log/openvpn.log
  3. # Par :
  4. log-append /var/log/openvpn.log

Télécharger

Le serveur est dorénavant correctement configuré.

Autoriser le sous-réseau à communiquer vers l’extérieur

Les clients pourront dorénavant se connecter au VPN mais ne devraient pas pouvoir accéder à Internet depuis leur adresse IP 10.8.0.X.

Il faut donc router le sous-réseau vers l’extérieur, le serveur devant jouer le rôle de routeur entre l’interface de connection VPN (tun0) et la carte réseau habituelle (eth0).

On configure le routage avec la commande :

  1. sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Ce réglage n’est pas permanent, au redémarrage de la machine serveur, il ne sera pas appliqué. Pour le rendre permanent, on modifie le fichier /etc/sysctl.conf en décommentant la ligne suivante :

  1. net.ipv4.ip_forward = 1

On configure iptables ensuite pour que le sous-réseau utilise l’adresse IP publique du serveur :

  1. sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Comme le réglage précédent, celui-ci n’est pas permanent. Pour le rendre automatique au démarrage du serveur, les commandes suivantes doivent être exécutées.

On sauvegarde tout d’abord les règles iptables actuelles :

  1. sudo sh -c "iptables-save > /etc/iptables.rules"

On édite ensuite le fichier /etc/network/interfaces de définition des interfaces de réseau :

  1. sudo nano /etc/network/interfaces

On y ajoute la ligne suivante après la définition de l’interface réseau principale (en général "iface eth0 inet...") :

  1. pre-up iptables-restore < /etc/iptables.rules

On peut maintenant passer à la création des comptes clients.

Création d’un compte client

Pour la création d’un compte client openvpn, on doit créer un couple clé/certificat pour chaque client amené à se connecter au serveur.

On va ici créer un utilisateur machine-cliente.

  1. cd /etc/openvpn/easy-rsa
  2. source vars
  3. ./build-key machine-cliente

Télécharger

Vous devez alors répondre à différentes questions pour la génération du certificat.

Le script génère 3 fichiers dans le répertoire /etc/openvpn/easy-rsa/keys :

  • machine-cliente.crt qui correspond au certificat du client ;
  • machine-cliente.csr qui correspond au Certificat Signing Request du client à conserver sur le serveur ;
  • machine-cliente.key qui correspond à la clé correspondante au certificat du client ;

Ces fichiers doivent être à disposition du serveur dans un sous-répertoire du répertoire de configuration pour chaque client. On crée tout d’abord le répertoire nécessaire :

  1. sudo mkdir /etc/openvpn/clientconf/machine-cliente/

On copie les fichiers nécessaires dans ce répertoire :

  1. sudo cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/machine-cliente.crt keys/machine-cliente.key /etc/openvpn/clientconf/machine-cliente/

Il est alors nécessaire de créer le fichier de configuration du client dans le même répertoire. On se déplace donc dans ce répertoire :

  1. cd /etc/openvpn/clientconf/machine-cliente/

Et on crée le fichier client.conf :

  1. sudo nano client.conf

Dans lequel on indique les éléments suivants (n’oubliez pas de remplacer le nom du certificat et de la clé ainsi que les XXX.XX.XX.XX par l’adresse IP du serveur) :

  1. # Client
  2. client
  3. dev tun
  4. proto tcp-client
  5. remote XXX.XX.XX.XX 444
  6. resolv-retry infinite
  7. cipher AES-256-CBC
  8.  
  9. # Cles
  10. ca ca.crt
  11. cert machine-cliente.crt
  12. key machine-cliente.key
  13. tls-auth ta.key 1
  14.  
  15. # Securite
  16. nobind
  17. persist-key
  18. persist-tun
  19. comp-lzo
  20. verb 3

Télécharger

Pour que ce fichier de configuration puisse être utilisé par le client windows, on copie le fichier de configuration dans un nouveau fichier avec l’extension ovpn :

  1. sudo cp client.conf client.ovpn

On crée enfin un fichier machine-cliente.zip qui sera à fournir à l’utilisateur afin qu’il puisse configurer son logiciel client :

  1. sudo zip machine-cliente.zip *.*

Lancement du serveur

Il suffit ensuite de lancer le serveur :

  1. sudo /etc/init.d/openvpn start

Articles complémentaires

  • Auteur :
  • Publié le :
  • Mis à jour : 07/04/13

Aucun commentaire


Qui êtes-vous ?
  • [Se connecter]
Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.