Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
doc:reseau:openvpn [30/12/2012 07:04] smolski [Configuration] |
doc:reseau:openvpn [13/03/2021 11:40] (Version actuelle) vv222 [OpenVPN : client et serveur VPN] Visibilité de l’avertissement d’obsolescence |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== OpenVPN ====== | + | ====== OpenVPN : client et serveur VPN ====== |
+ | * Objet : Installer et configurer intégralement OpenVPN | ||
+ | * Niveau requis : {{tag>débutant avisé}} | ||
+ | * Commentaires : // Mise en place d'un serveur VPN et de son client. // | ||
+ | * Débutant, à savoir (//pour le moins...//) : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) | ||
+ | * Suivi : {{tag>obsolète}} | ||
+ | * Création par [[user>TechDesk]] le 30/12/2012 | ||
+ | * Testé par ... le ... | ||
+ | * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=6350|ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !)) | ||
+ | |||
+ | <note important> | ||
+ | Un guide plus récent basé sur celui-ci est à privilégier : [[doc:reseau:vpn:openvpn|OPENVPN Serveur et Client]] | ||
+ | </note> | ||
===== Présentation ===== | ===== Présentation ===== | ||
Ligne 15: | Ligne 27: | ||
On commence par installer OpenVPN à partir des dépôts officiels : | On commence par installer OpenVPN à partir des dépôts officiels : | ||
- | <code bash> | + | <code root>apt-get update && apt-get install openvpn |
- | aptitude install openvpn | + | |
</code> | </code> | ||
On copie ensuite les fichiers de configurations : | On copie ensuite les fichiers de configurations : | ||
- | <code bash> | + | <code root>mkdir /etc/openvpn/keys</code> |
- | mkdir /etc/openvpn/easy-rsa/ | + | <code root>cp -r /usr/share/easy-rsa/ /etc/openvpn</code> |
- | cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ | + | <code root>chown -R $USER /etc/openvpn/easy-rsa/</code> |
- | chown -R $USER /etc/openvpn/easy-rsa/ | + | |
- | </code> | + | |
==== Configuration ==== | ==== Configuration ==== | ||
Ligne 30: | Ligne 39: | ||
À l'aide des scripts installés dans le répertoire **/etc/openvpn/easy-rsa/** nous allons configurer OpenVPN pour utiliser une authentification par clés et certificats. | À l'aide des scripts installés dans le répertoire **/etc/openvpn/easy-rsa/** nous allons configurer OpenVPN pour utiliser une authentification par clés et certificats. | ||
- | On commence par éditer(([[manuel:nano]])) le fichier **/etc/openvpn/easy-rsa/vars** : | + | On commence par éditer(([[:doc:editeurs:nano]])) le fichier ''/etc/openvpn/easy-rsa/vars'' : |
<code bash> | <code bash> | ||
export KEY_COUNTRY="FR" | export KEY_COUNTRY="FR" | ||
Ligne 40: | Ligne 49: | ||
Ensuite on lance la séquence suivante qui va générer les **clés (.key)** et les **certificats (.crt)** : | Ensuite on lance la séquence suivante qui va générer les **clés (.key)** et les **certificats (.crt)** : | ||
- | <code bash> | + | <code root> |
cd /etc/openvpn/easy-rsa/ | cd /etc/openvpn/easy-rsa/ | ||
source vars | source vars | ||
Ligne 51: | Ligne 60: | ||
On copie ensuite les clés et les certificats utiles pour le serveur dans le répertoire **/etc/openvpn/** : | On copie ensuite les clés et les certificats utiles pour le serveur dans le répertoire **/etc/openvpn/** : | ||
- | <code bash> | + | <code root> |
- | cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/ | + | cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh2048.pem /etc/openvpn/ |
</code> | </code> | ||
- | Puis on génère un répertoire **/etc/openvpn/jail** dans lequel le processus OpenVPN sera chrooté (afin de limiter les dégâts en cas de faille dans OpenVPN) puis un autre répertoire (**/etc/openvpn/clientconf**) qui contiendra la configuration des clients : | + | Puis on génère un répertoire **/etc/openvpn/jail** dans lequel le processus OpenVPN sera chrooté (afin de limiter les dégâts en cas de faille dans OpenVPN) : |
- | <code bash> | + | <code root>mkdir /etc/openvpn/jail</code> |
- | mkdir /etc/openvpn/jail | + | |
- | mkdir /etc/openvpn/clientconf | + | Puis un autre répertoire (**/etc/openvpn/clientconf**) qui contiendra la configuration des clients : |
+ | <code root>mkdir /etc/openvpn/clientconf | ||
</code> | </code> | ||
Enfin on crée le fichier de configuration **/etc/openvpn/server.conf** : | Enfin on crée le fichier de configuration **/etc/openvpn/server.conf** : | ||
- | <code> | + | <file config fichier /etc/openvpn/server.conf> |
# Serveur TCP/443 | # Serveur TCP/443 | ||
mode server | mode server | ||
Ligne 73: | Ligne 83: | ||
cert server.crt | cert server.crt | ||
key server.key | key server.key | ||
- | dh dh1024.pem | + | dh dh2048.pem |
tls-auth ta.key 0 | tls-auth ta.key 0 | ||
cipher AES-256-CBC | cipher AES-256-CBC | ||
Ligne 97: | Ligne 107: | ||
status openvpn-status.log | status openvpn-status.log | ||
log-append /var/log/openvpn.log | log-append /var/log/openvpn.log | ||
- | </code> | + | </file> |
Ce fichier permet de créer un serveur VPN SSL routé basé sur le protocole TCP et utilisant le port HTTPS (443) afin de maximiser son accessibilité depuis des réseaux sécurisés par des Firewalls. Les clients obtiendront une nouvelle adresse IP dans le range 10.8.0.0/24. | Ce fichier permet de créer un serveur VPN SSL routé basé sur le protocole TCP et utilisant le port HTTPS (443) afin de maximiser son accessibilité depuis des réseaux sécurisés par des Firewalls. Les clients obtiendront une nouvelle adresse IP dans le range 10.8.0.0/24. | ||
Ligne 103: | Ligne 113: | ||
On lance le serveur avec la commande : | On lance le serveur avec la commande : | ||
- | <code bash> | + | <code root> |
- | /etc/init.d/openvpn start | + | service openvpn start |
</code> | </code> | ||
À ce stade les machines clientes vont pouvoir se connecter au serveur VPN. Par contre impossible d'aller plus loin que ce dernier car l'adresse 10.8.0.x ne sera par routée en dehors de votre serveur. Il faut donc configurer le serveur pour qu'il joue le rôle de routeur entre l'interface VPN (tun0) et l'interface physique (eth0) et de NATeur entre les adresses en 10.8.0.x et son adresse IP réelle. | À ce stade les machines clientes vont pouvoir se connecter au serveur VPN. Par contre impossible d'aller plus loin que ce dernier car l'adresse 10.8.0.x ne sera par routée en dehors de votre serveur. Il faut donc configurer le serveur pour qu'il joue le rôle de routeur entre l'interface VPN (tun0) et l'interface physique (eth0) et de NATeur entre les adresses en 10.8.0.x et son adresse IP réelle. | ||
Configuration du routage: | Configuration du routage: | ||
- | <code bash> | + | <code root> |
sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' | sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' | ||
</code> | </code> | ||
Ligne 118: | Ligne 128: | ||
</code> | </code> | ||
- | Puis configurer la translation d'adresse (NAT) : | + | Puis configurer la translation d'adresse (NAT). \\ |
- | <code bash> | + | Dans la commande qui suit, remplacer ''votre_interface'' par l'interface réelle de votre carte reseau. \\ |
- | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE | + | //Avant stretch c'était genre ''eth0''...// : |
+ | <code root> | ||
+ | iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o votre_interface -j MASQUERADE | ||
</code> | </code> | ||
Pour rendre cette règle de NAT persistante après un reboot de votre serveur, il faut commencer par créer un script de chargement de règles de Firewall (ou utiliser un script existant) : | Pour rendre cette règle de NAT persistante après un reboot de votre serveur, il faut commencer par créer un script de chargement de règles de Firewall (ou utiliser un script existant) : | ||
- | <code bash> | + | <code root> |
- | sh -c "iptables-save > /etc/iptables.rules" | + | iptables-save > /etc/iptables.rules |
+ | </code> | ||
+ | |||
+ | On peut aussi simplement ajouter la ligne suivante dans la configuration de son interface réseau (généralement la section eth0 dans **/etc/network/interface**) | ||
+ | <code> | ||
+ | post-up iptables-restore < /etc/iptables.rules | ||
</code> | </code> | ||
Ligne 133: | Ligne 150: | ||
===== Installation Client ===== | ===== Installation Client ===== | ||
- | <code bash> | + | <code root> |
- | aptitude install openvpn | + | apt-get install openvpn |
</code> | </code> | ||
Ligne 140: | Ligne 157: | ||
Nous allons créer les clés pour le client "**client1**", pour cela il faut saisir **sur le serveur** les commandes suivantes : | Nous allons créer les clés pour le client "**client1**", pour cela il faut saisir **sur le serveur** les commandes suivantes : | ||
- | <code bash> | + | <code root> |
cd /etc/openvpn/easy-rsa | cd /etc/openvpn/easy-rsa | ||
source vars | source vars | ||
Ligne 153: | Ligne 170: | ||
On copie les fichiers nécessaires dans un sous répertoire du répertoire **/etc/openvpn/clientconf/** préalablement créé : | On copie les fichiers nécessaires dans un sous répertoire du répertoire **/etc/openvpn/clientconf/** préalablement créé : | ||
- | <code bash> | + | <code root> |
- | mkdir /etc/openvpn/clientconf/client1/ | + | mkdir /etc/openvpn/clientconf/client1/</code> |
- | cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/client1.crt keys/client1.key /etc/openvpn/clientconf/client1/ | + | <code root>cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/client1.crt keys/client1.key /etc/openvpn/clientconf/client1/ |
</code> | </code> | ||
On va ensuite dans le répertoire **/etc/openvpn/clientconf/client1/** : | On va ensuite dans le répertoire **/etc/openvpn/clientconf/client1/** : | ||
- | <code bash> | + | <code root> |
cd /etc/openvpn/clientconf/client1/ | cd /etc/openvpn/clientconf/client1/ | ||
</code> | </code> | ||
- | Puis on crée le fichier client.conf (il faut remplacer **A.B.C.D** par l'adresse publique de votre serveur VPN que vous pouvez obtenir avec la commande "**wget -qO- whatismyip.org**") : | + | Puis on crée le fichier ''client.conf'' (il faut remplacer **A.B.C.D** par l'adresse publique de votre serveur VPN que vous pouvez obtenir avec la commande "**wget -qO- whatismyip.org**") : |
- | <code bash> | + | <code file client.conf> |
# Client | # Client | ||
client | client | ||
Ligne 188: | Ligne 205: | ||
Pour assurer la compatibilité avec le **client Windows OpenVPN**, on fait une copie du fichier **client.conf** vers **client.ovpn** : | Pour assurer la compatibilité avec le **client Windows OpenVPN**, on fait une copie du fichier **client.conf** vers **client.ovpn** : | ||
- | <code bash> | + | <code root> |
cp client.conf client.ovpn | cp client.conf client.ovpn | ||
</code> | </code> | ||
Ligne 200: | Ligne 217: | ||
* ta.key: Clés pour l'authentification | * ta.key: Clés pour l'authentification | ||
- | Il ne reste plus qu'à mettre ces fichiers dans une archive **zip**((ou **[[commande:tar | tar]]**)) et de la transmettre sur le **PC client**: | + | Il ne reste plus qu'à mettre ces fichiers dans une archive **zip**((ou **[[:doc:systeme:tar | tar]]**)) et de la transmettre sur le **PC client**: |
- | <code bash> | + | <code root> |
zip client1.zip *.* | zip client1.zip *.* | ||
</code> | </code> | ||
- | Lien | + | //Merci à //**TechDesk**// l'auteur avisé et attentif de l'ensemble de ce tuto !// :-) |
+ | |||
+ | ===== Lien ===== | ||
- | * [[manuel:openvpn_client | OpenVPN Client-gui]] Cryptage entre PC Client et Serveur en graphique. | + | * [[:doc:reseau:openvpn:client | OpenVPN Client-gui]] Cryptage entre PC Client et Serveur en graphique. |