Alors qui dit seedbox dit Bittorrent et qui dit Bittorrent dit VPN car je ne veux pas qu'on sache quelles ISOs Linux je télécharge chez moi. L'idée c'est de passer à travers un VPN pour cette machine seulement et d'être bien sûr qu'en cas de coupure du VPN la connexion ne rebascule pas sur la ligne Orange. J'aime bien recevoir du courrier mais ça dépend lequel. Dans la suite on va faire du réseau et de la sécurité pour mettre en place ce qu'on appelle un killswitch: si ça coupe ça coupe tout !

Préparation

J'utilise ProtonVPN parce que depuis le temps que je suis chez eux pour le mail j'ai eu 0 problèmes et j'apprécie leur politique de confidentialité. Après je ne me fais pas d'illusion c'est un fournisseur de VPN: il voit ce que je fais et je ne crois pas à la politique zéro logs. Bref pas de lien d'affiliation juste un fait: ils sont bien mais il y'en a des tas d'autres. Je vais passer rapidement la partie configuration du VPN il y'a énormément de tutos sur le Web notamment celui-ci pour ProtonVPN spécifiquement.

La première chose pour s'y retrouver avec pfSense c'est de faire ça proprement donc on va nommer les choses comme il faut. On commence par affecter une interface et un nom à la connexion VPN. Dans Interface puis Affectations vous affectez l'interface correspondant à votre connexion VPN a une interface libre (OPT1, 2 ou 3).

Cliquez ensuite sur le nom de l'interface et donnez lui un nom clair (ici ce sera "VPN", bonjour l'originalité).

Pour mieux s'y retrouver on va aussi créer un alias qui regroupera tous les hôtes que l'on veut faire passer par le VPN. Il peut s'agir de la seedbox mais aussi pourquoi pas d'une AndroidTV pour accéder à de la VOD ou même un PC pour du surf "protégé".

Dans Pare-feu puis Alias on clique sur ajouter puis on créé un alias avec un nom clair et on y ajoute les hôtes concernés:

A partir de maintenant on va pouvoir créer les règles de pare feu. Le but étant de forcer le routage de tout trafic partant de la machine ou du groupe de machines à travers le VPN et si le VPN tombe on ne bascule surtout pas sur la connexion principale (le WAN).

NAT

Parmi les règles à créer il faut créer les règles de NAT qui vont permettre de dire "ok, toi tu peux passer par là" à notre interface. Dans Pare-feu --> NAT --> Sortant choisissez de passer en mode hybride comme ça vous garderez la création de règles automatiques et vous pouvez ajouter les vôtres. Chez moi cela donne ces deux règles:

Pare feu

On se rend ensuite dans les règles de pare feu et on créé les règles suivantes dans l'interface LAN

Explications:

  • La première règle permet d'empêcher que les requêtes DNS des machines du groupe se fassent en dehors du VPN et fassent fuiter votre IP réelle.
  • La deuxième est assez claire, on ne veut pas utiliser IPv6 sur le VPN
  • La troisième règle est la plus importante c'est elle qui va permettre à vos machines de passer par la passerelle que l'on a choisi et de tagger les paquets de cette connexion pour ensuite pouvoir mettre en place le killswitch. Deux réglages avancés sont requis pour que cela fonctionne:
La marque qui va permettre au routeur de reconnaître les paquets à destination du VPN seulement
La passerelle a utiliser pour le groupe de machines à protéger

DNS

Normalement pour l'instant si tout se passe bien on a pas encore de résolution de nom puisque on a bloqué l'accès au port 53. C'est tout simplement pour éviter de faire fuiter des informations sur le VPN.

Les machines à protéger devront donc utiliser des résolveurs DNS externes. Pour cela il faut leur en définir manuellement via le serveur DHCP en ajoutant un mappage statique avec des serveurs DNS spécifiques:

J'utilise pour ma part ceux de Quad9 et Cloudflare dans ce cas

Le Killswitch

C'est la partie importante c'est sur le killswitch (coupe circuit en français ?) que repose la plus grosse partie de notre sécurité. On veut que dés que la connexion au VPN tombe les membres du groupe ne puissent plus sortir sur le WAN. On a déjà commencé la configuration en marquant les paquets au niveau du pare-feu maintenant on va jeter tous ces paquets à la poubelle s'ile ne peuvent pas passer par le VPN.

Dans Pare-feu --> Règles --> Flottant(e) on crée une nouvelle règle comme ceci:

Ce qui vous donne dans le pare feu:

Ce qu'on dit au pare feu c'est que tout ce qui est marqué avec PROTONVPN_NO_WAN quelle que soit l'adressage IP utilisé ou le protocole sera immédiatement bloqué. Et pour être tranquille on journalise pour pouvoir éventuellement se dépanner plus tard.

Conclusion

On a donc maintenant un groupe de machines qui ne peut accèder à Internet qu'au travers du VPN et qui ne peut plus accèder à Internet en cas de coupure du VPN. Reste à tester et pour cela deux adresses peuvent aider: IpLeak va permettre de s'assurer que votre IP rélle fournie par votre opérateur ne fuite pas et Check My Torrent IP de Torguard montre l'IP publique utilisé par le client Bittorent qui aura chargé le fichier fourni. Enfin pour bien faire couper le VPN et voir si les machines n'ont plus d'accès à Internet est une bonne idée.

Si vous avez des remarques ou des suggestions concernant cet article (on est jamais à l'abri d'une boulette!) vous savez ou me trouver: sur Twitter ou Mastodon