Installation d’un PFSense en tête d’un serveur OVH sous ESXi

Dès que je prends un nouveau serveur chez OVH, j’ai pris l’habitude de positionner en tête une machine virtuelle en PFSense. Cependant, positionner un PFSense sur une IP Failover d’un serveur OVH expose à certaines difficultés.

Comme toujours, je n’invente rien. Je reprends souvent plein de choses existantes ici et là. Pour plus d’informations voir mes sources en conclusion de l’article.

Prérequis

Tout d’abord, quelques prérequis. Il est nécessaire d’avoir fait une demande d’IP Failover sur le serveur et de faire générer une adresse MAC de type vmware sur l’adresse IP qui correspondra à la publique du Firewall (notée XX.XX.XX.XX par la suite).

Pour la suite nous allons utiliser la notation YY.YY.YY.YY comme adresse publique de l’hyperviseur.

Il faut également noté, qu’il sera nécessaire de disposer d’une VM positionnée sur un des réseaux interne pour accèder à l’interface de configuration Web du Pfsense. Il est possible de faire sans, mais c’est très risqué, car une parade serait d’exposer sur Internet volontairement l’interface temporairement en désactivant le service de firewall via la commande pfctl -d qu’il est ensuite possible de réactivé via pfctl -e.

Il est ensuite nécessaire de créer l’infrastructure réseau (au sens vmare) pour émuler les liaisons vers les différentes zones. Pour cela, pour chacune des zones, il faut aller dans la partie « Mise en réseau » puis ajouter un commutateur virtuel standard. On laisse les paramètres standards, et supprime les éventuelles interfaces physiques qui pourraient y être automatiquement ajoutés.

Il faut ensuite créer le groupe de port associé pour pouvoir attacher les cartes réseaux.

Création de la VM PFSense

Pour la création de la VM PFSense, il faut créer une machine virtuelle de type FreeBSD en 64 bits (Autre). J’alloue les capacités suivantes habituellement: 1 vCPU, 1 Go de RAM et 10 Go de disque.

Lors de la création initiale de la VM, il faut penser à déconnecter initialement l’interface WAN (portant l’adresse IP Public) et à lui forcer l’adresse MAC avec celle proposée par OVH.

J’utilise en général des interfaces de type VMX3.

Il faut ensuite procéder à l’installation avec les paramètres par défaut du pfsense sur le disque de la VM.

Configuration initiale du PFSense

Lors du démarrage de la VM sur le disque dur, on vous demande si votre Firewall a besoin d’une configuration vlan particulière. En général, si vous ne savez pas ce que c’est, vous n’en avez pas besoin. Aidez-vous des adresses MAC identifiées plus haut pour identifier l’interface WAN.

Ensuite, il vous demande d’identifier vos interfaces pour les zones WAN (Internet donc) et LAN (privé).

Une fois le firewall démarré complètement, vous pouvez constater que le plan d’adressage du LAN proposé par défaut est 192.168.1.1/24.

Il est maintenant nécessaire de configurer l’interface WAN. Pour ce faire, on va sélectionner l’option 2. Il faut ensuite selectionner l’interface WAN. La première question porte sur le DHCP en IPv4, il faut y répondre par la négative. Il faut ensuite entrer l’adresse IP Failover XX.XX.XX.XX.

On vous demande alors de saisir le masque de réseau. Idéalement, il faudrait y mettre 32. Cet invite ne vous le permet pas, donc on va mettre 24 pour le moment.

Ensuite il faut saisir la passerelle. Pour le moment nous allons simplement faire entrer pour aucune.

On passe alors aux configurations IPv6, qu’il ne faut pas remplir. Et enfin la dernière question relative à l’activation du protocole HTTP pour l’accès à l’interface de configuration.

Configuration du routage

Il faut ensuite se rendre dans le menu 8 puis taper les lignes suivantes pour configurer le routage manuellement. Attention ce paramétrage est temporaire. Il va sauté dès que vous affecterez le paramétrage du routage via l’interface Web.

route del default
route add -net YY.YY.YY.254/32 -iface vmx0
route add default YY.YY.YY.254

Une fois cela réalisé, il faut se connecté via l’interface LAN sur l’administration en https://192.168.1.1 avec le duo admin/pfsense comme identifiants/password.

Une configuration initiale vous est proposée. Il faut alors en profiter pour forcer dans l’interface WEB l’adresse MAC de l’interface WAN (publique) ainsi que mettre le masque de réseau à 32 bits.

Automatisation du routage

Il faut installer le paquet ShellCmd et ensuite re-créer les deux commandes d’ajout de route pour qu’elles soient exécutés lors de chaque redémarrage.

J’ai ensuite pris l’habitude d’installer le paquet Open-VM-Tools.

Votre Firewall est prêt, vous pouvez maintenant le configurer et à ça commence assez classiquement par une règle de NAT sortante.

Configuration VPN

Sur les Firewall, vous pouvez souvent configurer deux types de VPN: IPSec et SSL.

