TP Linux sécurité : VPN

Transcription

TP Linux sécurité : VPN
TP Linux sécurité : VPN
Présentation du TP
On souhaite rendre accessible l'intranet (réseau en 10.1.0.0) 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 client VPN :
tun0 : 10.8.0.2
192.168.1.110: eth0
PC Binôme
client openvpn
Interface serveur VPN :
tun0 : 10.8.0.1
eth0 : 10.1.0.128
Vmware devil-Linux
vmnet1 : 10.1.0.1 serveur openvpn
192.168.1.10 : eth0
192.168.1.11 : eth0:0
PC Linux natif : passerelle réseau
Avec :
adresses IP du réseau interne: 10.1.0.0/24
adresses IP du réseau local: 192.168.1.0/24
adresse IP de la passerelle au réseau local 192.168.1.10 et 192.168.1.11 et au réseau
privé 10.1.0.1
adresse du réseau VPN : 10.8.0.0/24
Quelques indications:
Le serveur et le client VPN seront l'application openvpn
Le seul fichier de configuration est : openvpn.conf 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 secret.key
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 10.8.0.1 10.8.0.2
secret secret.key
Fichier de configuration du client Opnevpn:
Remote 10.1.0.128
dev tun
ifconfig 10.8.0.2 10.8.0.1
secret static.key
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 serveur VPN :
tap0 : 10.8.0.1
Interface client VPN :
tap0 : 10.8.0.10
Intranet
10.1.0.0/24
172.20.1.128: eth0
Vmware devil-Linux
client openvpn
172.20.1.1: vmnet1 192.168.1.110: eth0
PC Binôme passerelle
eth0 : 10.1.0.128
Vmware devil-Linux
serveur openvpn
192.168.1.10 : eth0
vmnet1 : 10.1.0.1
192.168.1.11 : eth0:0
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 tap.
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 challange password et optional company
name laissés à vide. Le common name doit être le nom de la machine)
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 server.key et localhost.key ? 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 10.8.0.1 255.255.255.0
ifconfig-pool 10.8.0.5 10.8.0.10
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.