Implémentation d'openvpn

3 570 vues

Publié le

juste une prise en main de sa machine à distance

  • Soyez le premier à aimer ceci

Implémentation d'openvpn

  1. 1. Implémentation dOPENVPN sous Linux (Fedora 13) 1. Installation du package OpenvpnNous allons procéder à la mise en œuvre dune solution dinterconnexion de sitesdistants grâce à loutil openvpn sous fedora 13.Sur la ligne de commande en tant que super utilisateur, tapez la commandecomme à la figure ci-dessous:ValiderVoilà il me propose un autre outil très intéressant qui assure la compression desdonnées sous le tunnel pour mieux gagner en vitesse de transmission: il sagit deloutil « lzo », nous verrons cet outils dans les fichiers de configuration un peuplutardDimitri Lembokolo 1
  2. 2. Voilà donc on tape « O » pour confirmer l’installationEn effet openvpn tourne, il ny seulement pas grand choses au niveau des socketstel a été le comportement après la commande netstat.Vérifiant au niveau des paquets RPM :Exact les paquets sont bien là.Dimitri Lembokolo 2
  3. 3. 2. Génération des certificats dauthentificationNous allons sur ce point générer les certificats et les clés qui vont permettre auxclients et au serveur de sauthentifier mutuellement de telle sorte que personnedautres que vous ne puisse se connecter au VPN.Pour ça nous allons se déplacer dans le répertoire easy-rsa dopenvpn :cd /usr/share/openvpn/easy-rsa/Voilà nous avons les outils nécessaires qui vont nous permettre de générer lesclés et les certificats pour les clients et serveur.Première chose, nous allons modifier les valeurs des variables denvironnementafin de ne pas avoir à répéter les renseignements à fournir à la génération desclés,Dimitri Lembokolo 3
  4. 4. Pour cela nous allons éditer le fichier « vars » ci-dessus :Voici la liste des paramètres par défaut à modifier, ils sont généralement en basdu fichier sous fedora .export KEY_COUNTRY="US"export KEY_PROVINCE="CA"export KEY_CITY="SanFrancisco"export KEY_ORG="Fort-Funston"export KEY_EMAIL="me@myhost.mydomain"Après sauvegarde du fichier, relancer la prise en charge de ces nouvellesvariables :Remarque : il va supprimer le dossier keys (ancien endroit où il conservait lesclés) contenu dans le répertoire quil indique, à priori il ny a même pas derépertoire keys car nous sommes à présent dans ce répertoire.Donc nous navons rien à craindre nous allons lancer le script ./clean-all.Dimitri Lembokolo 4
  5. 5. Là il ma créé un répertoire « keys » qui contiendra toutes nos clés.Vous pourrez vérifier quà présent ce répertoire ne contient que deux fichierscrées par le script build-all (index.txt et serial qui sont important pour lagénération des certificats server et clients).Dimitri Lembokolo 5
  6. 6. Création des certificats.Premièrement nous allons faire une autorité de certification.Voilà vous remarquerez que vous aviez déjà les valeurs mémorisées dans lefichier « vars ».Il ne sagira que de renseigner le nom de la CA (Certification Authority), pourles valeurs entre crochets appuyé sur Entrée et il prendra la valeur par défaut.A présent nous venons de créer lautorité de certification qui est dans lerépertoire « keys ». Ce certificat est le certificat racine qui va ensuite nouspermettre de créer le certificat serveur et les certificats clients.Donc la partie publique de ce certificat devrait être déposé au niveau des clientspour quils puissent sauthentifier au niveau du serveur pour quils reconnaissenttous les certificats qui seront créés à partir de cette autorité.Là nous allons créer le certificat pour le serveur (cette machine même que jedénomme bonal).Ce certificat nous allons lappeler « srvrdimi », nous allons le signer nous-mêmeet ensuite, nous allons le générer comme va le montrer cette manipulation.Nous nallons pas donner un challenge password ni optional .....Pour la créationdes certificats.Dimitri Lembokolo 6
  7. 7. Très bien il ne reste plus quà faire la même opération pour le client, en seservant du script « build-key clientdimi » : Le certificat du client nous allonslappeler « clientdimi».Dimitri Lembokolo 7
  8. 8. Dimitri Lembokolo 8
  9. 9. Examinons le contenu du répertoire keys.Excellent nous voyons que la CA a été généré, la partie certificat server a étégénérée de même que la partie certificat client.A présent il ne nous reste quà créer les paramètres Diffie-helmann :Diffie-Hellma (D-H) est un algorithme à clé publique utilisé pour assurer unpartage de clé secrètes.Très bien, là nous avons lensemble des informations cryptographiques dontnous avions besoin pour configurer notre VPN.Dimitri Lembokolo 9
  10. 10. 3. Configuration et lancement du serveurIl nous reste à récupérer le fichier de configuration du serveur « server.conf » etle mettre dans lerépertoire /usr/share/openvpn/easy-rsa/2.0/keys/Alors chez moi il est par défaut installé dans le répertoire/usr/share/doc/openvpn-2.1/sample-config-filesTrès bien là nous allons éditer ce fichier pour y positionner les variables qui vontnous intéresser pour la mise en place du vpn.Dimitri Lembokolo 10
  11. 11. Vérification de l’adresse IP de la machineOn édite le fichier server.confLes principaux paramètres sont les suivants :local a.b.c.dMettre son adresse IP si on veut notre machine soit le serveur (chez moi « localDimitri Lembokolo 11
  12. 12. 192.168.1.66 »).port 1194Le port par défaut est 1194, vous pouvez mettre le port 443 qui est un portréservé pour le protocole https qui traverse rapidement les firewall et les proxy.En général tous les proxy dentreprise qui filtre les entrées laissent passer letrafic sur ce port car de toute façon cest un contenu chiffré que le proxy ne veutpas récupérer.proto tcpÉvidemment le protocole tcp est un bon choix, par défaut il est en udp.dev tunOk nous nous allons prendre comme interface tun pour tunnel.ca ca.crtcert srvrdimi.crtkey srvrdimi.keyLes parametres Diffie hellmandh dh1024.pemExact nous lavions créé sous ce nom.Cest une clé de 1024bit, a noter également que nous pouvions bien entendu enfaire de 2048 bit pour plus de sécurité mais là cest un compromis entreperformance du tunnel et sécurité du lien.1024bit est plutôt un bon choix dans notre contexteA noter qu’on n’a pas besoin de spécifier le chemin daccès à ces clé etcertificats.Server 10.8.0.0 255.255.255.0Nous donnerons cette plage par défaut au serveur.A noter également que si vous utilisez déjà ces adresses sur votre LAN il faudrabien en prendre une autre plage que vous nutilisez pas.A chaque fois quun client se connectera au vpn, le serveur lui attribuera uneadresse Ip contenue dans cette plage.Bien vérifier en bas du fichier lutilisation de la librairie lzo pour la compressiondes données.Comp-lzoUtiliser lutilisateur et son groupe nobody par défaut pour lancer le serveur.user nobody (le décommenté)group nobody (le décommenté)Dimitri Lembokolo 12
  13. 13. verb 3Le niveau 3 de log me paraît plutôt bien pour un serveur de production.Si jamais vous avez des problèmes avec le serveur, il ne démarre pas ....vouspourrez mettre la verbosité maximal qui est de 9.On sauvegarde et on lance le service par le script contenu dans /etc/init.d/Parfait tout marche comme on veut c’est vraiment informatique ça.Dimitri Lembokolo 13
  14. 14. Excellent openvpn est au niveau des sockets démarrés.Il ne reste plus quà soccuper des clients sous Windows maintenant.A noter également que nous pouvons avoir des clients Linux et cestpratiquement la même manipulation.Dimitri Lembokolo 14
  15. 15. INSTALLATION DU CLIENT OPENVPNAlors après avoir installé et configuré notre serveur OpenVPN sous notre fedoranous allons nous intéresser aux clients.A savoir aussi, on est sur Windows donc c’est clic… suivant… suivant on n’apas besoin d’être intelligent pour le faire. 1. Configuration du clientNous avons opté pour linstallation dun client sous Windows sachant que souslinux cest pratiquement la même chose que pour la parte serveur.Vous allez vous rendre sur ce lien et télécharger loutil client :http://openvpn.se/files/install_packages/openvpn-2.0.5-gui-1.0.3-install.exeExécutez et il vous posera quelques questions et vous installerez les drivers desinterfaces réseaux virtuelles TUN/TAP :Le répertoire dinstallation sera C:/ProgramFiles /OpenVPNOn a installé le client sous Windows XP et on a ces répertoires là que vousvoyez.Dimitri Lembokolo 15
  16. 16. Ouvrons le dossier sample-config qui contient des exemples de fichiers deconfiguration.Ok ensuite nous allons copier le fichier client dans le répertoire config .sil nyest déjà pas.Il nous faudra également récupérer les informations cryptographiques de laDimitri Lembokolo 16
  17. 17. partie client sur le serveur et les copier dans ce répertoire config sous Windows.Nous allons utiliser winSCP pour ce faire.Mon serveur à ladresse IP 192.168.1.66 et voilà :Cliquer sur loginDimitri Lembokolo 17
  18. 18. Voilà jai les informations contenues dans le fichier /usr/share/openvpn/easy-rsa/2.0/keys dans la partie de droite (sous linux) et je dois copier la Ca, les cléclient et le certificats client.Ok !Dimitri Lembokolo 18
  19. 19. A présent on fait clic droit sur le fichier client et on a la possibilité de léditer oude lancer le service.Nous allons léditer pour renseigner nos paramètres.Dimitri Lembokolo 19
  20. 20. Voilà cest comme le fichier de conf du serveur sous linux.Les principaux paramètres à modifier :Clientproto tcpdev tun comme sur le serveurremote 192.168.1.66 1194 (remote : on renseigne l’adresse IP de son serveurvpn et le numéro de port, pour mon cas c’est 192.168.1.66 et le numéro de port1194). La partie la plus importante est la ligne « remote ».Alors pour que vous puissiez connecter un client depuis la Brazzaville et leserveur se trouvant chez Dakar à Mbour il faut indiquer une adresse IP publiqueet statique.Et cest dailleurs lobjectif du VPN (Interconnexion de sites distants)Il est aussi à rappeler que nous pouvons connecter au serveur autant de clientsque nous voulons, il faut juste à chaque fois générer les informationscryptographiques au niveau du répertoire easy-rsa du serveur et les déployer parla suite sur le client.On met alternative pour les gens qui ne voudront pas utiliser une IP publique ilexiste des solutions comme dyndns, No-IP entre autres qui permette de fixer uneadresse IP publique de par son nom.Par exemple si jutilisais une ADSL dorange qui en général attribue des adressesDimitri Lembokolo 20
  21. 21. Ip publiques mais trouve le moyen de les changer à chaque fois que lon seconnecte ou qui fixe un certain délai pour renouveler les adresses IP des clients(cest une politique ....sinon les gens en feront des IP fixes et voilà)Je peux temporairement avoir une Ip du type 196.200.80.18 mais quicertainement va changer au bout dun certain temps, alors pour permettre à mesclients openvpn de toujours se connecter au serveur, je fais correspondre cetteadresse avec un nom comme bonaldimi.dyndns.org .Et là je vais tout simplement installer un client sur mon serveur qui se chargerade faire la correspondance entre mon Ip et mon nom dhôte de telle sorte que jepuisse au niveau de mes fichiers de config client openvpn renseigner la variable« remote bonaldimi@dyndns.org »).Et là jai mis un nom dhôte qui pointera toujours sur mon Ip que lADSL medonne.Exemple http-proxy 192.168.1.20 8080Si vous nutilisez pas de proxy comme moi présentement, ignoré .....Autre point important il faut obligatoire indiquer lemplacement des clés etcertificats.Vu que nous les avons dans le répertoire courant, on n’a pas besoin dindiquerun chemin absolu.Dimitri Lembokolo 21
  22. 22. Ca : certificat de lautorité de certificationClientdimi.crt : le certificat du clientClientdimi.key : la clé associée au certificat du client.De la même manière on vérifie lutilisation de la lib lizo pour la compression desdonnées dans le tunnel VPN.Voilà on sauvegarde le fichier et on lance le service en cliquant droit sur lefichier de conf du client et Start.Dimitri Lembokolo 22
  23. 23. Partie linuxLancer le serveurSous Windows maintenant (sur la barre de tâches : double cliqué sur l’icônesuivant) Faite un double clic sur icôneDimitri Lembokolo 23
  24. 24. Tentative de connexion du client au serveur (tout marche comme on veut et c’esttrop ki koi… !)Dimitri Lembokolo 24
  25. 25. Voilà ce qui se passe du côté serveur (LINUX)Dimitri Lembokolo 25
  26. 26. Le client arrive à se connecter et le serveur lui a attribué lip 10.8.0.6Cest trop cool ......Au niveau du serveur voici mes différentes interfaces et le serveur ayant prisladresse 10.8.0.1Coté Windows, le poste a une nouvelle interface virtuelle que voici avecladresse 10.8.0.6.On ne cherche pas à savoir comment ça marche tant que sa marche….Pour tout commentaire ou difficultés rencontrées, rendez-vous sur le bloghttp://lapensedujour.blogspot.com To be continued…Dimitri Lembokolo 26

×