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
tuto_mise_en_place_d_un_vpn [2014/10/21 20:15] geoffroy2010tuto_mise_en_place_d_un_vpn [2022/02/14 17:20] (Version actuelle) – page déplacée vers tutos:tuto_mise_en_place_d_un_vpn acier2020
Ligne 1: Ligne 1:
-====== [Tuto] mise en place d'un VPN ====== 
  
-/!\ Important /!\ Lorsque vous faites des copier/coller d'éléments de ce tuto, veillez à virer les "*" qui correspondant à des listes à puces et qui n'ont rien à faire dans un fichier de configuration! 
- 
-===== Un VPN késako? ===== 
- 
- 
-Un VPN ou réseau privé virtuel en français est un système permettant de créer un lien direct entre des ordinateurs distants. Concrètement c'est un système client-serveur permettant d'encapsuler tout le trafic réseau lié au client, de l'envoyer au serveur et celui-ci s'occupe de le traiter. 
- 
-L'intérêt est, entre autre, de pouvoir débrider votre connexion (aller sur youtube en étant en Chine par exemple ou jouer à un jeu au McDo du coin). 
- 
-===== Wahh, c'est cool, mais de quoi je vais avoir besoin pour ça? ===== 
- 
- 
- 
-Concernant les VPNs, il existe la solution du riche: les VPNs tout configurés, souvent avec une version au débit ultra limité gratuite et des versions payante, généralement hors de prix. Cette solution est souvent clé en main et dans tous les cas les sites proposant ce genre de services décrivent très bien la marche à suivre pour mettre en place leur produit. 
- 
-Sauf que, comme nous sommes étudiants, nous sommes pauvres et donc on va s'intéresser à une solution avec un meilleur rapport qualité/prix: la mise en place d'un VPN sur un serveur personnel. 
- 
-Pour cela, il vous faudra (en vrac): 
-  * 1 serveur qui pourra éventuellement héberger d'autres services. Si vous ne savez pas où en trouver, google est votre ami :-) Personnellement, j'utilise un VPS mais cela fonctionne aussi très bien avec un serveur dédié. 
-  * ne pas être sur connexion du wifi du foyer. En effet, afin de configurer votre serveur vous aurez besoin d'y accéder en ssh, ce qui est bloqué par arise (ou alors connectez vous à perso.iiens.net, puis faites un ssh vers l'extérieur). 
-  * ce tuto. 
-  * 1 connexion internet. 
-  * N bières. 
-  * des yeux pour lire. 
-  * des doigts pour taper sur un clavier. 
- 
-A noter que pour ce tuto je m'appuie sur ce que j'ai moi-même fais en utilisant les deux tutos suivants: 
-Le tuto de [[http://www.myouaibe.com/index.php/post/Faire-un-VPN-avec-un-serveur-VPS-OVH|MyOuaibe]] et celui de [[http://blog.nicolargo.com/2010/10/installation-dun-serveur-openvpn-sous-debianubuntu.html|NICOLARGO]] 
- 
-Ce tuto considère que votre serveur est sur ubuntu. 
- 
-===== Mise en place du serveur ===== 
- 
- 
-==== Outils ==== 
-Connectez-vous en root à votre serveur. 
-Assurez-vous que votre serveur est bien à jour: 
-    apt-get update; apt-get upgrade 
- 
-Profitez-en pour créer un utilisateur que vous pourrez utiliser plus tard (rester tout le temps en root c'est pas génial) 
-    adduser votre_username 
- 
-Puis, tant qu'à faire, ajoutez les droits nécessaires à ce user pour utiliser la commande sudo: 
-    adduser votre_username sudo 
- 
-Vous allez avoir besoin d'openVPN. Ce logiciel est fournis de base avec ubuntu server 14.04, si vous ne savez pas s'il est installé ou pas, dans le doute: 
-    apt-get install openvpn 
- 
-Pour la suite de ce tuto, vous allez avoir besoin d'easy-rsa: 
-    apt-get install easy-rsa 
- 
-Un éditeur de texte sera utile également: 
-    apt-get install vim 
- 
-==== Configuration d'openvpn et génération de la config serveur ==== 
- 
-Les tutos dont les liens figurent plus haut indiquent assez bien la marche à suivre pour les anciennes versions d'ubuntu. La suite s'applique donc à ubuntu 14.04. 
- 
-easy-rsa fournit tout un jeu de scripts permettant de créer les clés et certificats nécessaires au bon fonctionnement d'openvpn. Afin de les avoir à disposition nous devons créer un répertoire voué à les contenir: 
-    cd /etc/openvpn 
-    make-cadir easy-rsa 
-    cd easy-rsa 
- 
-Puis, on s'assure que le owner du répertoire easy-rsa est bien le bon: 
-    chown -R $USER /etc/openvpn/easy-rsa/ 
- 
-Maintenant, éditez les infos contenues dans le fichier vars 
-    vim vars 
-comme ceci:\\  
-**export KEY_COUNTRY="FR"**\\  
-**export KEY_PROVINCE="91"**\\  
-**export KEY_CITY="Evry"**\\  
-**export KEY_ORG="votredomaine.fr"**\\  
-**export KEY_EMAIL="an@nyme.fr"**\\  
- 
-Pour savoir comment utiliser vim, utilisez dans un terminal la commande vimtutor 
- 
-Ensuite on lance la séquence suivante qui va générer les clés (.key) et les certificats (.crt): 
-    source vars 
-    ./clean-all 
-    ./build-dh 
-    ./pkitool --initca 
-    ./pkitool --server server 
-    openvpn --genkey --secret keys/ta.key 
- 
-On copie ensuite les clés et les certificats utiles pour le serveur dans le répertoire /etc/openvpn/: 
-    cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/ 
- 
-Pour dh1024.pem: vous pouvez ne pas avoir ce fichier mais dh2048.pem, ceci n'est pas gênant mais du coup tapez keys/dh<tab>. 
-A noter que l'usage de l'auto-complétion (le <tab>) est toujours assez utile, c'est un bon truc de fainéant mangez-en! 
- 
-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: 
-    mkdir /etc/openvpn/jail 
-    mkdir /etc/openvpn/clientconf 
- 
-Enfin on créé le fichier de configuration /etc/openvpn/server.conf: 
-    cd /etc/openvpn 
-    vim server.conf 
- 
-Puis remplissez-le comme suit:\\  
-   # Serveur TCP/443\\  
-   mode server\\  
-   proto tcp\\  
-   port 443\\  
-   dev tun\\  
-   # Cles et certificats\\  
-   ca ca.crt\\  
-   cert server.crt\\  
-   key server.key\\  
-   dh dh1024.pem\\  
-   tls-auth ta.key 1\\  
-   key-direction 0\\  
-   cipher AES-256-CBC\\  
-   # Reseau\\  
-   server 10.8.0.0 255.255.255.0\\  
-   push "redirect-gateway def1 bypass-dhcp"\\  
-   push "dhcp-option DNS 208.67.222.222"\\  
-   push "dhcp-option DNS 208.67.220.220"\\  
-   keepalive 10 120\\  
-   # Securite\\  
-   user nobody\\  
-   group nogroup\\  
-   chroot /etc/openvpn/jail\\  
-   persist-key\\  
-   persist-tun\\  
-   comp-lzo\\  
-   # Log\\  
-   verb 3\\  
-   mute 20\\  
-   status openvpn-status.log\\  
-   ; log-append /var/log/openvpn.log\\  
- 
-Voila nous sommes prêt a lancer le serveur pour cela: 
-    cd /etc/openvpn  
-    openvpn server.conf 
-Si tout est ok jusque là, la dernière ligne affichée doit être : Initialization Sequence Completed 
-Si ce n'est pas le cas, relisez ce tuto, les tutos liés et sinon googlez votre erreur. 
- 
-Pour reprendre la main faites CTRL+C Reprenez en modification le fichier server.conf pour enlever le ; de la derniere ligne, ce ; servait à mettre en remarque la commande log-append /var/log/openvpn.log et maintenant que nous sommes prêt il vaut mieux avoir un petit log pour savoir ce qui se passe par la suite sur notre vpn. 
- 
-Nous pouvons maintenant lancer notre serveur vpn correctement via la commande 
-service openvpn start 
-Maintenant il faut que l'on s'occupe du routage, nous avons jusque là mis en place uniquement la possibilité de demarrer un serveur vpn sécurisé, il faut maintenant donner la possibiliter d'accès au reseau public pour cela nous allons utiliser les possibilités de routage de linux 
-Pour donner le droit de router à chaud il suffit de taper la commande : 
-    sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' 
- 
-Pour que cela soit toujours en place au prochain demarrage du serveur il faut l'indiquer dans un fichier de configuration soit en ajoutant une ligne soit en dé-commentant celle qui existe déjà dans le fichier /etc/sysctl.conf 
- 
-Voici la ligne qui doit être présente dans ce fichier:\\  
-net.ipv4.ip_forward = 1\\  
-Maintenant mettons en place les règles de routage\\  
-   iptables -I FORWARD -i tun0 -j ACCEPT \\  
-   iptables -I FORWARD -o tun0 -j ACCEPT \\  
-   iptables -I OUTPUT -o tun0 -j ACCEPT \\  
-   iptables -A FORWARD -i tun0 -o venet0 -j ACCEPT \\  
-   iptables -t nat -A POSTROUTING -o venet0 -j MASQUERADE \\  
-   iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o venet0 -j MASQUERADE \\  
-   iptables -t nat -A POSTROUTING -s 10.8.0.2/24 -o venet0 -j MASQUERADE \\  
-A noter la présence de venet0 au lieu de eth0, car sur les serveurs vps souvent ce ne sont pas des interfaces physiques de cartes réseau, mais des cartes virtuelles. Sur un serveur dédie ce sera donc eth0 (généralement). 
-Maintenant nous pouvons sauvegarder les régles dans un fichier afin de pouvoir s'en servir à chaque démarrage du serveur pour cela nous passons la commande 
-    sh -c "iptables-save > /etc/iptables.rules"  
- 
-Nous obtenons donc un fichier iptables.rules qui va falloir faire connaitre au script qui demarre le serveur VPS 
-Pour cela je rappel que nous sommes sur un ubuntu serveur il nous faut creer un fichier 
-    vim /etc/network/interfaces.tail 
-et y mettre dedans 
-    pre-up iptables-restore < /etc/iptables.rules 
- 
-==== Génération de la config client ==== 
-Imaginons que l'on veuille créer une clés pour le client "SauvezMoïse", alors il suffit de saisir les commandes suivantes sur le serveur: 
-    cd /etc/openvpn/easy-rsa 
-    source vars 
-    ./build-key SauvezMoïse 
- 
-On copie les fichiers nécessaires dans un sous répertoire du répertoire /etc/openvpn/clientconf/ préalablement créé: 
-    mkdir /etc/openvpn/clientconf/SauvezMoïse/ 
-    cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/SauvezMoïse.crt keys/SauvezMoïse.key /etc/openvpn/clientconf/SauvezMoïse/ 
- 
-On va ensuite dans le répertoire /etc/openvpn/clientconf/SauvezMoïse/: 
-    cd /etc/openvpn/clientconf/pcportablenicolargo/ 
- 
-Puis on créé le fichier client.conf suivant (il faut remplacer A.B.C.D par l'adresse publique de votre serveur VPN que vous pouvez obtenir avec la commande "wget -qO- ifconfig.me/ip" ou en lisant ce que vous affiche ubuntu server lors de votre connexion):\\  
- 
-   # Client\\  
-   client\\  
-   dev tun\\  
-   proto tcp-client\\  
-   remote A.B.C.D 443\\  
-   resolv-retry infinite\\  
-   cipher AES-256-CBC\\  
-   ; client-config-dir ccd\\  
-   # Cles\\  
-   ca ca.crt\\  
-   cert SauvezMoïse.crt\\  
-   key SauvezMoïse.key\\  
-   tls-auth ta.key 1\\  
-   key-direction 1\\  
-   # Securite\\  
-   nobind\\  
-   persist-key\\  
-   persist-tun\\  
-   comp-lzo\\  
-   verb 3\\  
- 
-Si vous comptez utiliser votre configuration sur un client qui se trouve derrière un proxy, ajoutez: \\  
-http-proxy-retry\\  
-http-proxy adresse_du_proxy port_du_proxy\\  
-après "; client-config-dir ccd" dans le cas d'un proxy http. Pour un proxy socks, référez-vous à la documentation d'openvpn. 
- 
-Pour assurer la compatibilité avec le client Windows OpenVPN, on fait une copie du fichier client.conf vers client.ovpn: 
-    cp client.conf client.ovpn 
- 
-On devrait ainsi avoir les fichiers suivants dans le répertoire /etc/openvpn/clientconf/SauvezMoïse/:\\  
-  * ca.crt: Certificat du serveur 
-  * client.conf: Fichier de configuration du client OpenVPN (Linux, BSD, MacOS X) 
-  * client.ovpn: Fichier de configuration du client OpenVPN (Windows) 
-  * SauvezMoïse.crt: Certificat du client 
-  * SauvezMoïse.key: Clés du client 
-  * ta.key: Clés pour l'authentification 
- 
-Il ne reste plus qu'à mettre ces fichiers dans une archive ZIP et de la transmettre sur le PC client: 
-    zip SauvezMoïse.zip *.* 
-    logout 
-    scp root@ip_de_votre_serveur:/etc/openvpn/clientconf/SauvezMoïse/SauvezMoïse.zip ~/ 
- 
-Dézippez dans un endroit facile à retrouver. 
- 
-Sur un client OS X, installez tunnelblk et indiquez-lui le fichier client.ovpn. Connectez-vous à votre vpn et profitez :-). 
- 
-Sur un client Windows, installez le client openvpn. Sur le racourcis mis par défaut sur le bureau: clique droit -> propriétés -> compatibilité et cochez "Executer ce programme en tant qu'administrateur". Puis dans le dossier d'installation d'openvpn (typiquement: C:\Programmes\OpenVPN\) copiez le contenu de l'archive (configuration du client + certificats) dans le dossier "config". Lancez openvpn en utilisant le racourcis de votre bureau. Connectez-vous à votre vpn et profitez :-). 
- 
-Sur un client linux, cela risque de varier en fonction de votre distribution donc je vous invite à vous référer aux tutos linkés plus haut ainsi qu'à google.