Tutoriel de mise en place d`un serveur VPN sur Linux Debian et Mint
Transcription
Tutoriel de mise en place d`un serveur VPN sur Linux Debian et Mint
BEDDES Jérémy Mémos Personnels Tutoriel de mise en place d’un serveur VPN sur Linux Debian et Mint Introduction Le terme VPN signifie « Virtual Private Network ». En d’autres termes c’est un réseau privé virtuel. Ce principe est très utilisé par les entreprises qui ont des bâtiments dans plusieurs villes. En effet tous ces bâtiments pourront être dans le même réseau virtuel en passant par une connexion VPN sécurisée. Ce schéma illustre très bien le principe du VPN. Sur chaque site il y a un serveur permettant la connexion. Cette connexion passe par le réseau internet mais elle est sécurisée et cryptée dans un « tunnel », c'est-à-dire que le fournisseur d’accès ne voit pas les informations qui circulent. Ce principe est appelé le tunneling. Le VPN agit donc de telle sorte que le site A soit connecté directement au site B (comme s’il s’agissait d’un réseau local). BEDDES Jérémy Mémos Personnels Nous allons maintenant apprendre à créer un serveur VPN. Création du serveur VPN La plupart des commandes suivantes doivent être exécutée en super utilisateur « root ». Tout d’abord installons openvpn : # aptitude install openvpn Puis on créé un répertoire qui contiendra par la suite une copie des fichiers de configuration : # mkdir /etc/openvpn/easy-rsa On copie ensuite les fichiers de configuration dans ce dossier : # cp –r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/ L’option -r permet de copier tout le répertoire mentionné après. Il faut aussi penser à rajouter une étoile pour indiquer de copier tous les fichiers du répertoire. Pour des raisons de sécurité nous allons faire la commande suivante qui permet de donner la possession du dossier au compte root. # chown –R $USER /etc/openvpn/easy-rsa/ Nous allons maintenant configurer le serveur VPN pour utiliser une authentification par clés et certificats. Commençons par éditer le fichier /etc/openvpn/easy-rsa/vars : # nano /etc/openvpn/easy-rsa/vars BEDDES Jérémy Mémos Personnels Ici il faut paramétrer le pays, la région, la ville comme suit : Ensuite, on lance la séquence 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 Il faut ensuite copier les clés et les certificats utiles pour le serveur VPN dans le répertoire /etc/openvpn/ : # cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key keys/dh1024.pem /etc/openvpn/ Pour des raisons de sécurité, il faut créer un répertoire « prison » dans lequel le processus OpenVPN sera chrooté (pour limiter les dégâts occasionnés en cas de faille dans OpenVPN). Il faut aussi créer un autre répertoire qui contiendra la configuration des clients. BEDDES Jérémy Mémos Personnels # mkdir /etc/openvpn/jail # mkdir /etc/openvpn/clientconf Pour terminer, on créé le fichier de configuration /etc/openvpn/server.conf # nano /etc/openvpn/server.conf Copiez ensuite les lignes suivantes dans ce fichier (à l’aide d’une connexion SSH par exemple, à l’aide de Putty ou Kitty). # Serveur TCP/443 mode server proto tcp port 443 dev tun # Clefs et certificats ca ca.crt cert server.crt key server.key dh dh1024.pem tls-auth ta.key 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 4.4.4.4" push "dhcp-option DNS 8.8.8.8" keepalive 10 120 # Securité user nobody group nogroup chroot /etc/openvpn/jail persist-key BEDDES Jérémy Mémos Personnels persist-tun comp-lzo # Log verb 3 mute 20 status openvpn-status.log ; log-append /var/log/openvpn.log L’adresse IP est bien sur à adapter. Le point-virgule est important en fin de fichier, nous l’enlèverons par la suite lorsque le serveur sera activé. Le fichier de configuration que nous venons de créer permet de créer un serveur VPN sécurisé avec SSL. Il est basé sur le protocole TCP et utilise le port 443 (HTTPS). Dans l’exemple de ce fichier, les clients auront une IP dans la plage d’adresse de 10.8.0.0/24 (à adapter en fonction de vos besoins). Testons la configuration : # cd /etc/openvpn # openvpn server.conf Si vous obtenez le message « Initialization Sequence Completed » (ou un message similaire), votre serveur démarrera correctement. Maintenant vous pouvez enlever le point-virgule du fichier de configuration. Démarrons le serveur : # /etc/init.d/openvpn start BEDDES Jérémy Mémos Personnels Vos machines clientes vont maintenant pouvoir se connecter au serveur VPN. Par contre il sera impossible d’aller plus loin que le serveur VPN puisque l’adresse 10.0.8.X n’est pas routée hors du serveur. Configuration du routage : # sh -c ‘echo 1 > /proc/sys/net/ipv4/ip_forward’ Pour que ce paramétrage de routage soit permanent, il faut ajouter la ligne suivante au fichier /etc/sysctl.conf net.ipv4.ip_forward = 1 Puis il faut configurer la translation d’adresse (NAT) : # iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE Pour que cette règle de NAT soit persistante après un reboot du serveur, il faut utiliser un script existant : # sh -c ‘’iptables-save > /etc/iptables.rules’’ Puis il faut éditer le fichier /etc/network/interfaces pour y ajouter la ligne suivante après la définition de l’interface réseau principale (iface, inet, eth0 par exemple). pre-up iptables-restore < /etc/iptables.rules Votre serveur est donc maintenant prêt à accueillir des clients.