HowToVPN

De Wiki du Parti Pirate
Aller à : navigation, rechercher

Présentation du service

Les Réseaux Privés Virtuels en général

Dans les réseaux informatiques et les télécommunications, le réseau privé virtuel (Virtual Private Network en anglais, abrégé en VPN) est vu comme une extension des réseaux locaux et préserve la sécurité logique que l'on peut avoir à l'intérieur d'un réseau local. Il correspond en fait à une interconnexion de réseaux locaux via une technique de « tunnel ». On parle de VPN lorsqu'un organisme interconnecte ses sites via une infrastructure partagée avec d'autres organismes.

Un bon compromis consiste à utiliser Internet comme support de transmission en utilisant un protocole de « tunnellisation » (en anglais tunneling), c'est-à-dire encapsulant les données à transmettre de façon chiffrée. On parle alors de VPN pour désigner le réseau ainsi artificiellement créé. Ce réseau est dit virtuel car il relie deux réseaux « physiques » (réseaux locaux) par une liaison non fiable (Internet), et privé car seuls les ordinateurs des réseaux locaux de part et d'autre du VPN peuvent accéder aux données en clair.

Le VPN permet donc d'obtenir une liaison sécurisée à moindre coût, si ce n'est la mise en œuvre des équipements terminaux.

Le VPN vise à apporter certains éléments essentiels dans la transmission de données : l'authentification (et donc l'identification) des interlocuteurs, la confidentialité des données (le chiffrement vise à les rendre inutilisables par quelqu'un d'autre que le destinataire).

(auteur: les contributeurs de wikipédia in Wikipédia - Réseau privé virtuel)

Le réseau VPN du Parti Pirate

Les serveurs du Parti Pirate sont reliés entre eux dans un réseau interne. L'accès VPN vise donc à intégrer des utilisateurs nomades (dit roadwarrior) dans ce réseau interne. Cette intégration permet de fournir un premier niveau de gestion des accès au sein du réseau. Ensuite chaque service spécifie les privilèges de l'utilisateur.

Par exemple, l'utilisateur U a besoin d'un accès SSH (Secure SHell) sur le serveur S1 et un accès FTP (File Transfer Protocol) sur le serveur S2.

  • Dans un premier temps, un certificat OpenVPN est créé pour U afin de lui fournir un accès au réseau interne.
  • Puis sur chacun des services des serveurs S1 et S2 est défini un accès spécifique qui sera fournit à U.
  • U s’intègre dans le réseau interne par connexion au VPN puis utilise normalement les services de S1 et S2

En outre, des applications spécifiques n'ayant pas de raisons d'être publiquement accessibles (gestion des adhérents par exemple) ne sont disponibles qu'au travers de ce réseau.

Ainsi, ce système présente les avantages suivants:

  • Les données de l'utilisateur nomade à destination du réseau interne sont chiffrées via le VPN.
  • Les applications n'ayant pas besoin d'un accès public ne sont disponibles qu'au travers du VPN
  • Si un accès d'un utilisateur à un service est compromis, le problème reste limité tant que le certificat VPN de l'utilisateur n'est pas compromis.
  • Si un certificat VPN d'un utilisateur est compromis, sa révocation permet de bloquer ses accès aux différents services sur le réseau interne et donc de limiter les effets de ce problème de sécurité.
  • Si le certificat VPN d'un utilisateur est révoqué, il ne dispose plus d'aucun accès aux services du réseau. Toutefois, chaque service doit révoquer l'accès de cet utilisateur.

En revanche, cela nécessite d'installer un logiciel sur le système de l'utilisateur.

Le logiciel VPN utilisé pour le partipirate est OpenVPN.

OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel. Il fournit :

  • Un serveur VPN mature et stable
  • Un logiciel client disponible sur de multiple plateforme (Solaris, *BSD, GNU/Linux, Mac OS X, Windows 2000, XP, Vista et 7)

Vous et OpenVPN

Vous aurez besoin d'un accès VPN pour :

  • le site de votre section locale afin d'y effectuer des transferts de fichiers via FTP
  • l'utilisation d'applications spécifiques n'ayant pas vocation à être publique pour des raisons de sécurité.
  • l'administration d'un service sur un des serveurs si cela nécessite un compte système (user Shell avec commande limité sudo) ou si une éventuelle interface de gestion est indépendante du service.
  • l'administration d'un ou plusieurs serveurs

L'impact sur votre machine est faible :

  • cela revient à ajouter une nouvelle carte réseau (virtuelle) et de vous connecter au réseau interne
  • le trafic n'étant pas à destination du réseau interne ne passe pas par le VPN, autrement dit les données de vos activités en ligne habituelles ne passent pas par ce réseau.

Pour éviter toute confusion, les adresses utilisées sont sous la forme partipirate.ppo. Par exemple :

Guides d'installation et d'utilisation

