Outils pour utilisateurs

Outils du site


netadmin:vpn:config-test-openvpn

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
netadmin:vpn:config-test-openvpn [2017/12/15 08:59] yoannnetadmin:vpn:config-test-openvpn [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1
Ligne 3: Ligne 3:
 ====== Mise en place d'une config test openvpn ====== ====== Mise en place d'une config test openvpn ======
  
-On cherche à connecter un poste client au travers d'un réseau non sécurisé au serveur. Un hôte virtuel apache associée à l'interface loopback du serveur sera accessible.+On cherche à connecter un poste client au travers d'un réseau non sécurisé au serveur. Dans cet exemple simple on crée un VPN entre deux VMs appartenant au même réseau.
  
 ===== Serveur ===== ===== Serveur =====
  
-Ajout temporarie d'une IP sur l'interface loopback+Ajout temporaire d'une IP sur l'interface loopback
 <code bash> <code bash>
 $ sudo ip addr add $ sudo ip addr add
Ligne 21: Ligne 21:
 ==== Génération des clés ==== ==== Génération des clés ====
  
-easy-rsa contient un ensemble de scripts assistant la génération des certificats serveur et clients.+easy-rsa contient un ensemble de scripts assistant la génération des certificats racine, serveur et clients. 
 + 
 +On commence par mettre a jour le fichier contenant les variables: ''./vars'':
  
 <code bash> <code bash>
Ligne 35: Ligne 37:
  
 <code bash> <code bash>
-# sourcer le fichier définissant les variables+# sourcer le fichier exportant les variables
 source ./vars source ./vars
 +
 # par précaution supprimer les fichiers temporaires # par précaution supprimer les fichiers temporaires
 ./clean-all ./clean-all
-# construire clés et certificat pour l'autorité de certification racine+ 
 +# construire clés et certificat pour le CA ou Autorité de Certification racine
 ./build-ca ./build-ca
 </code> </code>
  
-Après validation des valeurs par défaut, les fichiers suivants ont été créés dans le repertoire **./keys**:+Après validation, les fichiers suivants ont été créés dans le répertoire **./keys**:
   * **ca.key**: la clé privée de l'autorité de certification racine.   * **ca.key**: la clé privée de l'autorité de certification racine.
   * **ca.crt**: le certificat de l'autorité de certification racine.   * **ca.crt**: le certificat de l'autorité de certification racine.
Ligne 49: Ligne 53:
   * **serial** identifiant du dernier certificat émis   * **serial** identifiant du dernier certificat émis
  
-Le certificat de l'autorité de certification racine exisant, on peut générer les clés et certificat pour le serveur et les clients:+Le certificat de l'autorité de certification racine existant, on peut générer les clés et certificats pour le serveur et les clients:
  
 Pour le serveur: Pour le serveur:
Ligne 85: Ligne 89:
  
 ==== Configuration du service ==== ==== Configuration du service ====
 +
 Créer le fichier de configuration du serveur **/etc/openvpn/server.conf** avec le contenu suivant: Créer le fichier de configuration du serveur **/etc/openvpn/server.conf** avec le contenu suivant:
  
Ligne 100: Ligne 105:
 comp-lzo comp-lzo
 persist-key persist-key
-persist+persist-tun 
 +verb 3
 </file> </file>
  
Ligne 127: Ligne 133:
  
 Si la valeur 1 n'est pas retournée, modifier le fichier /etc/sysctl.conf. Confère wiki Si la valeur 1 n'est pas retournée, modifier le fichier /etc/sysctl.conf. Confère wiki
 +
 +Démarrage manuel du serveur:
 +
 +<code bash>
 +cd /etc/openvpn
 +openvpn --config server.conf
 +</code>
 +
 +Le fonctionnement normal du serveur retournera sur la console:
 +<file>
 +... Initialization Sequence Completed
 +</file>
  
 ===== Client ===== ===== Client =====
Ligne 144: Ligne 162:
 verb 3 verb 3
 </file> </file>
 +
 +Lancement manuel du client de la même façon que coté serveur:
 +
 +<code bash>
 +cd /etc/openvpn
 +openvpn --config client.conf
 +</code>
 +
 +A ce  stade, la connexion est fonctionnelle.
 +
 +
 +===== Modifications de la configuration minimale =====
 +
 +Lors de l'établissement de la liaison les logs mettent en avant:
 +
 +  * Que méthode de chiffrement (cipher BF-CBC 128 bits) est relativement faible et peut être améliorée.
 +  * Que l'algorithme d'authentification SHA-1 peut être modifié car considéré peu fiable à ce jour.
 +  * Le warning "No server certificate verification method has been enabled" indique que le client n' a fait qu'une vérification partielle du certificat fournit par le serveur pouvant conduire a une attaque man in the middle. Pour une vérification en profondeur, ajouter la directive **remote-cert-tls server** dans la configuration client.
 +
 +==== Ajouter les routes ====
 +
 +Avec la configuration minimale, le tunnel est fonctionnel mais coté client les routes n'ont pas été mises a jour. Pour que le réseau soit accessible au client, il faut déclarer au serveur lesquelles de ses routes on souhaite qu'il mette à jour sur le client pour que celui-ci puisse accéder au sous réseau (directive **push**).
 +
 +Il est possible de changer le protocole et le port d’écoute du serveur avec les directives **proto** et **port**:
 +
 +<file>
 +proto tcp
 +port 26356
 +</file>
 +
 +Le fichier périphérique de l'interface peut être renommé. Cela peut améliorer la clarté ou facilité la création de règles iptables:
 +
 +<file>
 +dev vpn
 +dev-type tun
 +</file>
 +
 +===== Fichiers de configuration finalisés =====
 +
 +==== Serveur ====
 +
 +Sur le serveur le fichier de configuration du service openvpn a maintenant la forme suivante:
 +
 +<file txt serveur.conf>
 +# Configuration du serveur openvpn
 +mode server
 +proto tcp
 +port 31100
 +
 +dev vpn
 +dev-type tun
 +
 +topology subnet
 +ca keys/ca.crt
 +cert keys/poseidon.crt
 +key keys/poseidon.key
 +dh keys/dh2048.pem
 +
 +# Adresse de réseau à exploiter.
 +# Définit le pool d'adresses à fournir aux clients
 +server 10.50.0.0 255.255.255.0
 +keepalive 10 120
 +
 +# Chemin des fichiers de configuration clients
 +# permet de redefinir la config générale par client
 +client-config-dir ./client-cfg
 +
 +# Décommenter la directive pour autoriser les communications
 +# entre clients
 +#client-to-client
 +
 +# Limiter le nombre de conexions au serveur
 +#max-clients 10
 +
 +# Renforcement de la securité par defaut
 +#tls-version-min 1.2
 +# Méthode de chiffrement du canal de controle
 +tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA
 +#tls-cipher TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-AES-256-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-CAMELLIA-256-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-3DES-EDE-CBC-SHA
 +#tls-cipher TLS-DHE-RSA-WITH-AES-128-CBC-SHA
 +#tls-cipher TLS-DHE-RSA-WITH-SEED-CBC-SHA
 +#tls-cipher TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-AES-128-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-SEED-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-CAMELLIA-128-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-RC4-128-SHA
 +#tls-cipher TLS-RSA-WITH-RC4-128-MD5
 +#tls-cipher TLS-RSA-WITH-DES-CBC-SHA
 +
 +# Méthode de chiffrement du canal de données
 +cipher AES-256-CBC
 +# hachage via SHA-256
 +auth SHA256
 +
 +comp-lzo
 +persist-key
 +persist-tun
 +
 +# Paramétrages des logs
 +log /var/log/openvpn.log
 +verb 3
 +# Condense la répétition de memes entrées dans les logs
 +mute 20
 +
 +# Fichier listant les connexions actives
 +status /var/log/openvpn-client-list.txt
 +</file>
 +
 +Il utilise les certificats présents dans le sous dossier **./keys/** et des fichier de configuration propres au clientsdans le dossier **./client-cfg/** si l'on souhaite redéfinir le paramétrages par défaut. Pour exemple, un fichier vm01.lan redefinit les paramétrage du client CN=vm01.lan
 +
 +<file txt vm01.lan>
 +# Fichier de redefinition de la configuration  du client vm01.lan
 +
 +# Ne tient pas compte de la configuration générale
 +push-reset
 +
 +# Redéfinition de la configuration pour le client
 +ifconfig-push 10.50.0.33 255.255.255.0
 +
 +# Pousse les routes sur le client
 +# NB: ces routes doivent exister sur le serveur
 +push "route 10.50.0.0 255.255.255.0"
 +push "route 172.16.3.0 255.255.255.0"
 +</file>
 +
 +==== Client ====
 +
 +Le fichier de configuration finalisé coté client a la forme suivante:
 +<file>
 +# Configuration du client
 +client
 +proto tcp
 +
 +remote serveur.lan 31100
 +remote-cert-tls server
 +
 +dev vpn
 +dev-type tun
 +
 +
 +
 +nobind
 +tls-cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA
 +#tls-cipher TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-AES-256-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-CAMELLIA-256-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-3DES-EDE-CBC-SHA
 +#tls-cipher TLS-DHE-RSA-WITH-AES-128-CBC-SHA
 +#tls-cipher TLS-DHE-RSA-WITH-SEED-CBC-SHA
 +#tls-cipher TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-AES-128-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-SEED-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-CAMELLIA-128-CBC-SHA
 +#tls-cipher TLS-RSA-WITH-RC4-128-SHA
 +#tls-cipher TLS-RSA-WITH-RC4-128-MD5
 +#tls-cipher TLS-RSA-WITH-DES-CBC-SHA
 +
 +cipher AES-256-CBC
 +auth SHA256
 +
 +persist-key
 +persist-tun
 +
 +ca /etc/openvpn/keys/ca.crt
 +cert /etc/openvpn/keys/vm01.lan.crt
 +key /etc/openvpn/keys/vm01.lan.key
 +
 +comp-lzo
 +verb 3
 +</file>
 +
 +===== Références =====
 +
 +  * GNU/Linux Magasine HS n°92, VPN
 +  * https://unix.stackexchange.com/questions/195569/changing-openvpn-device-name#196796
netadmin/vpn/config-test-openvpn.1513328360.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)