Table des matières Créer un réseau privé virtuel (VPN) avec OpenVPN Installation Sur le serveur et les clients Linux Sur un client Windows Côté Serveur Génération des fichiers Configuration Côté client Créer un réseau privé virtuel (VPN) avec OpenVPN Critères requis : Vous avez un compte sur console.online.net Vous avez un serveur dédié Dedibox OpenVPN est un logiciel libre permettant de créer un réseau privé virtuel (VPN). Cela permet basiquement d'encrypter le trafic entre deux hôtes distants. Ce tutoriel est basé sur Ubuntu 14.04 Installation Sur le serveur et les clients Linux apt-get install openvpn easy-rsa Sur un client Windows Vous pouvez télécharger la version qui correspond à votre ordinateur directement via ce lien : https://openvpn.net/index.php/open-source/downloads.html Si votre PC est récent, cette version est généralement celle qu'il vous faut : Installer (64-bit), Windows Vista and later Côté Serveur Génération des fichiers On commence par copier les exemples de configuration : cp -R /usr/share/easy-rsa/ /etc/openvpn/easy-rsa/ Puis, on se rend dans le dossier pour éditer les fichiers concernés : cd /etc/openvpn/easy-rsa/ nano vars export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" export KEY_OU="MyOrganizationalUnit" # X509 Subject Field export KEY_NAME="EasyRSA" Modifiez ces lignes en fonction de vos besoins, puis, enregistrez & fermez nano. Nous allons maintenant générer les fichiers nécessaire au fonctionnement de notre serveur et de notre client : source ./vars ./clean-all ./build-dh ./pkitool --initca ./pkitool --server server ./build-key client1 La dernière ligne avec “client1” est à répéter autant de fois qu'il y aura de clients connectés au VPN. Nous générons la clé pour le TLS-Auth : openvpn --genkey --secret keys/ta.key Et on copie les fichiers dans le dossier racine d'OpenVPN : cd keys/ && cp ca.crt dh2048.pem server.crt server.key ta.key ../../ Configuration Nous commençons par éditer le fichier de configuration serveur : nano /etc/openvpn/server.conf port 1194 proto udp dev tun topology subnet ca ca.crt cert server.crt key server.key # A ne pas diffuser dh dh2048.pem server 172.31.42.0 255.255.255.0 push "redirect-gateway def1 bypass-dhcp" ifconfig-pool-persist ipp.txt client-to-client keepalive 10 120 tls-auth ta.key 0 # A ne pas diffuser comp-lzo user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3 Et nous redémarrons le serveur OpenVPN : sudo service openvpn restart Maintenant nous allons nous attaquer à la configuration du pare-feu. En effet, en l'état, nous attribuons une IP d'un réseau privé à notre client. Il faudra donc autoriser cette IP à naviguer sur le NET depuis le serveur. Commencez par ajouter ou décommenter la ligne suivante dans le fichier /etc/sysctl.conf : net.ipv4.ip_forward = 1 Puis nous prenons en compte les modifications : sysctl -p Nous allons maintenant installer le paquet iptables-persistent pour charger les règles à chaque démarrage. apt-get install iptables-persistent Il vous demandera si vous souhaitez enregistrer les règles existantes. À vous de voir si vous en avez déjà de mises en place, et, le cas échéant, de les sauvegarder. Et maintenant, nous mettons en place les règles : nano /etc/iptables/rules.v4 # Règles de Translation d'adresses *nat :PREROUTING ACCEPT [0:0] :INPUT ACCEPT [0:0] :OUTPUT ACCEPT [0:0] :POSTROUTING ACCEPT [0:0] -A POSTROUTING -o eth0 -j MASQUERADE -A POSTROUTING -s 172.31.42.0/24 -o eth0 -j MASQUERADE -A POSTROUTING -s 172.31.42.2/24 -o eth0 -j MASQUERADE COMMIT # Règles de filtrage *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A FORWARD -i tun0 -o eth0 -j ACCEPT -A FORWARD -i tun0 -j ACCEPT -A FORWARD -o tun0 -j ACCEPT -A OUTPUT -o tun0 -j ACCEPT COMMIT Redémarrez maintenant le daemon pour recharger les règles : sudo service iptables-persistent restart Ces règles sont très basiques. Elles sont bien évidemment à adapter en fonction de vos besoins. Côté client Il vous faut maintenant récupérer les fichiers sur votre poste client. Avec SCP par exemple. Les fichiers concernés sont : ca.crt clientX.crt clientX.key ta.key En adaptant bien évidemment les noms de fichiers, en remplaçant “X” par le numéro du client. Nous éditons le fichier de configuration Client : nano /etc/openvpn/client.conf client dev tun proto udp remote ip.du.ser.veur resolv-retry infinite nobind user nobody group nogroup persist-key persist-tun ca ca.crt cert client1.crt key client1.key # A ne pas diffuser ns-cert-type server tls-auth ta.key 1 # A ne pas diffuser comp-lzo verb 3 N'oubliez pas de personnaliser la configuration avec l'adresse IP de votre serveur. Vous avez maintenant une configuration OpenVPN fonctionnelle.