Le VPN IPSec s’appuye sur le protocole IPSec qui est un standard et permet donc, à priori, une inter-opérabilité entre solutions. Il est donc particulièrement indiqué pour créer des VPN entre passerelles. Et même s’il est possible de l’utiliser dans un cas d’usage alternatif, pour projeter un poste nomade sur le réseau, une certaine complexité technique le contre-indique à priori.

Et il y a le VPN SSL, qui sur PfSense s’appuie sur OpenVPN, qui lui n’est pas un standard du marché, et va exceller dans les communications sécurisés pour les postes nomades.

Configuration IPSec

La configuration d’un tunnel IPSec se réalise en deux étapes (ou phases au sens IPSec).

Lors de la première phase, les deux passerelles établissent une communication entre elles. Puis lors de la seconde phase, le tunnel établi permet la communication elle-même entre les machines au travers du tunnel.

Sous PFsense, pour la configuration d’un tunnel, il faut tout d’abord aller dans VPN->Ipsec puis ajouter une Phase 1 (P1). Sur les paramètres, je vous conseille d’utiliser IKEv2, dans la passerelle distante il faut renseigner l’adresse IP du peer VPN (passerelle) et dans les méthode d’identification, je force adresse IP que je renseigne avec la publique de mon Firewall et le pair je l’identifie au moyen de son adresse IP. Il est ensuite nécessaire de renseigner une clé pré-partagée (qu’il faudra commune avec le peer). Dans les algorithmes de chiffrement, j’utilise les paramètres suivants: AES / 256 bits / SHA256/ DF14. Je laisse le reste des autres paramètres en l’état.

Il est ensuite nécessaire de configurer la ou les phases 2. Celles-ci servent à identifier les réseaux qui peuvent communiquer au travers du tunnel. Il en faut donc autant que de réseaux autorisés à communiqué au travers du VPN. Pour faire simple cette phase agit sur la routage des flux. Il faudra donc par la suite aller dans la partie Pare-Feux->Règles->IPSec pour autoriser au niveau filtrage les flux de communication.

Dans la configuration d’une Phase 2 (P2) il faut donc renseigner le réseau Local, le réseau distant. On peut ensuite personnaliser les propositions d’encapsulation/chiffrement. Je laisse ESP et utilise l’AES en 256 bits (en désactivant les autres protocoles) puis SHA 256 en algorithme de chiffrement.

Les règles de filtrage sur l’interface WAN se construisent automatiquement. Il n’est donc pas nécessaire d’y faire quoi que ce soit.

Configuration OpenVPN

Pour la configuration OpenVPN, il y a quelques pré-requis. Il faut tout d’abord préparer l’AC (ou les ACs) ainsi que le certificat à faire porté par le service.

J’installe le paquet openvpn-client-export pour me permettre de générer automatique les fichiers de configurations ainsi que les bundles d’installations (contenant le binaire client, le fichier de configuration et si on le souhaite on peut même packager les certificats utilisateurs).

Dans l’exemple ci-dessous, je vais réaliser dans un premier temps une configuration avec une authentification utilisateur par login/mdp. J’ai utilisé une PKI à deux niveaux pour la partie certificats (Root CA et Signing CA).

Pour commencer, il faut aller dans le menu VPN->OpenVPN puis dans l’onglet Serveur ajouter un nouvel élément.

Dans le mode de serveur, j’utilise le mode « Accès à distance (Authentification utilisateur) ». La base de donnée utilisée sera directement sur le Firewall. Il faut ensuite configurer le certificat serveur à présenter.

Maintenant au niveau configuration réseau, il faut configurer un réseau (virtuel) servant à heberger les machines en VPN. Dans mon cas j’ai utilisé par exemple 172.16.1.0/24.

Ensuite il faut configurer les réseaux locaux IPv4 disponible au travers du tunnel. Il s’agit ici d’indiquer à l’agent client pour quel destination il doit intercepter le trafic.

Pour ma part, je renseigne un nom de domaine aux clients et dans la partie DHCP je fournis mon serveur DHCP interne (qui peut aussi être le PFSense lui-même).

Pour éviter des problèmes de confit, je bloque les DNS externe et force une mise à jour du cache DNS.

Ensuite dans la partie Options personnalisées, je rajoute des informations de routage à destination du serveur OpenVPN pour l’informer de routes vers des réseaux non directement accessible par le Firewall.

Dans mon cas j’ai des réseaux accessible au travers d’un IPSec, je rajoute donc:

route 192.168.2.0 255.255.255.0

192.168.2.0/24 étant mon réseau distant.

NB: dans mon cas, si je veux que mes client OpenVPN accèdent aux sites distants connectés en IPSec, il faut ajouter dans les phases 2 le réseaux 172.16.1.0/24.

Le serveur OpenVPN est donc configuré, il ne reste qu’à télécharger le « Current Windows Installer » via l’onglet Client Export.

Il est également nécessaire de réaliser le filtrage via le menu Pare-feu->Règles puis OpenVPN. A noter que, comme dans le cas de l’IPSec, la règle WAN est automatiquement rajoutée.

Sources

Mes sources sont les suivantes:

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *