Beruflich Dokumente
Kultur Dokumente
org/openvpn]]
Table des matires
A - Installation......................................................................................................................................2 A.1 - OpenVPN................................................................................................................................2 A.2 - Apache, Mysql, PHP...............................................................................................................2 A.3 - Webmin...................................................................................................................................2 B - Configuration des VPN..................................................................................................................2 B.1 - Certificats de scurit..............................................................................................................2 B.1.1 - Principe...........................................................................................................................2 B.1.2 - Gnrer le certificat et la cl de lAutorit de Certification matre.................................3 B.1.3 - Gnrer un certificat et une cl pour le serveur..............................................................4 B.1.4 - Gnrer les certificats et les cls pour 3 clients..............................................................4 B.2 - Gnrer des paramtres Diffie-Hellman().............................................................................5 C - Les fichiers cls..............................................................................................................................5 C.1 - Cration des fichiers de configuration pour le serveur et les clients......................................5 C.1.1 - Obtenir les fichiers dexemple de configuration.............................................................5 C.1.2 - Configuration du serveur................................................................................................6 C.1.3 - Configuration du client...................................................................................................6 D - Dmarrage automatique dOpenVPN au lancement du systme...................................................7 E - Dmarrage du VPN et tests de la connectivit...............................................................................7 E.1 - Dmarrage du serveur.............................................................................................................7 E.2 - Dmarrage du client................................................................................................................8 E.3 - Test..........................................................................................................................................8 E.4 - En cas d'utilisation de Firestarter............................................................................................8 F - Administration du serveur VPN......................................................................................................9 F.1 - Par telnet..................................................................................................................................9 F.2 - Utilisation de Webmin.............................................................................................................9 F.3 - Informations complmentaires................................................................................................9 F.3.1 - Inclure des machines ct serveur avec un VPN rout....................................................9 F.3.2 - Inclure des machines ct serveur avec un VPN bridg................................................10 F.3.3 - Inclure des machines avec un VPN rout......................................................................10 F.3.4 - Inclure des machines ct client avec un VPN bridg...................................................12 F.3.5 - Attribuer des options DHCP aux clients........................................................................12 G - Crer un VPN avec une adresse IP dynamique............................................................................12 H - Voir aussi......................................................................................................................................12 H.1 - Liens externes.......................................................................................................................12 H.2 - Notes.....................................................................................................................................13 I - Connecter un client Openvpn Windows un serveur Openvpn Linux..........................................14
administration, rseau, scurit, vpn OpenVPN est un logiciel libre permettant de crer un rseau priv virtuel (VPN).
Tutoriel_Ubuntu_Openvpn
1 / 14
A-
Installation
A.1 - OpenVPN
installez les paquets openvpn openssh-server openssl. Vous devrez au pralable activer le dpt Universe. Maintenant que le serveur OpenSSH est install, il est possible de prendre la main sur le serveur depuis nimporte o du rseau et mme dInternet (sil y a une redirection de faite au niveau du routeur) via ladresse IP du serveur sur le port 22. Pour ceux qui voudraient installer openvpn en le compilant c'est ici
A.3 - Webmin
Webmin fournit un module pour faciliter le paramtrage d'OpenVPN.
B-
mme, il est possible pour la cl de lAutorit de Certification (cl la plus sensible dans toute lInfrastructure de Cls Publiques) de rsider sur une toute autre machine, mme une sans connexion rseau. Si une cl prive est compromise, il est possible de la dsactiver en ajoutant son certificat une Liste de Rvocation de Certificat (LRC ou CRL en anglais). La LRC permet aux certificats compromis dtre rejets slectivement sans ncessiter une entire refonte de lInfrastructure de Cl Publiques. Nous allons gnrer successivement un certificat/une cl de lAutorit de Certification matre, un certificat/une cl pour le serveur et des certificats/des cls pour 3 clients diffrents.
Maintenant ditez le fichiers vars et initialiser les variables KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, and KEY_EMAIL. Ne laisser surtout pas un seul champ vide. Il faut modifier les dernires lignes sa convenance. Dans notre cas :
export export export export export KEY_COUNTRY=fr KEY_PROVINCE=drome KEY_CITY=valence KEY_ORG=boiteinformatique KEY_EMAIL=xxxxxxxxx@xxx.com
On initialise les variables (le point/espace/point n'est pas une erreur de frappe) :
. ./vars
Puis, nous crons le certificat et la cle de lAutorit de Certification Maitre (master Certificate Authority (CA) :
./build-ca
La dernire commande (build-ca) va construire le certificat de lAutorit de Certification et la cl en utilisant la commande interactive openssl et sortira :
''Generating a 1024 bit RSA private key'' ''............++++++'' ''...........++++++'' ''writing new private key to 'ca.key'''''-----'' ''You are about to be asked to enter information that will be incorporated into your certificate request.'' ''What you are about to enter is what is called a Distinguished Name or a DN.'' ''There are quite a few fields but you can leave some blank'' ''For some fields there will be a default value,'' ''If you enter '.', the field will be left blank.'' ''-----''
Tutoriel_Ubuntu_Openvpn
3 / 14
''Country Name (2 letter code) [fr]:'' ''State or Province Name (full name) [drome]:'' ''Locality Name (eg, city) [valence]:'' ''Organization Name (eg, company) [boiteinformatique]:'' ''Organizational Unit Name (eg, section) []:'' ''Common Name (eg, your name or your server's hostname) []:'' ''Email Address [xxxxxxxx@xxxx.com]:''
On remarque les champs peuvent tre omis puisque lon a prdfini des valeurs par dfaut (valeurs entre crochets). Si un champs est laiss vide il faut entrer un point '.'. Le seul paramtre devant tre imprativement complt est le Common Name. Le certificat et la cl de lAutorit de Certification sont prsent crs : ca.crt et ca.key dans un dossier keys.
Quand le Common Name est demand, il faut entrer server comme le dernier paramtre entr dans la commande prcdente. Puis il faut mettre un mot de passe et un nom dentreprise (facultatif). Suivent deux dernires questions qui requirent des rponses positives :
Certificate is to be certified until Oct 26 21:48:37 2017 GMT (3650 days) Sign the certificate ? [y/n] :y 1 out of 1 certificate requests certified, commit ? [y/n] y
Pour protger avec un mot de passe la cl, il faut utiliser ./build-key-pass au lieu de ./build-key. Il faut toujours se rappeler que pour chaque client, le champ Common Name doit tre renseign et unique. Les certificats et les cls des clients sont crs. Cette tape aurait pu se faire sur le client mme, ce qui aurait vit de faire circuler des cles sur des canaux moins sr. Pour cela, il fallait simplement le certificat ca.crt sur la machine cliente qui gnre son certificat et sa cle.
Tutoriel_Ubuntu_Openvpn
4 / 14
Ce qui donne :
Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time .................+........................................... ...................+.............+.................+......... ...................................... etc...
Les paramtres Diffie Hellman sont copis dans le rpertoire keys : dh1024.pem
C-
Maintenant, nous pouvons trouver les cls et les certificats fraichement gnrs dans le dossier keys. Suit une explication de ce que contiennent les fichiers du dossier keys. Nom de fichier Utile ca.crt ca.key dh{n}.pem server.crt server.key client1.crt client1.key client2.crt client2.key Serveur et tous les clients Serveur seulement Serveur seulement Serveur seulement Client1 seulement Client1 seulement Client2 seulement Client2 seulement
Cl signant la machine seulement Cl racine CA Certificat serveur Cl serveur Certificat Client1 Cl Client1 Certificat Client2 Cl Client2
Ltape finale dans ce processus de gnration de cls est de copier tous les fichiers sur la machine qui en a besoin, en prenant soin de les copier travers un tunnel sr. Au lieu de gnrer les certificats et les cls clients sur le serveur, le client aurait pu gnrer sa propre cl prive localement, et ensuite, soumettre un CSR (Certificat Signing Request ou Demande de Signature de Certificat) la machine qui signe les cls. A son tour, la machine signant les cls peut procder au CSR et retourner un certificat sign au client. Tout ceci peut se faire sans avoir besoin quun fichier secret .key quitte le disque dur de la machine qui l'a gnr.
configuration de votre serveur/vos clients. Si vous devez travailler avec des machines sous Windows l'extension ".conf" doit tre change en ".ovpn" sur le pc Windows.
Il faut donc diter le fichiers /etc/openvpn/server.conf Le fichier dexemple de configuration pour le serveur est un point de dpart pour une configuration serveur dOpenVPN. Il va crer un VPN utilisant une interface rseau virtuel TUN (pour le routage), couter les connections clients sur le port UDP 1194 (port officiel dOpenVPN), et distribuer des adresses virtuelles aux clients se connectant depuis le rseau 10.8.0.0/24. prsent, le fichier de configuration serveur est utilisable. Nanmoins, il est toujours possible de modifier le fichier plus en dtail : En cas dutilisation dEthernet bridg, il faut utiliser server-bridge et dev tap au lieu de server et dev tun Si le serveur doit couter sur un port TCP au lieu dUDP, il faut mettre proto tcp au lieu de proto udp (si OpenVPN doit couter sur les deux, il faut crer deux instances spares dOpenVPN) Si ladresse IP virtuelle utilise doit tre diffrente de 10.8.0.0/24, il faut modifier la directive server. Ne jamais oublier que la plage dadresse IP virtuelles doit tre inutilise sur les rseaux de chaque ct du VPN. Pour que les clients soient capables de satteindre travers le VPN, il faut dcommenter la directive client-to-client. Par dfaut, les clients ne peuvent atteindre que le serveur. Pour augmenter la scurit, il est possible de dcommenter les directives user nobody et group nobody. Diverses options de cryptage et de scurit peuvent aussi tre modifies. Pour faire fonctionner plusieurs instances dOpenVPN sur la mme machine, chacune utilisant un fichier de configuration diffrent, il faut : Utiliser un port diffrent pour chaque instances (les protocoles UDP et TCP utilisent diffrent espaces de port, donc un processus peut couter le port UDP-1194 et un autre le port TCP1194) Faire attention, lorsque les instances dOpenVPN utilisent le mme dossier, que chacune ncrive pas sur les mmes sorties. C'est--dire quil faut modifier les directives log, logappend, status et ifconfig-pool-persist.
cert/key. Seul le fichier ca est universel travers le VPN (le serveur et tous les clients). Editez ensuite la directive remote pour indiquer ladresse IP/nom dhte et le port du serveur OpenVPN (sil est derrire un routeur, il faut indiquer ladresse publique et le port sur lequel le routeur transfert vers le serveur OpenVPN) Pour terminer, il faut vrifier que la configuration client correspond bien la configuration serveur. Les directives principales vrifier sont :
dev (tun ou tap) proto (udp ou tcp) comp-lzo fragment
D-
lancement du systme
Pour quOpenVPN se lance au dmarrage du serveur ou du client, il faut placer le fichier de configuration au bon endroit. Pour le serveur, copiez le fichier server.conf dans le rpertoire /etc/openvpn Pour les clients, copiez le fichier client.conf dans /etc/openvpn Il faut galement dplacer les cls et certificats dans le dossier /etc/openvpn. Sont concerns : ca.crt : pour le serveur et le client pour le serveur : server.crt server.key dh1024.pem Pour le client : client.crt client.key
Tutoriel_Ubuntu_Openvpn
7 / 14
Un dmarrage normal dun client doit se terminer comme sur un dmarrage de serveur :
Tue Oct 30 05:22:17 2007 Initialization Sequence Completed
E.3 - Test
Maintenant, essayons de pinguer travers le VPN depuis le client. Dans une configuration de routage (cest--dire quil y a dev tun et non dev tap dans server.conf), on peut essayer :
ping 10.8.0.1
Dans une configuration bridge (c'est--dire quil y a dev tap et non dev tun dans server.conf), on peut essayer de pinguer une machine sur le sous-rseau du serveur. Si le ping a fonctionn, le VPN fonctionne !
Redmarrez Firestarter
sudo /etc/firestarter/firewall.sh start
F-
Le numro de port est libre pour peu qu'il ne soit pas utilis par un autre service ou application. Une fois la configuration modifie, recharger ou redmarrez OpenVPN. Un telnet localhost <le numro de port> vous confirmera que tout s'est bien pass. La commande help vous affichera la liste de commandes disponibles.
Pour lexemple, nous admettrons que le sous-rseau ct serveur est en 192.168.1.0/24 et le pool dadresse IP du VPN est 10.8.0.0/24 comme utilis prcdemment. Pour tre sr de la configuration, il faut vrifier le fichier /etc/openvpn/server.conf. La premire chose faire, cest indiquer au client que le rseau 192.168.1.0/24 peut-tre accessible travers le VPN. Ceci peut-tre fait facilement en utilisant la directive ct serveur suivante :
push "route 192.168.1.0 255.255.255.0"
Puis, il faut crer une route sur la passerelle rseau ct serveur pour router le sous-rseau VPN du client vers le serveur OpenVPN (seulement si le serveur OpenVPN nest pas aussi la passerelle). Pour ceci, il faut voir la documentation de votre passerelle et lui dire que tout le trafic venant de lextrieur sur le port attribu au VPN doit tre redirig sur le serveur OpenVPN (adresseIP:port). LIP forwarding et le TUN/TAP forwarding doivent tre activs sur le serveur OpenVPN. Pour le vrifier, il est possible de tester chaque interface ou le systme en gnral : Vrification de linterface TUN :
cat /proc/sys/net/ipv4/conf/tun0/forwarding
de passerelle. Puis, il faut modifier des configurations ct serveur. Si le fichier de configuration du serveur ne fait pas rfrence un dossier de configuration client, il faut en crer un :
mkdir /etc/openvpn/ccd
(il peut tre cr ailleurs mais il faudra penser modifier chaque fois son chemin) Puis, dans le fichier server.conf, il faut ajouter la ligne :
client-config-dir ccd
Dans cette directive, ccd fait rfrence au rpertoire qui vient dtre cr. Quand un nouveau client se connecte au serveur OpenVPN, le processus OpenVPN va vrifier ce dossier pour y trouver un fichier qui porte le mme nom que le common name du certificat du client. Si un fichier correspondant est trouv, il sera lu et utilis pour appliquer des directives supplmentaires au client. Ltape suivant est de crer un fichier nomm client2 dans le dossier /etc/openvpn/ccd dans lequel vous ajouterez (dans cet exemple) :
iroute 192.168.4.0 255.255.255.0
Ceci permet d'indiquer au serveur OpenVPN que le sous-rseau 192.168.4.0/24 peut tre rout vers le client2. Dans le fichier de configuration du serveur /etc/openvpn/server.conf (et non dans ccd/client2), il faut ajouter :
route 192.168.4.0 255.255.255.0
Pourquoi mettre des informations redondantes ? route contrle le routage dans le noyau vers le serveur OpenVPN (via linterface tun) alors que iroute contrle le routage depuis le serveur OpenVPN vers le client distant. Les deux sont ncessaires. Maitenant, la question est : Est-ce que lon veut permettre aux diffrents clients du VPN de dialoguer ensemble. Si cest le cas, il faut ajouter dans le fichier de configuration du serveur /etc/openvpn/server.conf :
client-to-client push "route 192.168.4.0 255.255.255.0"
Ceci permet au serveur OpenVPN d'indiquer aux autres clients que le rseau du client2 existe. La dernire tape, celle qui est souvent oublie, est dajouter une route sur la passerelle du rseau ct serveur qui redirigera le trafic allant vers 192.168.4.0/24 vers le serveur OpenVPN (inutile si la passerelle est le serveur OpenVPN). Pour ceci, il faut voir la documentation de votre passerelle et lui indiquer que tout le trafic allant vers 192.168.4.0/24 doit tre redirig sur le serveur OpenVPN (adresseIP:port). Si cette tape nest pas faite, et quil faille pinguer une machine sur le rseau ct serveur depuis le 192.168.4.8, le ping sortant atteindrait probablement la machine mais ensuite, la machine ne saurait pas comment router la rponse au ping parce quelle na aucune ide de comment elle peut atteindre 192.168.4.0/24. La rgle empirique utiliser est que le routage d'un rseau entier travers un VPN (c'est--dire lorsque le serveur OpenVPN nest pas la passerelle) ncessite que la passerelle route tous les sousrseaux VPN vers le serveur OpenVPN. De manire identique, si la machine client utilisant OpenVPN nest pas la passerelle pour le rseau ct client, il faut que la passerelle ct client route tous les sous-rseaux atteignables travers le Tutoriel_Ubuntu_Openvpn 11 / 14
H-
Voir aussi
suivre en lanant en premier lieu un shell super utilisateur avec la commande sudo -s ) Article sur Wikipdia
H.2 - Notes
1. change_de_cls_Diffie-Hellman Pour plus d'informations, n'hsitez pas contacter pezzos. Contributeurs : pezzos, krop (lagage, nettoyage, corrections), zedtux.
openvpn.txt Dernire modification: 2009/03/06 04:06 par 213.95.41.13 Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL
Tutoriel_Ubuntu_Openvpn
13 / 14
Tout d'abord tlcharger la version Windows dOpenVPN (la mme que le serveur si possible 2.0.9 ou 2.1_rc15) : tlchargement ici : http://openvpn.net/index.php/downloads.html
Ensuite Il faut copier dans C :/Program Files/OpenVPN/config/ les fichiers client que lon a normalement cr sur notre serveur : ca.crt, client1.crt et client1.key. On utilise ensuite le fichier de configuration dexemple client.ovpn situ dans C :/Program Files/OpenVPN/sample-config/ On le copie dans le rpertoire C :/Program Files/OpenVPN/config/ et on dite les directives comme ceci :
remote 195.43.56.xx 1194 ; adresse IP du serveur OPENVPN ca ca.crt cert client1.crt key client1.key
On dmarre OpenVPN comme ceci : Dmarrer, Programmes, OpenVPN, OpenVPN-GUI. Pour se connecter, on clique droit sur licone dOpenVPN ct de lheure, puis Se connecter. Linstallation a du vous crer une interface TAP-Win32 Voila
Tutoriel_Ubuntu_Openvpn
14 / 14