Une box à monter soi-même pour faire transiter tout son trafic réseau via un VPN
Il y a quelque temps, j’avais rédigé un petit tuto pour vous expliquer comment transformer un vieux routeur WRT54-GL en passerelle VPN, histoire de faire transiter par le VPN de votre choix, tous les appareils de la maison.
Suite à ça, je me suis vite rendu compte des limitations de ce vieux routeur et, Pierre-Henry, un fidèle lecteur m’a recommandé un peu de matos sympa pour faire ça. Du coup, j’ai commandé le matos, fait table rase et installé ce nouveau matériel.
Pourquoi tout passer par un VPN ?
D’abord, avoir un VPN sous la main, que celui-ci soit en France où à l’étranger, ça permet de se sécuriser un minimum quand on est dans une situation de mobilité.Le VPN permet d’établir un tunnel chiffré d’un point A à un point B et je peux donc me connecter tranquillement à partir d’un hôtel, d’une conf ou d’un resto, sans me faire “espionner” (MITM) par les scripts kiddies alentour.
Après tout, passer en VPN quand on est chez soi, c’est une question plus idéologique que pratique quand on est en France. Si comme moi, vous êtes une tête de mule et que par principe, vous refusez la surveillance de masse, et qu’en plus vous êtes prêt à accepter une petite perte de débit, à dépenser un peu de pognon et à passer un peu de temps à configurer tout ça, c’est bon. Dans le cas contraire, tout passer par un VPN n’est pas intéressant pour vous.
Choix du VPN
Je n’ai qu’une confiance relative en tous les fournisseurs de VPN… Mis à part quelques-uns comme Freedome (recommandé par Snowden, bitches !), c’est difficile de faire un choix. Le plus sûr à mon goût est de choisir un pays qui vous convienne (Suisse, Islande ou que sais-je) et d’y louer un petit serveur pas cher (genre, un VPS). L’important c’est de choisir un pays qui a encore des lois faites pour servir les citoyens et qui respecte la vie privée. Bref, un pays qui n’aspire pas toutes vos données contrairement à la France ou les États-Unis.
Mon VPN n’ayant pas pour but de faire des trucs illégaux (téléchargement ou pire), je suis aussi assez tranquille niveau respect des lois, donc aucun risque de me faire couper la ligne.
Le matos
Alors pour le matos, ce que m’a recommandé Pierre Henry, c’est ceci. Il s’agit d’un PC à refroidissement passif équipé d’un proc AMD, de 4 Gb de ram, de 3 ports Ethernet gigabits, de 2 ports USB externes, consommant 6 à 12 W et rentrant dans un boitier tout simple de 17 x 16 x 3 cm.
L’idée pour moi, c’est d’avoir un petit truc silencieux, qui consomme peu, ne demande aucun entretien et ne prenne pas de place. Cette carte de PC s’achète seule. Il faut donc commander le boitier en plus. Et si vous voulez du stockage, il est aussi possible de prendre un SSD mSATA à coller dedans (ou rester sur une clé USB pour l’OS) et une carte Wifi mPCI. Moi je n’ai pas de WiFi à la maison, donc pas besoin de cette dernière.
De plus, pour ne rien gâcher à l’affaire, le BIOS de cet APU est un CoreBoot open source et le schéma électronique de la carte est librement consultable ici (pdf).
Cependant, vous pouvez faire exactement la même chose avec n’importe quel PC ou mini PC équipé de 2 cartes réseau.
L’installation
Côté serveur VPN, j’ai déjà tout expliqué ici.
Côté passerelle VPN, mon APU14 ne dispose pas de connectique pour y brancher un écran. J’ai donc dû m’y connecter avec un cable série comme au bon vieux temps…
Ensuite j’ai installé TinyCore Linux sur une clé USB bootable comme expliquée ici. Puis j’ai placé une image de PfSense amd64 nanobsd sur la clé USB et j’ai copié cette image sur le SSD que j’ai installé dans l’APU avec la commande suivante :
gzip -dc pfSense-2.2.3-RELEASE-4g-amd64-nanobsd.img.gz | pv | dd of=/dev/sda bs=10M
Noté que cette image est spécifique pour le type d’hardware que j’ai chez moi, mais si vous faites la même manip sur un PC plus classique (avec au moins 2 interfaces réseau), Pfsense est aussi dispo sous la forme d’image Linux (+LiveCD) classique.
Une fois installé, PfSense démarre et il n’y a plus qu’à configurer les interfaces une par une via le port série puis à se connecter sur l’interface web avec son navigateur.
En ce qui me concerne, je me suis pas mal tiré les cheveux sur un bug, qui je pense est provoqué par ma box ADSL car j’ai eu le souci avec 3 routeurs différents sur des OS différents (PfSense, dd-wrt, openwrt). Quand je reboote mon routeur, celui-ci ne se connecte pas au net. Je suis obligé de le démarrer sans le brancher sur la box ADSL et une fois qu’il est bien démarré, je peux le connecter à la box et là ça fonctionne.
C’est un peu relou, mais je n’ai pas encore trouvé de solution.
Maintenant au niveau de PfSense, il y a des milliers d’options dedans. Je n’ai pas encore tout exploré, mais sachez que ça permet de remplir des fonctions de Firewall, de routeur, de faire du NAT, de la haute dispo, du multi-wan (pour coupler plusieurs connexions internet ensemble), du load balancing, du vpn (client et serveur en IPsec, OpenVPN, PPTP), du DNS, du portail captif, du DHCP et tout ce qui est monitoring et reporting. Bref, y’a de quoi jouer.
Une documentation en ligne est disponible ici et malheureusement, niveau bouquins en français, je n’ai rien trouvé. Il y a juste ces 2 livres en anglais.
Maintenant niveau config pour le VPN, c’est pas très compliqué. Il faut d’abord récupérer le fichier de config autologin d’OpenVPN.
Ouvrez-le avec un éditeur de texte et dans PfSense, rendez-vous dans le menu System -> Cert Manager -> Onglet CA.
Et ajoutez un nouveau certificat (importing) et copiez collez la clé qui se trouve entre les balises
Sauvegardez puis rendez-vous dans l’onglet Certificates pour y ajouter la clé contenue dans les balises
Sauvegardez, puis rendez-vous dans le menu le menu VPN -> OpenVPN, onglet Client. Ajoutez alors un nouveau client en suivant cette config :
Une fois que c’est fait, rendez-vous dans le menu Status -> OpenVPN et vous devriez voir que la connexion est “up”.
Si ce n’est pas le cas, vérifiez la config ou les certificats. Pour debugger plus facilement, je vous invite à faire, côté serveur, un :
tail -f /var/log/openvpnas.log
Et regarder les logs de connexion pour déterminer le problème.
Maintenant que PfSense sait se connecter à votre serveur OpenVPN, il faut mettre en place quelques règles au niveau du firewall pour lui dire de bien tout rediriger vers l’interface OpenVPN. Tout d’abord au niveau du NAT, on va le passer en NAT manuel. Allez dans Firewall -> NAT -> Outbound et sélectionnez “Manual Outbound NAT rule generation”.
Ensuitez, allez dans Firewall -> Rules et ajoutez une règle dans WAN comme ceci :
Allez ensuite dans l’onglet LAN et ajoutez la règle suivante en prenant bien soin de spécifier la Gateway (passerelle) qui correspond à votre OpenVPN. Celle-ci indique tout simplement qu’il faut faire passer tout le trafic IPv4 (ou IPv6) via la passerelle qui correspond à votre VPN.
Et voilà. Rebootez et logiquement, votre trafic réseau devrait maintenant transiter via votre serveur OpenVPN. Pour vérifier que c’est le cas, allez sur korben.info/ip. Vous devriez voir apparaitre votre IP de VPN.
N’oubliez pas que vos DNS peuvent aussi vous trahir Pensez donc à bien les internaliser ou mettez en place votre propre serveur DNS sur la même machine où se trouve votre serveur VPN. J’ai fait un tuto à ce sujet ici.
Bon et bien voilà… En connectant ce petit boitier au cul de votre box ADSL ou Fibre puis en connectant le reste de vos appareils sur ce boitier, vous êtes tranquille. Ils passeront tous par l’autre bout du monde, via un tunnel chiffré. Tranquille :-)
Le sticker
Bon et bien voilà ! Il ne reste plus qu’à décorer votre boite avec le sticker qui va bien. J’avais demandé dans un édito où je pourrais trouver un truc rigolo à mettre dessus et un de mes lecteurs m’a envoyé ceci.
La classe non ?
Après quelques semaines d’utilisation, je dois dire que je suis très satisfait de ce petit montage. Ça tourne sans bruit (forcement) et même si parfois, je me heurte à des limitations d’IP (genre du replay réservé à la France que je bypass en me connectant par rebond sur un second VPN localisé en France) et quelques ralentissements dus aux encombrements de tuyaux, je n’ai pas eu de souci avec PfSense en lui-même.
C’est un peu de boulot mais que voulez-vous, quand on aime ça… ;-)
Amusez-vous bien !