Documentation technique OpenVPN
Table des matières Présentation :... 3 Installation du serveur OpenVPN :... 3 Configuration du serveur OpenVPN :... 3 Création d'un compte client OpenVPN :... 6 Configuration d'un client OpenVPN sous Ubuntu :... 8 Déclaration du VPN sous Ubuntu :... 8 Configuration d'un client OpenVPN sous Windows :... 9
Présentation : OpenVPN est un logiciel open source qui implémente un réseau privé virtuel (VPN) utilisant des techniques de création sécurisé point à point ou des connexions de site à site dans des configurations routés ou pontés et des facilités d'accès à distance. Il utilise un protocole de sécurité personnalisé qui utilise SSL / TLS pour l'échange de clés. Il est capable de traverser un réseau d adresse natté et les pare-feu. Il a été écrit par James Yonan et est publié sous la licence GNU General Public License (GPL). Installation du serveur OpenVPN : Nous allons détailler l'installation du serveur OpenVPN. On commence par installer OpenVPN à partir des dépôts officiels: aptitude install openvpn On copie ensuite les fichiers de configurations: mkdir /etc/openvpn/easy-rsa/ cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ chown -R $USER /etc/openvpn/easy-rsa/ Configuration du serveur OpenVPN : A 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 le fichier /etc/openvpn/easy-rsa/vars: export KEY_COUNTRY="FR" export KEY_PROVINCE="75" export KEY_CITY="Paris" export KEY_ORG="anendra.com" export KEY_EMAIL="support@anendra.com" Ensuite on lance la séquence suivante qui va générer les clés (.key) et les certificats (.crt): cd /etc/openvpn/easy-rsa/ 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/ 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: # Serveur TCP/1195 mode server proto udp port 1195 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
Ce fichier permet de créer un serveur VPN SSL routé basée sur le protocole UDP et utilisant le port 1195. Les clients obtiendrons une nouvelle adresse IP dans le range 10.8.0.0/24. On teste la configuration en saisissant la commande suivante: cd /etc/openvpn openvpn server.conf On doit obtenir les messages suivants: Si le serveur démarre correctement, on peut terminer la configuration sur serveur OpenVPN en décommentant la dernière ligne du fichier /etc/openvpn/server.conf : log-append /var/log/openvpn.log On lance le serveur avec la commande: Service openvpn restart A 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: sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward' Pour rendre ce paramétrage de routage permanant (même après un reboot), il faut ajouter la ligne suivante au fichier /etc/sysctl.conf:
net.ipv4.ip_forward = 1 Puis configuration d'iptables (si utilisé sur votre serveur) : # règles obligatoires pour ouvrir déverrouiller l accès : iptables -I FORWARD -i tun0 -j ACCEPT iptables -I FORWARD -o tun0 -j ACCEPT iptables -I OUTPUT -o tun0 -j ACCEPT # autres règles : Translation d'adresses iptables -A FORWARD -i tun0 -o eth0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 10.8.0.2/24 -o eth0 -j MASQUERADE 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): sh -c "iptables-save > /etc/iptables.rules" Puis éditer votre fichier /etc/network/interfaces pour y ajouter la ligne suivante après la définition de votre interface réseau principale ("iface eth0 inet..." par exemple): pre-up iptables-restore < /etc/iptables.rules Le serveur est maintenant prêt à accueillir les clients. Nous allons donc voir dans le chapitre suivant comment déclaration un client sur le serveur. Création d'un compte client OpenVPN : Imaginons que l'on veuille créer une clé pour le client "pcportablekevin" (c'est un exemple), alors il suffit de saisir les commandes suivantes sur le serveur: cd /etc/openvpn/easy-rsa source vars./build-key pcportablekevin Note: si vous souhaitez protéger l'accès à vos clés par un mot de passe (c'est à dire qu'un mot de passe sera demandé à la monté du tunnel VPN), il faut utiliser la commande./build-key-pass en lieu et place de./buil-key. Le script./build-key va générer 3 fichiers dans le répertoire /etc/openvpn/easy-rsa/keys: pcportablekevin.crt: Certificat pour le client pcportablekevin.csr: Certificat à garder sur le serveur
pcportablekevin.key: Clés pour le client On copie les fichiers nécessaires un sous répertoire du répertoire /etc/openvpn/clientconf/préalablement créé: mkdir /etc/openvpn/clientconf/pcportablekevin/ cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/ pcportablekevin.crt keys/ pcportablekevin.key /etc/openvpn/clientconf/ pcportablekevin / On va ensuite dans le répertoire /etc/openvpn/clientconf/pcportablekevin/: cd /etc/openvpn/clientconf/pcportablekevin/ Puis on créé 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- ifconfig.me/ip"): # Client client dev tun proto tcp-client remote 82.227.153.157 1195 resolv-retry infinite cipher AES-256-CBC ; client-config-dir ccd # Cles ca ca.crt cert pcportablekevin.crt key pcportablekevin.key tls-auth ta.key 1 key-direction 1 # Securite nobind persist-key persist-tun comp-lzo verb 3 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/pcportablekevin/: 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)
xxxxxxx.crt: Certificat du client xxxxxxx.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 pcportablekevin.zip *.* Configuration d'un client OpenVPN sous Ubuntu : Les opérations suivantes sont à faire sur le PC client que l'on veut connecter au serveur VPN. On part sur le principe ou le fichier pcportablenicolargo.zip a été téléchargé et dézippé dans le répertoire /etc/openvpn/pcportablekevin. Gnome permet de configurer de manière graphique le client OpenVPN. Pour celà il faut ajouter les packages suivants sur sa distribution (Ubuntu Desktop 10.10 dans mon exemple): aptitude install openvpn resolvconf network-manager-openvpn-gnome Il faut redémarrer la machine pour finaliser l'installation. Déclaration du VPN sous Ubuntu : Ensuite on clique gauche sur l'icone réseau du Tableau de bord > Connexions VPN > Configurer le VPN. On clique sur le bouton Importer. On va dans le répertoire /etc/openvpn/pcportablekevin et on sélectionne le fichier client.conf. La fenêtre suivante devrait s'afficher:
Il ne reste plus qu'à cliquer sur Appliquer. Utilisation du VPN sous Ubuntu Rien de très compliqué :). Si vous avez nommé votre déclaration de VPN Client alors, il suffit de cliquer gauche sur l'icone réseau du Tableau de bord > Connexions VPN > Client. L'icône réseau du tableau de bord devrait se voir modifier (apparition d'un petit cadenas). Pour ce déconnecter du VPN: Tableau de bord > Connexions VPN > Déconnecter le VPN. Configuration d'un client OpenVPN sous Windows : Après quelques tests sous Windows XP, le client que je préconise ci-dessous n'est vraiment pas concluant (impossible de se connecter au serveur une fois sur deux, pas de log...). Je conseille donc l'utilisation d'une solution libre OpenVPN Windows (à télécharger sur le site http://openvpn.net/index.php/open-source/downloads.html).
Une fois installé, il suffit de décompresser l'archive pcportablekevin.zip dans le répertoire C:/Programs Files/Openvpn/conf et de se connecter à partir du bouton qui se trouve dans la barre des tâches. On part sur le principe ou le fichier pcportablekevin.zip a été téléchargé et dézippé dans le répertoire c:/vpn/pcportablekevin. On va utiliser le client OpenVPN pour Windows nommé "OpenVPN Acccess Server Windows client" téléchargeable sur le site suivant (il nécessite l'installation préalable du framework.net 3.5 SP1, téléchargeable sur le même site). Déclaration du VPN sous Windows Une fois le logiciel téléchargé puis installé. Il suffit de cliquer sur le nouvel icône dans la barre des tâches. La fenêtre suivante devrait apparaître. Il faut alors cliquer sur le bouton + pour ajouter une nouvelle connexion VPN. Ensuite on sélectionne l'option d'importation locale (1) et on clique sur Import (2):
On sélectionne ensuite le fichier client.ovpn qui se trouve dans c:/vpn/pcportablekevin:
On sauvegarde la configuration:
La nouvelle connexion VPN devrait apparaître dans la fenêtre principale:
Utilisation du VPN sous Windows Il suffit de cliquer sur le nouvel icône dans la barre des tâches. Il faut alors cliquer sur le bouton correspondant à votre connexion VPN définie dans le paragraphe précédent.
Une fois la connexion établie, on a le message suivant:
Pour se déconnecter du VPN, il suffit de cliquer sur le bouton... "Disconnect" (bravo):
Source Nicolargo.com