Installer un serveur OpenVPN
Aller zou ! Un petit billet histoire de se mettre en forme sur l’installation d’un serveur OpenVPN. Vous allez voir que c’est assez simple et rapide à mettre en place (j’ai mis au maximum 10 minutes)
[nice_info]Avant toute chose, assurez-vous que vos serveurs qui vont se « VPNer » doivent avoir la même heure pour les certificats, donc utilisez la commande ntpdate 🙂 [/nice_info]
Lisez la suite pour installer ce serveur 🙂
1. Installation du paquet et configuration
Déja nous devons installer le paquet openvpn :
aptitude install openvpn |
Nous allons choisir d’utiliser l’authentification sécurisée avec le couple clés/certificats et non l’authentification user/password.
J’ai effectué l’installation sous une Debian Lenny pour ceux qui utilisent Ubuntu c’est les mêmes docs et les mêmes paquets (vous le savez tous :p)
cd /etc/openvpn cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /etc/openvpn |
Ci-dessus, on a pris les fichiers et scripts disponibles dans les exemples de la documentation openvpn.
Maintenant on se déplace dans le dossier de conf :
cd easy-rsa/ |
Dans le fichier vars vous devez modifier les lignes suivantes avec vos données :
export KEY_COUNTRY="US" export KEY_PROVINCE="CA" export KEY_CITY="SanFrancisco" export KEY_ORG="Fort-Funston" export KEY_EMAIL="me@myhost.mydomain" |
Une fois modifié, lancez le fichier :
./vars |
Ensuite, créez le fichier d’autorité (CA) :
./build-ca |
Création de la clé du serveur (nommée server):
./build-key-server server |
[nice_info]Laissez toutes les valeurs par défaut sauf la signature (répondez par ‘y’ aux questions de signature et de commit[/nice_info]
Création d’une clé client (machine01)
./build-key machine01 |
Création d’une clé Diffie Hellman
./build-dh |
Augmentation de la sécurité de notre serveur, on va ajouter une signature HMAC sur les paquets « HandShake » c’est à dire lors de l’établissement de la connexion et l’échange de clés :
openvpn --genkey --secret keys/ta.key |
Fichier | Description |
ca.crt | Certificat d’autorité de certification( CA) |
ca.key | Clé correspondante à l’Autorité de certification |
server.crt | Certificat du serveur |
server.key | Clé du serveur |
machine01.crt | Certificat de la machine 1 |
machine01.key | Clé de la machine 1 |
dh1024.pem | Paramètre Diffie Hellman |
ta.key | Clé utilisée pour l’auth-TLS |
Seuls les fichiers ca.crt, machine01.crt, machine01.key et ta.key vont aller dans les répertoires de notre client.
Les fichiers ca.crt, server.crt, server.key, dh1024.pem et ta.key doivent rester sur votre serveur et surtout le fichier ca.crt qui permet de signer les certificats 🙂
Le fichier ca.key doit être gardé au chaud mais pas obligatoire sur vos machines clients et sur le serveur.
2. Création du fichier de configuration
Fichier server.conf
mode server # c'est le fichier de configuration du serveur proto tcp port 443 # port 443 en TCP dev tun # Utilise l'interface virtuelle tun #Clefs ca keys/ca.crt cert keys/server.crt key keys/server.key dh keys/dh1024.pem tls-auth keys/ta.key 0 # 0 pour le serveur cipher AES-256-CBC # algorithme de chiffrement #Journaux, niveau de verbosité, masque de répétition et fichiers de journaux. verb 3 mute 20 status openvpn-status.log log-append /var/log/openvpn.log #Configuration VPN #client-to-client # permet l'échange de données entre les clients server 172.16.32.0 255.255.255.0 # adresse IP distribuées aux clients push "redirect-gateway def1 bypass-dhcp" # redirection du flux de données push "dhcp-option DNS 8.8.8.8" # Changement des DNS push "dhcp-option DNS 8.8.4.4" keepalive 10 120 # Test de la connexion avec le client toutes les 10s, # au bout de 120s de non réponse le client est en timeout. #Gestion des droits et compression de données user nobody # Changement de l'utilisateur et du groupe pour l'exécution group nogroup persist-key # n'accède plus à certaines options, persist-tun # car réduction des privilèges utilisateur comp-lzo # compression des données |
3. Routage
Si vous souhaitez utiliser votre serveur OpenVPN en tant que passerelle vous devez entrer encore quelques commandes comme activation du routage puis des règles iptables afin de réaliser le nat :
echo 1 > /proc/sys/net/ipv4/ip_forward iptables -A INPUT --dport 443 -p tcp iptables -A INPUT -i eth0 iptables -A FORWARD -i tun0 -j ACCEPT iptables -A FORWARD -o tun0 -j ACCEPT iptables -t nat -A POSTROUTING -s 172.16.1.0/24 -o eth0 -j MASQUERADE |
J’estime que votre interface WAN est eth0, que le port VPN est bien 443 et que vous avez mis en réseau VPN 172.168.1.0 😉
4. Lancement du serveur avec notre fichier de configuration
Pour lancer le serveur, entrez cette commande :
/etc/init.d/openvpn start |
Vous pouvez connecter un client à votre serveur OpenVpn 🙂
Dis est ce que au niveau de ton : cd easy-rsa/ c’est pas cd /2.0 ?