TP Linux sécurité : VPN
Présentation du TP
On souhaite rendre accessible l'intranet (réseau en [Link]) aux machines située à
l'extérieure via un VPN. On se propose d'utiliser d'une machine VMWARE sous
DEVIL-LINUX comme serveur VPN. Cette machine sera accessible via une adresse
NAT associée à la passerelle (adresse de l'interface eth0:0). La passerelle qui
s'occupera d'attribuer une adresse Ip publique aux machines du réseau privé sera le
poste de travail natif linux.
Interface serveur VPN :
Interface client VPN : ...
...
...
Vmware devil-Linux
... ... ... serveur openvpn
PC Binôme ...
client openvpn PC Linux natif : passerelle réseau
Avec :
adresses IP du réseau interne: [Link]/24
adresses IP du réseau local: [Link]/24
adresse IP de la passerelle au réseau local [Link] et [Link] et au réseau
privé [Link]
adresse du réseau VPN : [Link]/24
Quelques indications:
Le serveur et le client VPN seront l'application openvpn
Le seul fichier de configuration est : [Link] situé dans le répertoire
/etc/openvpn/ aussi bien pour le serveur que le client.
Le lancement du VPN : /etc/init.d/openvpn start/stop/restart
I - Mise en place d'un VPN point à point avec clé partagée
Le mode OpenVPN avec une clé partagée est plus facile à implémenter que le mode
SSL mais a le désavantage de:
- Nécessiter le transfert de la clé sur les deux équipements.
- Ne pas bénéficier du renouvellement de la clé partagée.
- Ne pas assurer d'authentification entre les machines.
Configuration du serveur OpenVPN
1) - Configurer la machine virtuelle pour installer le service openvpn.
Utiliser la commande setup
Sauvegarder puis redémarrer la machine virtuelle.
2) - Création de la clé:
Afin d'avoir un minimum de sécurité sur le VPN, on se propose de commencer par
créer la clé qui servira à autoriser la machine cliente à se connecter au serveur. Cette
clé peut être créer sur n'importe quelle plate-forme.
openvpn --genkey --secret [Link]
Une fois que vous avez créé la clé partagée, vous devrez la copier sur l'autre machine
OpenVPN. Vous devriez la transmettre seulement par l'intermédiaire d'un protocole
sécurisé comme SSH.
3) - Mise en place d'un tunnel point à point
Fichier de configuration du serveur Openvpn:
dev tun
ifconfig [Link] [Link]
secret [Link]
Fichier de configuration du client Opnevpn:
Remote [Link]
dev tun
ifconfig [Link] [Link]
secret [Link]
Tester le tunnel VPN.
4) - Optimisations
Ajouter les options suivantes:
Active la compression LZO des informations dans le tunnel:
comp-lzo
Utilisez cette option si le daemon est en mode écoute:
Ping-timer-rem
Options facilitant la connexion après un redémarrage:
persist-key
persist-tun
II - Mise en place d'un VPN en mode routage avec SSL
Interface client VPN : Interface serveur VPN :
a ... a ...
Intranet
[Link]/24
... ...
Vmware devil-Linux Vmware devil-Linux
client openvpn serveur openvpn
... ... ... ...
PC Binôme passerelle ...
PC Linux natif : passerelle vers
VPN
On se propose d'utiliser une nouvelle machine virtuelle configuré en NAT sur un
nouveau réseau privé comme client VPN.
On utilise toujours le mode a.
On se propose aussi:
- Distribuer des adresses Ip à partir d'un pool d'adresses au clients VPN
- Envoyer une route au client sur le réseau Intranet
OpenVPN fournit des outils basés sur OpenSSL pour créer l'installation d'une
Autorité de Certification (AC) locale
On se propose d'utiliser des certificats (entre le serveur et les clients) signés par l'AC.
1) - Création des certificats et clés pour l'utilisation de SSL
Copier tout le répertoire /usr/share/doc/openvpn/easy-rsa dans /home/demoCA
Initialisation et création de l'AC :
. ./vars
./clean-all
./build-ca
Le certificat et clef pour le serveur :
./build-key-server server
(!! bien remplir tous les champs sauf aa a et a ay
a laissés à vide. Le a doit être le a a)
Le certificat et clef pour le client:
./build-key localhost
Création des paramètres Diffie Hellman pour le cryptage du tunnel:
./buil-dh
Récupération des certificats: dans le répertoires keys récupérer le certificats de
l'AC, celui du serveur (avec sa clé associée) et enfin celui du client (avec sa
clé) et le paramètre de cryptographie Diffie-Hellman.
Repérer les certificats et afficher les à l'aide d la commande openssl.
openssl x509 -in NOM_DU_CERTIFICAT.crt -text -noout
Que représentent les fichiers [Link] et [Link] ? Où sont les clés
associées ?
Créer un répertoire sur le serveur et installez les bons certificats et bonnes clés
dedans. Faites de même avec le client VPN.
2) Configuration de la connexion VPN
Configuration du serveur VPN:
port 1194
proto udp
dev tap
# Network
mode server
ifconfig [Link] [Link]
ifconfig-pool [Link] [Link]
client-to-client
# SSL
tls-server
ca "certificat de l'AC avec son path"
cert "certificat du serveur avec son path"
key "clé du serveur avec son path"
dh "paramètres de chiffrement avec son path"
Configuration du client VPN:
client
dev tap
remote adresse du serveur
tls-client
ca "certificat de l'AC avec son path"
cert "certificat du client avec son path"
key "clé du client avec son path"
Vérifier le bon fonctionnement du VPN. Ajouter ensuite les paramètres
d'optimisation du VPN précédent.
3) Amélioration de la configuration
Essayer de pinguer depuis le client OpenVPN l'adresse IP dans le réseau privé
du PC natif du serveur OpenVPN.
Ajouter l'option : push "route .........."
Redémarrer les serveurs et clients VPN.
Essayer de nouveau de pinguer depuis le client OpenVPN l'adresse IP dans le
réseau privé du PC natif du serveur OpenVPN. Analyser les trames qui arrivent
sur le PC natif du serveur VPN. Ajouter ce qui manque de manière à ce que le
ping fonctionne correctement.