Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| netadmin:vpn:config-test-openvpn [2017/12/15 08:59] – yoann | netadmin: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. | + | On cherche à connecter un poste client au travers d'un réseau non sécurisé au serveur. |
| ===== Serveur ===== | ===== Serveur ===== | ||
| - | Ajout temporarie | + | Ajout temporaire |
| <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 |
| + | |||
| + | On commence par mettre a jour le fichier contenant les variables: '' | ||
| <code bash> | <code bash> | ||
| Ligne 35: | Ligne 37: | ||
| <code bash> | <code bash> | ||
| - | # sourcer le fichier | + | # sourcer le fichier |
| 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' | + | |
| + | # construire clés et certificat pour le CA ou Autorité | ||
| ./build-ca | ./build-ca | ||
| </ | </ | ||
| - | Après validation | + | Après validation, les fichiers suivants ont été créés dans le répertoire |
| * **ca.key**: la clé privée de l' | * **ca.key**: la clé privée de l' | ||
| * **ca.crt**: le certificat de l' | * **ca.crt**: le certificat de l' | ||
| Ligne 49: | Ligne 53: | ||
| * **serial** identifiant du dernier certificat émis | * **serial** identifiant du dernier certificat émis | ||
| - | Le certificat de l' | + | Le certificat de l' |
| Pour le serveur: | Pour le serveur: | ||
| Ligne 85: | Ligne 89: | ||
| ==== Configuration du service ==== | ==== Configuration du service ==== | ||
| + | |||
| Créer le fichier de configuration du serveur **/ | Créer le fichier de configuration du serveur **/ | ||
| Ligne 100: | Ligne 105: | ||
| comp-lzo | comp-lzo | ||
| persist-key | persist-key | ||
| - | persist | + | persist-tun |
| + | verb 3 | ||
| </ | </ | ||
| Ligne 127: | Ligne 133: | ||
| Si la valeur 1 n'est pas retournée, modifier le fichier / | Si la valeur 1 n'est pas retournée, modifier le fichier / | ||
| + | |||
| + | Démarrage manuel du serveur: | ||
| + | |||
| + | <code bash> | ||
| + | cd / | ||
| + | openvpn --config server.conf | ||
| + | </ | ||
| + | |||
| + | Le fonctionnement normal du serveur retournera sur la console: | ||
| + | < | ||
| + | ... Initialization Sequence Completed | ||
| + | </ | ||
| ===== Client ===== | ===== Client ===== | ||
| Ligne 144: | Ligne 162: | ||
| verb 3 | verb 3 | ||
| </ | </ | ||
| + | |||
| + | Lancement manuel du client de la même façon que coté serveur: | ||
| + | |||
| + | <code bash> | ||
| + | cd / | ||
| + | openvpn --config client.conf | ||
| + | </ | ||
| + | |||
| + | A ce stade, la connexion est fonctionnelle. | ||
| + | |||
| + | |||
| + | ===== Modifications de la configuration minimale ===== | ||
| + | |||
| + | Lors de l' | ||
| + | |||
| + | * Que méthode de chiffrement (cipher BF-CBC 128 bits) est relativement faible et peut être améliorée. | ||
| + | * Que l' | ||
| + | * Le warning "No server certificate verification method has been enabled" | ||
| + | |||
| + | ==== 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**: | ||
| + | |||
| + | < | ||
| + | proto tcp | ||
| + | port 26356 | ||
| + | </ | ||
| + | |||
| + | Le fichier périphérique de l' | ||
| + | |||
| + | < | ||
| + | dev vpn | ||
| + | dev-type tun | ||
| + | </ | ||
| + | |||
| + | ===== 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/ | ||
| + | key keys/ | ||
| + | dh keys/ | ||
| + | |||
| + | # Adresse de réseau à exploiter. | ||
| + | # Définit le pool d' | ||
| + | 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 ./ | ||
| + | |||
| + | # Décommenter la directive pour autoriser les communications | ||
| + | # entre clients | ||
| + | # | ||
| + | |||
| + | # Limiter le nombre de conexions au serveur | ||
| + | # | ||
| + | |||
| + | # Renforcement de la securité par defaut | ||
| + | # | ||
| + | # 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 / | ||
| + | verb 3 | ||
| + | # Condense la répétition de memes entrées dans les logs | ||
| + | mute 20 | ||
| + | |||
| + | # Fichier listant les connexions actives | ||
| + | status / | ||
| + | </ | ||
| + | |||
| + | Il utilise les certificats présents dans le sous dossier **./keys/** et des fichier de configuration propres au clientsdans le dossier **./ | ||
| + | |||
| + | <file txt vm01.lan> | ||
| + | # Fichier de redefinition de la configuration | ||
| + | |||
| + | # 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" | ||
| + | </ | ||
| + | |||
| + | ==== Client ==== | ||
| + | |||
| + | Le fichier de configuration finalisé coté client a la forme suivante: | ||
| + | < | ||
| + | # 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 / | ||
| + | cert / | ||
| + | key / | ||
| + | |||
| + | comp-lzo | ||
| + | verb 3 | ||
| + | </ | ||
| + | |||
| + | ===== Références ===== | ||
| + | |||
| + | * GNU/Linux Magasine HS n°92, VPN | ||
| + | * https:// | ||