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.