Pré-requis

  • Avoir reçu les 2 fichiers clés (.ovpn et .p12) de la part des administrateurs du VPN (après que votre compte VPN ait été créé) ainsi que, si le fichier p12 a été crypté, le mot de passe de décryptage de ce fichier.

Pour Windows (XP, 7, ...)

Installer l'accès

  • Télécharger le programme client OpenVPN pour votre PC: http://openvpn.net/index.php/open-source/downloads.html
  • Lancer l'exécutable "openvpn-2.2.2-install" (ou version supérieure)
  • Copier les fichier avec l’extension .p12 et .ovpn dans le dossier "\config" du répertoire d'installation d'OpenVPN (pour moi C:\Program Files (x86)\OpenVPN\config)
  • Lancer le programme OpenVPN GUI (Menu Démarrer-Programmes-OpenVPN) en mode ADMINISTRATEUR surtout avec vista, 7, etc. Un icône dans la barre de taches (system-tray) et symbolisant le client OpenVPN a du apparaître. Faire un clic droit dessus et choisir Connecter. Si il y avait un mot de passe au fichier p12, il vous sera demandé à ce moment. Renseignez le.
  • A l'issu de cette connexion, votre accès au VPN doit être opérationnel (icône de OpenVPN en vert dans la barre des taches).
  • En cas de problème (si l’icône d'OpenVPN dans la barre des taches reste en rouge), fermer complètement OpenVPN (clic droit sur l’icône dans la barre des taches puis Quitter). Ensuite, retourner au menu, faites un clic droit sur le lanceur OpenVPN puis propriétés, onglet compatibilité et cochez "Exécuter ce programme en tant qu'administrateur" puis relancer OpenVPN. Si le pictogramme est toujours rouge, faire un clic droit puis Connecter.

Tester l'accès

Pour confirmer que le VPN fonctionne, ouvrez une fenêtre DOS et taper la commande

ping chaloupe.partipirate.ppo

Si cela répond avec des lignes du genre

Réponse de 172.16.20.108 : octets=32 temps=27 ms TTL=63
Réponse de 172.16.20.108 : octets=32 temps=29 ms TTL=63
Réponse de 172.16.20.108 : octets=32 temps=25 ms TTL=63

c'est que le VPN fonctionne. Vous avez accès au réseau interne du Parti Pirate. Vous pouvez demander vos accès aux serveurs spécifiques aux outils (FTP, phpMyAdmin, ...).

Pour MAC OS X

... doc à compléter...

Essayer d'appliquer la procédure décrite pour Windows en téléchargeant à la première étape, le programme d'installation pour MAC OS plutôt que pour Windows.


Pour Linux

Installer depuis la ligne de commande (debian, ubuntu, mint)

  • Installer le paquet OpenVPN et OpenSSL
$ sudo apt-get -y install openvpn openssl
  • Renommer le fichier .ovpn en .conf (filename est à remplacer par le nom du fichier ovpn reçu)
$ mv filename.ovpn filename.conf
  • Copier les fichiers .p12 et .conf dans /etc/openvpn/ et les rendre en accès restreint root
$ sudo chown root:root /etc/openvpn/*.conf 
$ sudo chown root:root /etc/openvpn/*.p12
$ sudo chmod 0600 /etc/openvpn/*.conf 
$ sudo chmod 0600 /etc/openvpn/*.p12
  • Lancer la connexion au VPN
$ sudo service openvpn restart

Si le fichier p12 a été crypté, le mot de passe sera demandée à chaque connexion.

  • Optionnellement, supprimer le mot de passe demandé à chaque connexion.

L'opération consiste à recréer le fichier .p12 sans mot de passe.

$ sudo cp /etc/openvpn/monfichierp12.p12 /etc/openvpn/monfichierp12.p12.bak
$ sudo openssl pkcs12 -in /etc/openvpn/monfichierp12.p12 -nodes -out temp.pem

Pour la commande suivante, lorsque qu'OpenSSL demande un mot de passe, taper "entrée" en ne saisissant rien.

$ sudo openssl pkcs12 -export -in temp.pem  -out /etc/openvpn/monfichierp12.p12
$ sudo rm -f temp.pem
  • Ajouter la configuration de résolution DNS

En effet, pour avoir les résolutions DNS du réseau privé VPN, il faut ajouter l'adresse du serveur DNS : 172.16.20.2 dans la configuration de résolution DNS.

Pour cela, 2 méthodes:

Soit vous êtes sur un poste avec serveur DNS (cas de PC serveurs):

Vous devez modifier dans /etc/bind/named.conf.options

forward first;
forwarders {
   172.16.20.2;
};
dnssec-validation no;

Soit vous êtes sur un poste utilisateur client sans serveur DNS (cas le plus fréquent):

Vérifier que le fichier /etc/openvpn/update-resolv-conf est présent. Si non le créer avec le contenu suivant

#!/bin/bash
#
# Parses DHCP options from openvpn to update resolv.conf
# To use set as 'up' and 'down' script in your openvpn *.conf:
# up /etc/openvpn/update-resolv-conf
# down /etc/openvpn/update-resolv-conf
#
# Used snippets of resolvconf script by Thomas Hood <jdthood@yahoo.co.uk>
# and Chris Hanson
# Licensed under the GNU GPL.  See /usr/share/common-licenses/GPL.
#
# 05/2006 chlauber@bnc.ch
#
# Example envs set from openvpn:
# foreign_option_1='dhcp-option DNS 193.43.27.132'
# foreign_option_2='dhcp-option DNS 193.43.27.133'
# foreign_option_3='dhcp-option DOMAIN be.bnc.ch'

[ -x /sbin/resolvconf ] || exit 0

case $script_type in

up)
   for optionname in ${!foreign_option_*} ; do
      option="${!optionname}"
      echo $option
      part1=$(echo "$option" | cut -d " " -f 1)
      if [ "$part1" == "dhcp-option" ] ; then
         part2=$(echo "$option" | cut -d " " -f 2)
         part3=$(echo "$option" | cut -d " " -f 3)
         if [ "$part2" == "DNS" ] ; then
            IF_DNS_NAMESERVERS="$IF_DNS_NAMESERVERS $part3"
         fi
         if [ "$part2" == "DOMAIN" ] ; then
            IF_DNS_SEARCH="$part3"
         fi
      fi
   done
   R=""
   if [ "$IF_DNS_SEARCH" ] ; then
           R="${R}search $IF_DNS_SEARCH
"
   fi
   for NS in $IF_DNS_NAMESERVERS ; do
           R="${R}nameserver $NS
"
   done
   echo -n "$R" | /sbin/resolvconf -a "${dev}.inet"
   ;;
down)
   /sbin/resolvconf -d "${dev}.inet"
   ;;
esac

Modifier les droits du fichier en exécution

$ chmod +x /etc/openvpn/update-resolv-conf

Ajouter les 3 lignes suivantes dans le fichier /etc/openvpn/*.conf (qui a été installé à la première étape)

script-security 2
up /etc/openvpn/update-resolv-conf
down /etc/openvpn/update-resolv-conf

A chaque arrêt/relance du VPN, le serveur DNS de ppo (172.16.20.2) sera ajouté ou supprimé au fichier /etc/resolv.conf (2 à 3 seconds après le démarrage du VPN). Si ce n'est pas le cas, vérifier si cela apparait dans un fichier /run/resolvconf/resolv.conf, et si oui, remplacer le fichier /etc/resolv.conf par un lien symbolique vers /run/resolvconf/resolv.conf et lancer la commande sudo resolvconf -u

Installer depuis l'interface graphique Ubuntu

Installer le package network-manager-openvpn

$ sudo apt-get install network-manager-openvpn

Quelques secondes après l'installation, depuis l'icone du network manager dans la barre de tache, choisissez Connexion VPN, Configurer le VPN, Ajouter et choisissez dans la liste OpenVPN.

Dans les options de la connexion, choisissez:

  • Passerelle: vpn.partipirate.org
  • Authentification type: Certificat (TLS)
  • Authentification certificat: Choisir le fichier .p12 fourni précédemment.
  • Paramètre IPV4: adresses automatiques pour le domaine uniquement
  • serveur DNS: 172.16.20.2
  • Domaine de recherche: ppo
  • Routes: cochez la case "Utiliser cette ressource uniquement pour les ressources de son réseau".

Puis depuis l'icone du network manager, choisissez "Activer le VPN".

Tester l'accès

Vous pouvez maintenant réaliser des résolutions DNS et des commandes SSH sur le serveurs. Vérifiez que tout fonctionne par la commande:

$ host chaloupe.partipirate.ppo

Cela doit vous renvoyer son adresse IP dans le réseau VPN.

Si cela échoue ou pas, vérifier le ping par la commande

$ ping 172.16.20.108

Si les 2 tests sont ok, le VPN est opérationnel. Vous pouvez demander vos accès aux serveurs (FTP, phpMyAdmin, ...). Rem: Si seul le le premier test est ko mais que le deuxième est ok, le VPN est égallement ok, par contre c'est la résolution DNS du serveur DNS interne au VPN qui échoue. Ceci n'est pas bloquant et vous pouvez considérer que l'accès VPN est opérationnel. Il vous faudra toutefois utilisez les IP et non les noms de domaines pour accéder aux serveurs du PP.

FAQ

Comment obtenir un accès VPN ?

L'équipe technique distribue les accès sur besoin identifié ou demande. Envoyez un email sur la ML EkTek en motivant votre demande. Il n'est pas utile pour un site internet que 10 personnes disposent d'un tel accès mais il serait plus souhaitable qu'une personne en charge de la gestion technique du site en dispose