Comment configurer le serveur VPN WireGuard dans pfSense

WireGuard VPN Server dans pfSense

WireGuard VPN est un nouveau protocole robuste et très rapide pour créer des réseaux privés virtuels, dans cet article nous avons vu comment il est capable de doubler et même de tripler la vitesse d'OpenVPN ou d'IPsec. Ce nouveau protocole VPN est idéal pour les configurations d'accès à distance avec des clients mobiles, qu'il s'agisse de smartphones, de tablettes ou d'ordinateurs portables, car il consomme très peu de ressources et la connexion est très rapide. Le système d'exploitation pfSense dans la version 2.5.0 a officiellement incorporé ce nouveau VPN, avec IPsec, L2TP et également OpenVPN. Aujourd'hui, nous allons vous montrer comment configurer le VPN WireGuard à partir de zéro dans pfSense 2.5.0 pour se connecter à distance.

Caractéristiques VPN WireGuard

VPN WireGuard est un logiciel très léger qui nous permettra de configurer rapidement et facilement un tunnel VPN, par défaut, il utilise la cryptographie la plus moderne, sans avoir besoin de choisir différents algorithmes de cryptage asymétriques, asymétriques ou de hachage, par défaut nous avons un sécurisé suite par défaut, contrairement aux autres protocoles VPN. L'objectif de WireGuard est de devenir le meilleur VPN pour les particuliers et les entreprises, et il réussit car il a déjà été intégré dans le Linux/Unix Kernel pour nous fournir les meilleures performances possibles.

Concernant la cryptographie utilisée, nous avons ChaCha20 pour un cryptage symétrique, authentifié avec Poly1305 , nous avons donc AEAD. Il utilise également Curve25519 pour l'ECDH, BLAKE2 pour le hachage, SipHash24 pour les clés de table de hachage, et HKDF pour la dérivation de clé. Comme vous l'avez vu, nous avons les algorithmes cryptographiques les plus modernes utilisés par défaut, et nous ne pouvons pas les changer pour d'autres pour le moment, ils doivent être oui ou oui.

Avec ce nouveau VPN, nous n'aurons pas besoin de gérer les connexions ou de faire des configurations difficiles, il ne fonctionne qu'en mode tunnel car il s'agit d'un VPN L3, et utilise le protocole UDP comme couche de transport et ne permet pas de sélectionner TCP, ce que nous pouvons faire c'est modifier le port d'écoute pour qui on veut. Bien sûr, le serveur WireGuard peut être derrière le NAT sans problème, seule une redirection de port devrait être effectuée. D'autres caractéristiques intéressantes sont qu'il permet l'itinérance entre les réseaux rapidement et facilement, d'être toujours connecté à partir de n'importe quel WiFi ou réseau 4G / LTE sans interrompre la connexion. De plus, nous pouvons également activer le Kill-Switch pour empêcher les fuites de données en cas de panne du VPN.

Enfin, ce nouveau VPN est compatible avec plusieurs systèmes d'exploitation comme Windows, Linux, MacOS, FreeBSD, Android, et aussi iOS . Maintenant, l'équipe de développement de pfSense 2.5.0 a incorporé WireGuard dans son système par défaut, même si auparavant nous pouvions également l'installer, mais nous n'avions pas de support officiel.

Configuration du serveur VPN WireGuard

Avant la sortie de pfSense 2.5.0, si nous voulions avoir WireGuard sur cette version complète pare-feu, nous avons dû l'installer manuellement sur le système en téléchargeant des packages compatibles FreeBSD. Grâce à l'équipe de développement de pfSense, à partir de la version 2.5.0, il est déjà intégré par défaut dans l'interface utilisateur graphique.

La première chose à faire est d’aller au " VPN/WireGuard »Pour entrer dans la configuration de ce nouveau protocole VPN. Dès que nous entrons dans le menu, nous cliquons sur «Ajouter un tunnel».

Dans la configuration du tunnel, il faut activer le tunnel, lui donner une description et mettre ce qui suit:

  • Adresse: adresse IPv4 ou IPv6 du serveur VPN pour l'interface du tunnel.
  • Port: par défaut, il s'agit du 51820 UDP, mais nous pouvons passer à n'importe quel port UDP.

