====== Mise en production ======
===== Implémentation Debian =====
Il suffit donc d'installer le paquet ''openvpn'' et les dépendances manquantes viendront avec. L'installation, en plus du code et de la documentation dans ''/usr/share/doc/openvpn'' (Le README.Debian n'est pas une lecture inutile) produit un répertoire ''/etc/openvpn'' vide et un fichier ''/etc/default/openvpn'' auquel il faudra jeter un coup d'œil. De plus, un script d'init ''/etc/init.d/openvpn'' permettra le démarrage et l'arrêt automatique du tunnel. Enfin, des scripts de gestion du réseau permettront de démarrer ou d'arrêter les tunnels suivant l'état des interfaces physiques associées.
Voici la liste complète des fichiers installés par le paquet :
:~# dpkg -L openvpn
/.
/etc
/etc/openvpn
/etc/network
/etc/network/if-up.d
/etc/network/if-up.d/openvpn
/etc/network/if-down.d
/etc/network/if-down.d/openvpn
/etc/default
/etc/default/openvpn
/etc/init.d
/etc/init.d/openvpn
/usr
/usr/sbin
/usr/sbin/openvpn
/usr/share
/usr/share/man
/usr/share/man/man8
/usr/share/man/man8/openvpn.8.gz
/usr/share/doc
/usr/share/doc/openvpn
/usr/share/doc/openvpn/README.auth-pam
/usr/share/doc/openvpn/README.down-root
/usr/share/doc/openvpn/AUTHORS
/usr/share/doc/openvpn/PORTS
/usr/share/doc/openvpn/README
/usr/share/doc/openvpn/README.Debian
/usr/share/doc/openvpn/copyright
/usr/share/doc/openvpn/examples
/usr/share/doc/openvpn/examples/sample-config-files
/usr/share/doc/openvpn/examples/sample-config-files/openvpn-startup.sh
/usr/share/doc/openvpn/examples/sample-config-files/firewall.sh
/usr/share/doc/openvpn/examples/sample-config-files/loopback-client
/usr/share/doc/openvpn/examples/sample-config-files/README
/usr/share/doc/openvpn/examples/sample-config-files/xinetd-server-config
/usr/share/doc/openvpn/examples/sample-config-files/loopback-server
/usr/share/doc/openvpn/examples/sample-config-files/office.up
/usr/share/doc/openvpn/examples/sample-config-files/xinetd-client-config
/usr/share/doc/openvpn/examples/sample-config-files/home.up
/usr/share/doc/openvpn/examples/sample-config-files/openvpn-shutdown.sh
/usr/share/doc/openvpn/examples/sample-config-files/static-home.conf
/usr/share/doc/openvpn/examples/sample-config-files/tls-home.conf
/usr/share/doc/openvpn/examples/sample-config-files/tls-office.conf
/usr/share/doc/openvpn/examples/sample-config-files/client.conf
/usr/share/doc/openvpn/examples/sample-config-files/static-office.conf
/usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
/usr/share/doc/openvpn/examples/sample-keys
/usr/share/doc/openvpn/examples/sample-keys/README
/usr/share/doc/openvpn/examples/sample-keys/dh1024.pem
/usr/share/doc/openvpn/examples/sample-keys/pass.crt
/usr/share/doc/openvpn/examples/sample-keys/pass.key
/usr/share/doc/openvpn/examples/sample-keys/tmp-ca.crt
/usr/share/doc/openvpn/examples/sample-keys/tmp-ca.key
/usr/share/doc/openvpn/examples/sample-keys/server.crt
/usr/share/doc/openvpn/examples/sample-keys/server.key
/usr/share/doc/openvpn/examples/sample-keys/client.crt
/usr/share/doc/openvpn/examples/sample-keys/client.key
/usr/share/doc/openvpn/examples/sample-keys/pkcs12.p12
/usr/share/doc/openvpn/examples/easy-rsa
/usr/share/doc/openvpn/examples/easy-rsa/2.0
/usr/share/doc/openvpn/examples/easy-rsa/2.0/vars
/usr/share/doc/openvpn/examples/easy-rsa/2.0/list-crl
/usr/share/doc/openvpn/examples/easy-rsa/2.0/clean-all
/usr/share/doc/openvpn/examples/easy-rsa/2.0/Makefile
/usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl.cnf
/usr/share/doc/openvpn/examples/easy-rsa/2.0/sign-req
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-pkcs12
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-server
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key-pass
/usr/share/doc/openvpn/examples/easy-rsa/2.0/revoke-full
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-req-pass
/usr/share/doc/openvpn/examples/easy-rsa/2.0/inherit-inter
/usr/share/doc/openvpn/examples/easy-rsa/2.0/whichopensslcnf
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-key
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-req
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-ca
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-dh
/usr/share/doc/openvpn/examples/easy-rsa/2.0/build-inter
/usr/share/doc/openvpn/examples/easy-rsa/2.0/pkitool
/usr/share/doc/openvpn/examples/easy-rsa/2.0/README.gz
/usr/share/doc/openvpn/examples/easy-rsa/2.0/openssl-0.9.6.cnf.gz
/usr/share/doc/openvpn/examples/easy-rsa/vars
/usr/share/doc/openvpn/examples/easy-rsa/list-crl
/usr/share/doc/openvpn/examples/easy-rsa/clean-all
/usr/share/doc/openvpn/examples/easy-rsa/openssl.cnf
/usr/share/doc/openvpn/examples/easy-rsa/sign-req
/usr/share/doc/openvpn/examples/easy-rsa/build-key-pkcs12
/usr/share/doc/openvpn/examples/easy-rsa/build-key-server
/usr/share/doc/openvpn/examples/easy-rsa/build-key-pass
/usr/share/doc/openvpn/examples/easy-rsa/revoke-full
/usr/share/doc/openvpn/examples/easy-rsa/.externals
/usr/share/doc/openvpn/examples/easy-rsa/make-crl
/usr/share/doc/openvpn/examples/easy-rsa/build-req-pass
/usr/share/doc/openvpn/examples/easy-rsa/build-key
/usr/share/doc/openvpn/examples/easy-rsa/build-req
/usr/share/doc/openvpn/examples/easy-rsa/build-ca
/usr/share/doc/openvpn/examples/easy-rsa/build-dh
/usr/share/doc/openvpn/examples/easy-rsa/build-inter
/usr/share/doc/openvpn/examples/easy-rsa/revoke-crt
/usr/share/doc/openvpn/examples/easy-rsa/README.gz
/usr/share/doc/openvpn/changelog.Debian.gz
/usr/share/doc/openvpn/changelog.gz
/usr/share/openvpn
/usr/share/openvpn/verify-cn
/usr/lib
/usr/lib/openvpn
/usr/lib/openvpn/openvpn-auth-pam.so
/usr/lib/openvpn/openvpn-down-root.so
/usr/include
/usr/include/openvpn
/usr/include/openvpn/openvpn-plugin.h
Il suffira de placer dans le répertoire ''/etc/openvpn/'' autant de fichiers de configuration que l'on souhaitera démarrer de tunnels différents. Ces fichiers de configuration devront contenir les paramètres que nous avons jusqu'ici indiqué en ligne de commande.
===== Mise en service =====
Nous allons donc créer pour chaque extrémité de tunnel un fichier de configuration qui aboutira au même mode de fonctionnement que celui que nous avons vu en page précédente.
==== Pour aaron ====
(Le serveur)
Nous avions la ligne de commande :
openvpn --port 8147 --dev tun1 --ifconfig 192.168.25.1 192.168.25.2 --comp-lzo --verb 5 --tls-server --dh dh1024.pem --ca bts.eme-cacert.pem --cert aaron.bts.eme.pem --key aaron.bts.eme-key.pem --reneg-sec 21600
Ceci va nous donner, avec quelques modifications nécessaires :
port 8147
dev tun1
ifconfig 192.168.25.1 192.168.25.2
comp-lzo
verb 5
tls-server
dh /root/dh1024.pem
ca /root/bts.eme-cacert.pem
cert /root/aaron.bts.eme.pem
key /root/aaron.bts.eme-key.pem
reneg-sec 21600
Il sera sans doute intéressant de compléter quelque peu ce fichier, et probablement de déplacer les clés, certificats et autres ustenciles de sécurité ailleurs, avant de démarrer le tunnel.
==== Pour cyclope ====
(Le client)
Nous avions :
openvpn --remote 82.127.57.95 --port 8147 --dev tun1 --ifconfig 192.168.25.2 192.168.25.1 --comp-lzo --verb 5 --tls-client --ca bts.eme-cacert.pem --cert cyclope.maison.mrs.pem --key cyclope.maison.mrs-key.pem
Ce qui nous donne :
remote 82.127.57.95 port 8147 dev tun1 ifconfig 192.168.25.2 192.168.25.1 comp-lzo verb 5 tls-client ca /root/bts.eme-cacert.pem cert /root/cyclope.maison.mrs.pem key /root/cyclope.maison.mrs-key.pemMêmes remarques. ===== Durcissement ===== Voyons un peu, avant de mettre en production, s'il est possible de prendre quelques mesures susceptibles de rendre notre tunnel plus solide, en termes de sécurité. ==== Interface d'écoute ==== Dans la configuration actuelle, openvpn va écouter sur toutes les interfaces de l'hôte. Ce n'est ni nécessaire ni même souhaitable, suivant la configuration de notre hôte. Le paramètre : local
mode p2p
port 8147
dev tun1
user nobody
group nogroup
persist-key
persist-tun
ifconfig 192.168.25.1 192.168.25.2
tls-server
dh /etc/openvpncerts/dh1024.pem
ca /etc/openvpncerts/bts.eme-cacert.pem
cert /etc/openvpncerts/aaron.bts.eme.pem
key /etc/openvpncerts/aaron.bts.eme-key.pem
tls-auth /etc/openvpncerts/shared.key 0
reneg-sec 900
comp-lzo
verb 1
route 192.168.0.0 255.255.255.0 192.168.25.2
==== Pour cyclope ====
mode p2p
remote 82.127.57.95
port 8147
dev tun1
user nobody
group nogroup
persist-key
persist-tun
ifconfig 192.168.25.2 192.168.25.1
tls-client
ca /etc/openvpncerts/bts.eme-cacert.pem
cert /etc/openvpncerts/cyclope.maison.mrs.pem
key /etc/openvpncerts/cyclope.maison.mrs-key.pem
tls-auth /etc/openvpncerts/shared.key 1
reneg-sec 900
comp-lzo
verb 1
route 192.168.10.0 255.255.255.0 192.168.25.1
Cette configuration devrait donner satisfaction dans bien des cas.
===== Conclusion =====
Nous sommes très loin d'avoir vu tout ce qu'il est possible de faire avec OpenVPN. Sa documentation n'est pas toujours très claire, mais elle vous en apprendra sans doute encore beaucoup plus sur ses possibilités.
La solution vue ici permettra de relier simplement deux réseaux IP privés distants à travers l'internet, avec un niveau de sécurité convenable.