Installation et Configuration OpenVPN

Download Report

Transcript Installation et Configuration OpenVPN

MISE EN PLACE D’UN VPN
SSL AVEC OPENVPN
Infrastructure Linux - Debian
Julien – blog.bckr.fr
Mise en place d’un VPN SSL avec OpenVPN
Table des matières
I.
Installation du serveur OpenVPN .................................................................................................... 2
II.
Configuration du serveur OpenVPN ................................................................................................ 2
III.
Test de la configuration ............................................................................................................... 4
IV.
Configuration des règles de routage ........................................................................................... 5
V.
Création d’un client OpenVPN ........................................................................................................ 6
VI.
Configuration du logiciel Windows ............................................................................................. 7
Mise en place d’un VPN SSL avec OpenVPN
I.
Installation du serveur OpenVPN
Il faut commencer par installer les paquets relatifs à OpenVPN :
apt-get install openvpn
Avec la nouvelle version d’OpenVPN des outils nous facilitant les tâches d’administration ont été mis
à notre disposition, il faut donc récupérer ses outils et les place dans le dossier easy-rsa de openvpn
et leur attribuer les bons droits :
mkdir /etc/openvpn/easy-rsa/
cp –r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
chown –R root /etc/openvpn/easy-rsa/
II.
Configuration du serveur OpenVPN
Nous utiliserons une authentification par clés et certificats, il faudra donc générer une paire de clés
et un certificat pour chaque utilisateur du VPN. Il faut donc configurer OpenVPN :
-
On édite le fichier /etc/openvpn/easy-rsa/vars, puis on modifie les variables suivantes :
export KEY_COUNTRY="FR"
export KEY_PROVINCE="45"
export KEY_CITY="Orléans"
export KEY_ORG="blog.bckr.fr"
export [email protected]
-
On génère ensuite la paire de clés du serveur ainsi que les certificats, toujours à l’aide des
outils d’OpenVPN :
cd /etc/openvpn/easy-rsa/
source vars
./clean-all
./build-dh
./pkitool –initca
./pkitool --server server
openvpn --genkey --secret keys/ta.key
-
On copie ensuite les clés du serveur dans le repertoire d’OpenVPN /etc/openvpn/ :
cp keys/ca.crt keys/ta.key keys/server.crt keys/server.key
keys/dh1024.pem /etc/openvpn/
-
Pour chrooté le processus d’OpenVPN afin de limiter les risques en cas d’une défaillance de
ce dernier on va créer un dossier :
mkdir /etc/openvpn/jail
Mise en place d’un VPN SSL avec OpenVPN
-
Il faut ensuite créer un dossier qui accueillera les configurations des clients VPN :
mkdir /etc/openvpn/clientconf
-
On créer ensuite le fichier de configuration du serveur OpenVPN :
# Parametre du Serveur
mode server
proto tcp
port 4433
dev tun
# Cles et certificats VPN
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
tls-auth ta.key 1
key-direction 0
cipher AES-256-CBC
# Config Reseau
server 172.16.0.0 255.255.255.0
push "route 10.0.0.0 255.255.255.0"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
# Securite du VPN
user nobody
group nogroup
chroot /etc/openvpn/jail
persist-key
persist-tun
comp-lzo
# Log
verb 3
mute 20
status openvpn-status.log
;log-append /var/log/openvpn.log
Mise en place d’un VPN SSL avec OpenVPN
-
III.
Dans la partie serveur, nous pouvons choisir le port de fonctionnement du serveur OpenVPN,
ici c’est le port 4433.
Dans la partie clés et certificats, nous indiquons les fichiers que nous avons crées
précédemment.
Dans la partie Config Réseau, nous indiquons le réseau du VPN, ici le réseau est le
172.16.0.0/24, il faut prendre un réseau qui n’existe pas dans votre infrastructure.
Les « push » permettent de rajouter des paramètres à votre client. Ici la ligne :
« route 10.0.0.0 255.255.255.0 » permet de ne faire passer les paquets que à destination
du réseau 10.0.0.0/24 par le VPN, sinon c’est la route par défaut du poste qui est
empruntée.
Si vous souhaitez faire router tous les paquets par le VPN, y compris vos connexions vers
Internet par le VPN il faut remplacer cette ligne par : redirect-gateway def1 bypass-dhcp
Test de la configuration
Pour tester la configuration d’OpenVPN, il faut se placer dans le dossier d’OpenVPN :
cd /etc/openvpn
Et lancer la commande :
openvpn server.conf
Vous devriez obtenir cela :
-
Si c’est le cas, il faut décommenter la dernière ligne du fichier de configuration d’OpenVPN
(etc/openvpn/server.conf) pour obtenir :
log-append /var/log/openvpn.log
-
On peut maintenant lancer le serveur VPN :
/etc/init.d/openvpn/ start
Mise en place d’un VPN SSL avec OpenVPN
IV.
Configuration des règles de routage
Pour l’instant, les clients peuvent se connecter au VPN, mais ils ne peuvent pas sortir de leur réseau
d’appartenance (ici le 172.16.0.0/24). Pour résoudre ce problème il faut faire du routage sur le
serveur. Pour cela :
-
Il faut activer la fonction de routage sur le système :
nano /etc/sysctl.conf
-
Et décommenter la ligne :
net.ipv4.ip_forward = 1
-
Il faut ensuite créer un fichier iptables dans /etc/init.d/
nano /etc/init.d/iptables.sh
-
Il faut ensuite créer une règle de MASQUERADE permettant de faire de la translation
d’adresses :
-
iptables –t nat –A POSTROUTING –s <reseau VPN> -o <interface de votre
réseau> -j MASQUERADE
Si vous possédez déjà un script iptables contenant des règles de routage et de
filtrage, il faut adapter celle-ci pour que le VPN puisse fonctionner. Si des
problèmes se posent, testez avec un script minimaliste laissant tout passer.
-
Il faut maintenant rendre le script exécutable et le lancer au démarrage de la machine :
chmod +x /etc/init.d/iptables.sh
update-rc.d iptables.sh defaults
Mise en place d’un VPN SSL avec OpenVPN
V.
Création d’un client OpenVPN
Pour créer un client VPN, nous utilisons les outils easy-rsa permettant de générer les clés et les
certificats propre au client (ici julienb) :
cd /etc/openvpn/easy-rsa
source vars
./build-key julienb
Ce script génére 3 fichiers : julienb.crt qui est le certificat pour le client, julienb.csr qui est la
demande de signature du certificat et enfin le fichier julienb.key qui est la clé pour le client.
-
Il faut ensuite copier ces fichiers dans le dossier contenant les configurations des clients :
mkdir /etc/openvpn/clientconf/julienb
cp /etc/openvpn/ca.crt /etc/openvpn/ta.key keys/julienb.crt
keys/julienb.key /etc/openvpn/clientconf/julienb/
-
Il faut maintenant créer le fichier de configuration du client :
cd /etc/openvpn/clientconf/julienb/
nano client.conf
Puis on insert ces paramètres :
# Client
client
dev tun
proto tcp-client
remote A.B.C.D 4433
resolv-retry infinite
cipher AES-256-CBC
; client-config-dir ccd
# Cles
ca ca.crt
cert julienb.crt
key julienb.key
tls-auth ta.key 1
key-direction 1
# Securite
nobind
persist-key
persist-tun
comp-lzo
verb 3
Mise en place d’un VPN SSL avec OpenVPN
-
Il faut remplacer A.B.C.D, par l’adresse ip publique du serveur OpenVPN. Ainsi que dans la
partie « Clés » renseigner les noms des fichiers créés précédemment.
-
Pour permettra la compatibilité avec le client Windows, il faut copier ce fichier de
configuration en client.conf en client.ovpn
cp client.conf client.ovpn
-
Il faut maintenant zipper tous ces fichiers et les transmettre à l’utilisateur :
apt-get install zip
zip julienb.zip *.*
VI.
Configuration du logiciel Windows
Pour les clients Windows, télécharger ce logiciel : OpenVPN Desktop Client
Il vous suffit de dézipper le dossier de configuration sur le poste de client, et de double cliquer sur le
client.ovpn et le logiciel se lance automatiquement :