pfSense intègre un générateur de clé publique / privée pour le serveur VPN avec WireGuard, notre recommandation est que vous génériez des clés pour le client VPN, et que nous cliquions à nouveau sur «Générer» pour que les secondes générées soient celles du VPN serveur. Par exemple, les clés suivantes sont celles que nous utiliserons plus tard dans le client VPN. Vous pouvez vous aider avec un bloc-notes ou Notepad ++ pour enregistrer la configuration.

Pour faciliter la configuration de WireGuard avec des clés publiques et privées, vous pouvez également utiliser le outil wireguardconfig cela nous permettra de générer automatiquement à la fois le serveur et les clients, pour l'adapter ultérieurement à pfSense.

Et les seconds générés sont ceux du serveur VPN lui-même avec WireGuard.

Une fois que nous avons les clés, il faut cliquer sur «Enregistrer» et nous aurons créé le serveur VPN avec la configuration précédente:

Une fois que nous l'avons, nous devons maintenant enregistrer les «pairs», c'est-à-dire les clients VPN. Nous retournons à la configuration du serveur WireGuard, et cliquons sur «Add Peer» qui est en vert. Ici, nous devrons remplir certains paramètres, mais il n'est pas nécessaire de tous les remplir.

Nous allons maintenant expliquer à quoi servent chacune des options:

  • Description: nous mettons une description à ce client, par exemple notre nom.
  • Endpoint: nous mettons l'adresse IP publique du client VPN.
  • Port de point final: nous mettons le port du client VPN.

Si vous allez configurer un client VPN, où l'adresse IP publique et le port du client changent, alors nous devons laisser les options «Endpoint» et «Endpoint Port» vides . Ces options doivent être remplies si nous allons configurer un VPN de site à site, mais en accès distant (Roadwarrior), il n'est pas nécessaire de les remplir.

  • Keep alive: une valeur en secondes, de temps en temps il vérifie que le tunnel est toujours actif, par défaut il est désactivé.

Viennent maintenant les paramètres les plus importants:

  • Clé publique: il faut mettre la clé publique du client VPN, auparavant vous avez vu comment elle est générée pour le client, car ici nous mettrons la clé publique.
  • Autorisé les IP: si nous voulons qu'il y ait une redirection Internet et un accès à tous les réseaux, nous mettons 0.0.0.0/0. La chose la plus normale est que les clients VPN d'accès à distance accèdent à Internet via le VPN lui-même, mais ici, nous pouvons configurer un accès spécifique à différents réseaux.
  • Adresse Peer WireGuard: l'adresse IP du pair enregistré.
  • Clé pré-partagée: facultatif, vous pouvez ajouter une clé pré-partagée pour améliorer encore la sécurité.

Dans notre cas, nous n'avons pas mis de clé pré-partagée, mais si vous la mettez, à la fois dans pfSense et dans le client VPN, elle doit être exactement la même, et nous devons générer cette clé avec le bouton bleu qui vient dans le pfSense. On ne peut pas mettre la clé pré-partagée «12345678» par exemple, il faut utiliser le générateur pfSense.

Une fois que nous avons correctement configuré le serveur VPN WireGuard dans pfSense 2.5.0, nous allons configurer la partie pare-feu, car par défaut, il est toujours en mode tout bloquer.

Configuration du pare-feu sur WAN et WireGuard

