Professional Documents
Culture Documents
eu
14/10/2006 Ajout dun exemple de conguration Site--site bas sur OpenVPN 11/10/2006 Ajout dun exemple Easy-RSA pour Windows prsent par Hernan Maslowski hernan_maslowski@hotmail.com 29/09/2006 Supression des lments tun0 qui ne sont plus ncessaires. 03/09/2009 Traduction du document par Grgory Bernard info@osnet.eu
A propos
Ce document est un tutoriel pas pas qui vous permettra de comprendre comment PFSense et OpenVPN peuvent fonctionner ensemble. Jutiliserais de nombreuses images et examples pour rendre ce tutoriel le plus simple possible. Jutilise pour ce tutoriel le dernier snapshot disponible et PFSense bootera du CDRom et sauvegardera sa conguration sur des disquettes. LAnglais nest pas ma langue maternelle, merci de me transmettre un message si vous trouvez des erreurs. Si vous trouvez certaines sections trop complexes, nhsitez pas me contacter.
Premier dmarrage
Insrez le CD-Rom que vous venez de graver et la disquette format au en FAT dans votre systme. Congurez votre BIOS pour booter depuis votre CD-Rom. Il est important que
PFSense et OpenVPN pour les novices ! ! ! ! ! ! ! p. 1
www.osnet.eu
votre disquette soit insre alors que PFSense dmarre depuis votre CD-Rom, autrement vous naurez pas la possibilit de sauvegarder votre conguration sur votre disquette. Aprs quelques messages du noyau FreeBSD, on vous demandera si vous souhaitez crer des VLANs, nous nen avons pas lutilit, veuillez entrer n. Ensuite, PFSense essaiera dutiliser les interfaces disponibles sur votre matriel, vous pouvez utiliser loption a pour une auto-dtection de ces interfaces. Saisissez le nom de linterface qui apparat en haut de lcran pour quelle soit votre interface LAN. Ensuite saisissez le nom de votre seconde interface pour quil devienne votre connexion WAN, pressez simplement enter pour continuer. Si vous avez besoin de plus dinterface (DMZ par exemple) vous pouvez les assigner plus tard grace linterface graphique.
Pressez 2 pour saisir ladresse IP et le masque de sous-rseau pour votre connexion LAN. Dans mon cas 192.168.5.1 et 24 comma masque, slectionez non pour le DHCP.
Interface Web
Si tout sest pass comme prvu, vous devriez maintenant tre capable de vous connecter linterface Web de PFSense. Connectez-vous un ordinateur connect sur votre LAN et ouvrez un navigateur Web vers ladresse http://ip_que_vous_avez_saisi_pour_votre_LAN/ vous devriez maintenant voir un cran de bienvenue Utilisateur : admin Password : pfsense
p. 2
www.osnet.eu
Si ce nest pas le cas vous avez trs probablement assign une mauvaise interface rseau votre interface LAN, recommencez ltape Premier dmarrage et veillez bien noter les paramtres de vos interfaces LAN et WAN. Si vous ne parvenez toujours pas vous connecter, il y a peut-tre un problme avec votre cble rseau.
Internet
LAN 192.168.5.0/24
First Setup
Nous avons commenc saisir des informations qui dpendent de la topologie de votre rseau. Dans mon cas, PFSense est un rewall connect derrire un routeur 3Com qui fait du PPPoE vers mon ISP. Mon interface WAN possde donc une IP interne (192.168.75.50) avec le 3Com comme passerelle (192.168.75.1). Cest un cas assez typique pour les petits rseaux dentreprise ; vous pouvez bien videmment avoir dautres sous-rseaux.
Internet
WAN PFSense IP Internet
LAN 192.168.5.0/24
Le second cas de gure est quil ny a pas de routeur pour assurer la connexion PPPoE et que PFSense prends cela en charge directement.
PFSense et OpenVPN pour les novices ! ! ! ! ! ! ! p. 3
www.osnet.eu
Quel que soit la topologie de votre rseau, vous devrez modier les champs de PFSense de faon ce que cela corresponde vos besoins, je vais essayer dtre le plus prcis possible an de vous guider dans votre propre conguration. Retour vers linterface Web, cliquez sur System --> General Setup et vous devriez avoir un cran similaire celui prsent ci-dessous :
Sur limage ci-dessus, vous pouvez voir ma conguration pour les paramtres gnraux. Comme vous pouvez le voir jai saisi ladresse IP de mon routeur 3Com comme serveur DNS car ce dernier transfre les requtes vers mon ISP. Il est possible de saisir ses propres adresses de serveurs DNS si vous possdez un rseau avec ses propres DNS. Si votre rseau ressemble plus au second schma, PFSense rcuprera les serveurs DNS directement auprs de votre ISP grce PPPoE, veillez simplement cochez la case Allow DNS Servers list to be overridden ceci est important. Comme nom dhte saisissez un nom qui permette didentier votre rewall sur votre rseau, si vous possder un rseau rout sur Internet vous devez saisir un nom de domaine qui soit rsolu. Si vous ne possdez pas de nom de domaine, vous pouvez utiliser local. Ajustez le paramtre NTP et rglez le fuseau horaire dans laquelle se trouve le rewall.
Ensuite nous allons congurer linterface WAN, cliquez sur Interfaces --> WAN
p. 4
www.osnet.eu
De nouveau si vos paramtres sont similaires aux miens, clicquez sur static comme Type et saisissez ladresse IP de votre routeur comme passerelle (Gateway). Votre adresse IP WAN doit tre sur le mme sous-rseau que la passerelle que vous venez de saisir, dans mon cas 192.168.75.50.
Dcochez la case Block private networds si vous possdez des rglages similaires aux miens (linterface WAN fait parti dune adresse rseau prive).
Pour le second cas de gure (PFSense prends en charge PPPoE) il faut mettre le champs type sur PPPoE la place de static, puis saisir les donnes de votre compte.
p. 5
www.osnet.eu
Vous pouvez bloquer les rseaux privs pour cette conguration, puisque votre interface WAN sera linterface ofcielle grace PPPoE. Aprs cette conguration initiale, vous pouvez passer ltape suivate (pressez le boutton save).
Cration des certicats sous Unix/Linux (pas ncessaire pour une conguration de site site).
Ceci est dj dcrit de manire assez prcise dans les documentations existantes, mais je vais dtailler cela de nouveau. Basculez sur votre environnement Linux/Unix/FreeBSD et tlchargez le code source dOpenVPN. Nous devons crer des certicats pour notre serveur et pour quelques clients, je vais utiliser des valeurs similaires celle qui existent dans la documentation de manire ce que nous puissions avoir quelquechose de cohrent (ces paramtres fonctionnent pour moi). Vous pouvez aussi crer votre certicat sous Windows, ne layant jamais fait je ne peux pas vous indiquer si cela fonctionne ou pas.
Tlchargez le code source depuis le site http://openvpn.net/download.html vous pouvez directement le tlcharger en utilisant WGet ou fetch si vous tes sur un systme qui na pas dinterface graphique. Pour ceux dentre vous qui sont sous FreeBSD, le port dOpenVPN se trouve ici /usr/ports/ security/openvpn
Dtarrez larchive avec la commande tar -xvzf openvpn-*.tar.gz et positionnez vous dans le rpertoire easy-rsa.
PFSense et OpenVPN pour les novices ! ! ! ! ! ! ! p. 6
www.osnet.eu
Ouvrez les chiers vars avec votre diteur prfr (emacs, vi, ) puis ditez les valeurs situes la n du chier an de les faire correspondre vos propres besoins. Il seront utiliss comme valeur par dfaut dans dautres scripts, de manire ce que vous nayez pas saisir encore et encore (cette tape nest pas ncessaire). export KEY_COUNTRY=DE export KEY_PROVINCE=BA export KEY_CITY=COLOGNE export KEY_ORG="Organisation name" export KEY_EMAIL="me@myhost.mydomain"
Vous devrez ensuite excuter des scripts, si lon vous demandes votre Common Name saisissez le nom de lhte que vous avez indiqu dans les Congurations Gnrales (General Setup) initialement. Voici les commandes que jai excutes : [/tmp/openvpn-2.0.8/easy-rsa]# source ./vars [/tmp/openvpn-2.0.8/easy-rsa]# ./clean-all [/tmp/openvpn-2.0.8/easy-rsa]# ./build-ca . Country Name (2 letter code) [DE]: (press enter) State or Province Name (full name) [BA]: (press enter)
Locality Name (eg, city) [COLOGNE]): (press enter) Organization Name (eg, company) [Organisation name]: (press enter) Organizational Unit Name (eg, section) [ ]: (press enter) Common Name (eg, your name or your server's hostname) [ ]:gate.local Email Address [me@myhost.mydomain]: (press enter) . Dans le prochain script, vous devez saisir Server comme Nom Commun (Common Name). Saisissez y pour signer le certicat. [/tmp/openvpn-2.0.8/easy-rsa]# ./build-key-server server . Comment construire les paramtres DH : [/tmp/openvpn-2.0.8/easy-rsa]# ./build-dh . Et nalement quelques certicats pour vos clients : [/tmp/openvpn-2.0.8/easy-rsa]# ./build-key client1
p. 7
www.osnet.eu
Vous pouvez crer autant de certicats clients que vous le souhaitez. Si par la suite vous souhaitez avoir plus de clients, crez-les simplement avec la commande ./build-key nom_du_client Utilisez toujours un nom diffrent en paramtre. Mais souvenez-vous les autres cls cres prcdemment doivnet tre prsentes dans le mme rpertoire ou si cela ne fonctionne pas (sauvegardez le rpertoire fans lequel vous avez cr les chiers, de manire ce que vous puissiez crer de nouveaux certicats clients sans avoir r-installer tout les certicats de nouveau).
Cration manuelle des certications sur un systme Windows (par Hernan Maslowski). Vous pouvez aussi crer vos certicats avec un programme pour windows 32 appel My Certicate Wizard http://www.openvpn.se/mycert/ Gnrez les certicats matre et la cl de lAutorit de Certication (CA) Dans cette section nous allons gnrer un certicat CA de type certicat/cl/, un certicat serveur/cl et un certicat/cl pour trois clients distincts.
Ouvrez une fentre de type terminal (CMD) et positionnez-vous dans le rpertoire \Program Files\OpenVPN\easy-rsa Excutez la commande suivante pour copier les chiers de conguration leur place (cela effacera toutes version pr-existante de vars.bat et openssl.cnf) :
init-cong
Editez le chier var (appel vars.bat sur Windows) et modiez les paramtres KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, et KEY_EMAIL. Ne laissez aucun de ces paramtre vide. Ensuite, initialisez la PKI. Next, initialize the PKI. vars clean-all build-ca
La commande nale (build-ca) gnrera le certicat de lautorit de certication (CA) et la cl associe en invoquant la commande interactive : ai:c:\program files\openvpn\easy-rsa\build-ca Generating a 1024 bit RSA private key ............++++++ ...........++++++
PFSense et OpenVPN pour les novices ! ! ! ! ! ! ! p. 8
www.osnet.eu
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. ----Country Name (2 letter code) [KG]: State or Province Name (full name) [NA]: Locality Name (eg, city) [BISHKEK]: Organization Name (eg, company) [OpenVPN-TEST]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:OpenVPN-CA Email Address [me@myhost.mydomain]: Veuillez noter que la plupart des informations saisies sont les valeurs par dfaut inscrite dans les variables du chier vars.bat. Le seul paramtre qui doit tre spciquement saisi est le Common Name. Dans lexemple ci-dessus, jai utilis OpenVPN-CA.
www.osnet.eu
build-dh Sortie standard : ai:c:\program files\openvpn\easy-rsa\build-dh DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time ................+........................................... ...................+.............+.................+......... ......................................
Filename
ca.crt ca.key dh{n}.pem server.crt server.key client1.crt client1.key client2.crt client2.key client3.crt client3.key
Needed By
server + all clients key signing machine only server only server only server only client1 only client1 only client2 only client2 only client3 only client3 only
Purpose
Root CA certicate Root CA key Dife Hellman parameters Server Certicate Server Key Client1 Certicate Client1 Key Client2 Certicate Client2 Key Client3 Certicate Client3 Key
Secret
NO YES NO NO YES NO YES NO YES NO YES
Nous avons maintenant toutes les cls ncessaires, nous pouvons donc continuer et passer ltape suivante.
Ok, nous sommes enn prt congurer OpenVPN, cliquez VPN --> OVPN dans le menu et la petite case + pour ajouter un tunnel.
p. 10
www.osnet.eu
Comme vous pouvez le voir jai utilis TCP comme protocole puisquUDP est connu comme tant mal ltr par certain routeurs. Utilis TCP est un peu plus lent, mais plus sr pour le moment. Cliquez sur Dynamic IP, nous souhaitons autoris les clients distants avec une adresse distante inconnue se connecter notre serveur (le typique guerrier de la route). Address pool doit tre un sous-rseau indpendant que vous nutilisez nulle part ailleurs. Cest important ! Ne saisissez pas le mme sous-rseau que celui de votre LAN ou de votre WAN. Dans mon cas jai utilis 192.168.200.0/24. Changez la mthode dauthentication Authentication method PKI. Maintenant nous devons copier et coller nos cls, utilisez votre diteur de texte favoris pour ouvrir les chiers en mode texte (vous pouvez utiliser la commande cat nom_du_chier sous Linux/Unix/BSD ou Notpad sous Windows). Incluez toujours les sections -----BEGIN CERTIFICATE----- et -----END CERTIFICATE---- ainsi que tout ce quil y a entre. Regardez bien ou chaque chier est suppos aller :
p. 11
www.osnet.eu
Aprs que les certicats sont en place, dsactivez la compression LZO LZOcompression (pour tester, si tout fonctionne vous pouvez lactiver et changer la valeur dans le chier client comme dcrit aprs). Saisissez une description intelligente dans le champ Description, comme OVPN des guerriers de la route. Comme dhabitude cliquez sur Save. Si vous voulez autoris vos guerriers de la route vous connecter dautre sous-rseaux de la mme faon quils se connectent linterface LAN (par exemple la DMZ), vous devez congurer une route dans le champ Custom Options. Si votre DMZ est 192.168.100.0/24 par exemple, vous devez inscrire la route suivante : push route 192.168.100.0 255.255.255.0 Ceci an que vos guerriers de la route puissent se connecter votre DMZ.
p. 12
www.osnet.eu
Loption de Log packets that are handled by this rule nest pas ncessaire, mais cest pas mal de la conserver pour la priode de test. Les rgles doivent maintenant ressembler cela :
p. 13
www.osnet.eu
Ensuite cliquez sur longlet WAN puis sur la petite icne + pour ajouter une nouvelle rgle :
Comme protocole saisissez TCP/UDP comme nous sommes entrain de tester, ensuite ditez la rgle pour ne correspondre quau seul protocole que vous aurez dni. Destination port range est le port sur lequel notre serveur OpenVPN coute, par dfaut cest le port 1194. La rgle devrait ressembl cela aprs avoir t sauvegarde :
p. 14
www.osnet.eu
Ok, premier objectif accompli ;-) Interfaces, OpenVPN et rgles de rewall sont congures, nous devons seulement sauvegarder la conguration sur une disquette et rebooter pour voir si tout redmarre comme prvu.
Enn vous pouvez utiliser votre client SSH favoris pour vous connecter PFSense (utilisez ladresse IP de votre interface LAN), sur Windows vous pouvez utiliser Putty. Si lon vous demande votre nom dutilisateur et votre mot de passe, saisissez admin et pfsense (pensez changer cela avant la mise en service du Firewall).
p. 15
www.osnet.eu
Vous verrez un cran similaire celui-ci (les nouvelles versions proposent un peu plus doptions) :
Saisissez 98 et pressez sur enter, rpondez la question suivante par fd0 et pressez enter de nouveau, la conguration sera sauvegarde sur une disquette. Si 98 nest pas afch dans le menu, vous avez peut-tre oubli dinsr la disquette avant de booter depuis le CD-Rom. Aprs que la sauvegarde soit nie, pressez 5 et PFSense se rebootera. Laissez PFSense rebooter, si tout fonctionne comme prvu, vous devriez tre capable de vous connecter l interface web comme vous le faisiez avant (PFSense lira automatiquement la conguration depuis la disquette lorsquil boot). Note : les versions plus rcentes de PFSense vous autorisent sauvegarder votre chier de conguration sous forme de chier XML. Je vous encourage vivement utiliser ce type de mthode et tester une reconguration de scratch partir dune sauvegarde XML. Le temps est maintenant venu de sintresser la conguration des clients, puisque la plupart des personnes qui utilisent Linux / Unix savent ce quelles font, je ne mintresserait qu la conguration Windows (les indications sont les mmes, il vous suft de les copier / coller).
p. 16
www.osnet.eu
Maintenant crez un nouveau chier texte dans c:\program files\openvpn\config folder (o l ou vous lavez install) nomm pfsense.ovpn (vous pouvez modier pfsense en quelquechose dautre, mais assurez-vous de bien conserver lextension .ovpn). Copier-coller la conguration suivante : float port 1194 dev tun dev-node ovpn proto tcp-client remote yourpfsensebox 1194 ping 10 persist-tun persist-key tls-client ca ca.crt cert client1.crt key client1.key ns-cert-type server #comp-lzo <- to enable LZO remove the # pull verb 4 dev-node ovpn doit correspondre au nom de linterface que vous avez renomme, yourpfsensebox ladresse IP de votre rewall PFSense (ou du routeur qui fait du NAT comme dans mon cas). Souvenez-vous des certicats clients ? Nous devons copier certain dentre eux dans le mme rpertoire, pour le premier client, copier ca.crt, client1.crt et client1.key. Vous aurez toujours besoin de ca.crt et du bon certicat client.
p. 17
www.osnet.eu
Maintenant prenez une bonne respiration et cliquez sur le chier pfsense.ovpn et slectionnez Start OpenVPN on this conguration le, le client tentera de se connecter votre Firewall PFSense (vous devez tester cela depuis un rseau externe). Si la liaison tunnel a pu tre tablie correctement (Initialization sequence completed devrait tre le dernier log qui safchera sur votre shell avec des RRWWRrwrw qui suivent) et vous ne pouvez pas ping les htes internes, gardez en mmoire que vous devez indiquer PFSense comme gateway / Routeur par dfaut sur tout les serveurs LAN auxquels vous souhaitez pouvoir vous connecter. Voil, le Tunnel devrait tre maintenant prt lemploi.
p. 18
www.osnet.eu
Imaginez la situation suivante : Nous voulons faire en sorte que les deux rseaux soit comme transparent, de faon a ce que tous les htes du Bureau 1 puissent accder aux htes du Bureau 2 et vice-versa.
Congurez PFSense comme indiqu dans l exemple prcdent (vous pouvez omettre la partie concernant les guerriers de la route si vous ne prvoyez pas d avoir des clients distants). Si les deux sites ont accs lInternet, la conguration suivante devrait leur permettre de fonctionner. Si vous avez dj congur PFSense pour les guerriers de la route vous devez congurer un tunnel supplmentaire, ne modiez pas la conguration actuelle !
Internet
Bureau 1 :
Nous allons maintenant congurer Bureau 1 comme serveur. Cliquez sur VPN --> OpenVPN et ajoutez un nouveau tunnel en cliquant sur licne + :
Bureau LAN 2 192.168.1.0/24
p. 19
www.osnet.eu
Modiez le protocole en TCP, si vous avez des tunnels complmentaires souvenez-vous dutiliser un autre port que celui prcdemment congur, jutilise 1193 puisque 1194 est dj utilis pour ma conguration tunnel pour les guerrier de la route. Address pool doit tre un rseau que vous nutilisez nulle part ailleurs, jutilise 192.168.10.0/24 puisque ni Bureau1, ni Bureau2 nutilise ce sous-rseau. Pour Remote network saisissez le rseau LAN du Bureau2 (souvenez-vous que nous congurons cela sur sur le Firewall de Bureau1) il faut donc indiquer ici 192.168.1.0/24. Maintenant nous allons crer une cl partage Shared key. Connectez-vous votre Firewall PFSense sur Bureau1 par SSH et saisissez 8 dans le shell qui se prsente vous, puis saisissez la commande suivante : # openvpn --genkey --secret shared.key
Cette commande va crer les cls partags pour ce serveur OpenVPN. Maintenant concatnons ce chier puis copions / collons le dans notre linterface web de PFSense. # cat shared.key
p. 20
www.osnet.eu
Pressez sur Save. Rebootez le Firewall pour voir si tout remonte normalement. Maintenant copiez la cl partag que vous avez utilis sur une cl USB ou par un autre moyen scuris vers le Bureau2 (vitez les e-mail). Voil, la premire partie a t mene bien, nous avons congur le tunnel dcoute, souvenez-vous de crer une rgle de Firewall similaire celle cr prcdement an dautoriser le trac sur le port 1193 sur votre interface WAN (vriez dans la section prcdente comment cela est ralis).
Bureau2 :
Sur le Bureau2 nous allons congurer le ct client tu tunnel, cliquez sur VPN --> OpenVPN --> Client comme dcrit ci-dessous :
Ayez disposition la cl partag que nous avons cr sur Bureau1, nous allons en avoir besoin. Indiquez le protocole TCP, Server Address doit indiquer ladresse IP ofciel du Bureau1 (si ce nest pas ladresse IP WAN de PFSense, votre routeur devra offrir des fonctions de port-forwarding), le port serveur Server Port est 1193. Interface IP doit tre remplie avec votre rseau local. Le champ Remote network est le sous-rseau de Bureau1. Maintenant collez la cl partage de Bureau1 dans le champs appropri. Cliquez Save et rebootez votre routeur pour voir si tout fonctionne comme prvu.
p. 21
www.osnet.eu
Le tunnel entre les deux sites devrait maintenant tre en tat de marche. Essayez de pinguer les htes de chacun des rseaux pour vrier le bon fonctionnement du tunnel.
Et maintenant ?
La seule chose quil vous reste faire est de consolider vos rgles de rewall et dactiver la compression LZO si vous le souhaitez. Vous pouvez basculer sur UDP si la vitesse est un facteur cl, changez simplement la valeur du tunnel, les rgles du Firewall pour le WAN et le chier de la conguration client. Si vous devez autoriser accs votre DMZ ou dautres interfaces vous devez propager les routes dans la conguration de votre tunnel.
p. 22
www.osnet.eu
FAQ
Dans cette section je vais ajouter des solutions pour solutionner les problmes communs qui peuvent exister aprs avoir suivi ce tutoriel.
1. Je ne parviens pas gnr les commandes qui permettent de gnr les cls OpenVPN Vous devez probablement utiliser un shell non compatible, essayez dinstaller bash. Vous pouvez aussi gnr les cls avec un programme Windows appel My Certicate Wizard : http://mycert.sandbox.cz
2. Comment puis-je accder au partage Windows Windows Share sans faire du bridging ? Pour accder au partage Windows, vous devez installer un serveur WINS sur votre rseau et congur tous les serveurs avec des points de partage an quils lutilisent (utilisez TCP comme protocole). Dans la conguration de votre tunnel, dans le champ Custom Options vous devez saisir ladresse de votre serveur DNS interne et celui de votre serveur WINS. Une chane valable pourrait ressembler cela (vous pouvez entrer plus doption push; sparez-les simplement par un ;) : push "dhcp-option 192.168.0.131" DNS 192.168.0.130";push "dhcp-option WINS
3. Avertissement pour les rewall Windows ! Les rewall Windows ont des problmes avec lOpenVPN, veuillez dsactiver le Firewall sur votre interface tun/tap si vous avez des problmes pour vous connecter. En rgle gnrale il est recommand de dsactiver tout les Firewall locaux pendant la phase de test.
Traduction Franaise ralise par Grgory Bernard, socit ToDoo. http://www.osnet.eu info@osnet.eu
p. 23