Avant de connecter le premier client VPN, il faut aller dans «Pare-feu / Règles» et ajouter une nouvelle règle sur l'interface WAN Internet. Nous ajoutons une nouvelle règle avec les informations suivantes:

  • Action: passer
  • Interface : WAN
  • Famille d'adresses: IPv4, IPv6 ou les deux
  • Protocole: UDP
  • Source: any (si vous envisagez de configurer un site à site avec WireGuard, vous pouvez placer l'adresse IP publique source ici pour améliorer la sécurité).
  • Destination: Adresse WAN sur le port 51820

Une fois configuré, nous cliquons sur «Enregistrer» pour enregistrer cette règle, et appliquer les modifications, comme toujours lorsque nous ajoutons une nouvelle règle au pare-feu.

Une fois que cela est fait, nous devons maintenant passer à la Interface «WireGuard» qui a été créé automatiquement dans le « Pare-feu / règles «Section, ici nous devrons autoriser toutes les communications une fois qu'il aura été connecté, ou seulement ce que nous voulons, tout comme OpenVPN ou IPsec.

Dans la configuration suivante, vous pouvez voir que nous avons une règle avec la configuration suivante:

  • Action: passer
  • Interface : WireGuard
  • Famille d'adresses: IPv4, IPv6 ou les deux
  • Protocole: tout
  • Source: tout
  • Destination: toute

Nous cliquons sur «Enregistrer» et appliquons les modifications, comme d'habitude. À ce stade, nous sommes prêts à configurer les clients VPN avec WireGuard.

Configurer les clients VPN WireGuard et se connecter à pfSense

La configuration des clients VPN avec WireGuard est la même sur toutes les plateformes, nous aurons besoin exactement des mêmes informations. Dans notre cas, nous avons utilisé un smartphone Android, vous pouvez télécharger l'application WireGuard officielle pour Android et iOS ci-dessous:

Mais nous l'avons également pour d'autres systèmes d'exploitation tels que Windows, directement depuis le site officiel de ce protocole VPN. Une fois que nous l'avons installé, nous pourrons configurer le client facilement.

Comme nous l'avons déjà dit, notre recommandation est que, lors de la génération des clés dans pfSense, vous copiez ces clés dans un bloc-notes, à la fois la clé publique et la clé privée. De plus, vous devez également copier la clé publique du serveur. Une fois que cela est fait, nous ouvrons WireGuard et procédons à l'ajout d'un nouveau tunnel VPN, nous avons trois options:

  • Importez toute la configuration à partir d'un fichier, si vous allez configurer plusieurs clients tels que Windows, Linux etc., il est normal d'avoir un modèle avec les différentes configurations.
  • Scanner à partir du code QR: si nous utilisons l'outil WireGuardConfig, nous pouvons le faire facilement.
  • Créer à partir de zéro: c'est l'option que nous avons choisie.

Lors de l'ajout d'un nouveau VPN, il faut renseigner tout ou presque toutes les informations qu'il nous demande, c'est le client VPN:

  • Nom: nous mettrons une description au tunnel VPN, un nom descriptif au cas où nous en aurions plusieurs.
  • Clé privée: nous mettons la clé privée que nous avons précédemment copiée du bloc-notes.
  • Clé publique: lors de la saisie de la clé privée, il la génère automatiquement
  • Adresses: IPv4 ou IPv6 du client, dans ce cas, nous avons précédemment configuré 10.9.0.2/32, nous mettons ceci.
  • Port: nous le laissons vide
  • Serveurs DNS: nous pouvons mettre un serveur DNS spécifique, ou directement qui résout le tunnel.
  • MTU: nous laissons ce champ vide.

Maintenant, nous cliquons sur ajouter une paire, et plus de configurations seront affichées, ces configurations sont celles du serveur VPN.

  • Peers - La clé publique du serveur VPN.
  • Clé pré-partagée: si nous n'avons pas configuré, nous laissons vide, si nous avons configuré nous la copions exactement de la même manière.
  • Maintenance persistante: garder en vie, il est recommandé de le laisser vide.
  • Dernier point: il faut mettre la syntaxe «IP: port», donc on peut mettre: «vpn.redeszone.net:51820».
  • IP autorisées: si nous voulons toutes les mettre, nous mettons 0.0.0.0/0. Nous avons également un bouton pour exclure les adresses IP privées.

Une fois que nous l'avons fait, nous cliquons sur enregistrer, et nous pourrons voir tous les paramètres définis.

Une fois ajouté et vérifié que tout est correct, nous procédons à la connexion et nous verrons qu'il y a échange de trafic et que le VPN fonctionne parfaitement.

Si nous n'avons pas reçu de paquets, cela signifie qu'il y a un problème et que le tunnel VPN WireGuard n'a pas été établi correctement. Si cela vous arrive, vous devrez revoir toute la configuration effectuée et consulter les journaux pfSense pour voir ce qui se passe.

Nous espérons qu'avec ce tutoriel, vous avez pu configurer le serveur VPN WireGuard dans votre magnifique pfSense 2.5.0