Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Comment mettre en place une installation multiserveur de CrowdSec ?

25 février 2024 à 17:00

I. Présentation

Dans ce tutoriel, nous allons voir comment effectuer une installation de CrowdSec sur plusieurs machines afin de répliquer les alertes et les décisions entre les différentes instances. Ainsi, lorsqu'un serveur banni une adresse IP, elle est également bannie sur les autres instances CrowdSec synchronisées.

Pour effectuer une installation multiserveur de CrowdSec, toutes les machines doivent avoir une instance CrowdSec installée en local. Ensuite, nous viendrons ajuster la configuration de chaque instance, notamment au niveau de LAPI. Si vous avez plusieurs serveurs exposés sur Internet (un cluster de serveurs Web, par exemple), vous pouvez déployer cette configuration pour que les adresses IP malveillantes soient bannies sur tous les nœuds.

Pour les échanges d'informations, CrowdSec s'appuie sur deux API :

  • Local API ou LAPI : ceci correspond à l'hôte local lorsque l'instance CrowdSec fonctionne de façon autonome
  • Central API ou CAPI : ceci correspond aux instances CrowdSec dans le Cloud, notamment sollicitées pour récupérer les listes d'adresses IP malveillantes communautaires et pour transmettre les signaux à la console CrowdSec.

Ce contenu est disponible au format vidéo :

II. Architecture avec un pare-feu PfSense et des serveurs virtuels

Pour le déploiement, plusieurs scénarios sont envisageables. Vous pouvez utiliser une machine CrowdSec destinée à centraliser toutes les décisions et toutes les alertes, et sur laquelle les autres machines viendront se synchroniser. Il est d'ailleurs possible de s'appuyer sur une base de données, pour des questions de performance.

Aujourd'hui, nous allons déployer un scénario basé sur deux machines :

  • Un pare-feu PfSense, où CrowdSec sera installé et cet hôte sera utilisé pour héberger le rôle de "Local API" pour les trois machines
  • Un serveur Windows Server, où CrowdSec sera installé avec le bouncer windows-firewall

Ici, il n'y a qu'un seul serveur exposé sur Internet, représenté par un serveur Web sous Windows Server, mais il pourrait tout à fait en avoir d'autres (y compris sous Linux). Je vais vous préciser les étapes à effectuer sur les noeuds que l'on pourrait appeler les "clients LAPI".

CrowdSec multi-server PfSense Linux Windows Server

Remarque : dans la vidéo, le scénario est basé sur trois machines, avec un second serveur en DMZ, sous Linux, lui aussi serveur Web et exposé sur Internet également. Référez-vous à la vidéo si nécessaire, selon vos besoins.

III. Point de départ

Ce tutoriel n'abordera pas l'installation de CrowdSec sur les différents hôtes, ni même l'installation des systèmes d'exploitation. Pour cela, référez-vous aux articles suivants :

Quand votre environnement est prêt, vous pouvez passer à la phase de configuration.

IV. Configurer le serveur LAPI central pour CrowdSec

Sur le pare-feu PfSense, nous devons configurer CrowdSec pour qu'il soit en écoute sur une adresse IP du pare-feu, afin de ne pas être accessible uniquement en local. Sans cela, les autres hôtes ne pourront pas venir s'inscrire sur ce serveur LAPI car par défaut l'hôte LAPI est configuré sur l'adresse IP de boucle locale : 127.0.0.1.

Connectez-vous à l'interface d'administration de PfSense, cliquez sur "Services" puis "CrowdSec". Ici, descendez jusqu'à trouver l'option "LAPI host" et remplacez "127.0.0.1" par le nom d'hôte (DNS) de votre pare-feu PfSense, ou l'adresse IP de l'une de ses interfaces. Dans cet exemple, je précise "192.168.200.1" car il s'agit de l'adresse IP de l'interface "DMZ" de mon pare-feu et le serveur Web se situe dans cette zone réseau.

CrowdSec - PfSense en tant que serveur LAPI

Quand c'est fait, sauvegardez la configuration avec le bouton prévu à cet effet.

Il est à noter que cette modification, bien qu'elle soit effectuée via l'interface web de PfSense, pourrait être effectuée en ligne de commande en modifiant le fichier suivant :

/usr/local/etc/crowdsec/config.yaml

D'ailleurs, ce que nous venons d'effectuer en mode web a permis de modifier le fichier de configuration.

Passez à l'étape suivante.

V. Inscrire et autoriser les hôtes sur le serveur LAPI

Le serveur Web sous Windows Server va devoir s'inscrire sur le serveur LAPI CrowdSec, c'est-à-dire notre pare-feu PfSense. Ensuite, nous devrons approuver la demande d'inscription. Cette étape est à effectuer sur chaque serveur qui doit utiliser le serveur LAPI central.

A. Désactiver l'interface LAPI de CrowdSec

À partir du serveur Windows Server, où CrowdSec est installé, vous devez commencer par modifier le fichier de configuration "config.yaml" situé à cet emplacement :

C:\ProgramData\CrowdSec\config\config.yaml

Dans ce fichier, vous devez ajouter la ligne "enable: false" sous "server:", et commenter la ligne "listen_uri" afin de désactiver la LAPI de CrowdSec. En effet, ce n'est plus utile sur ce serveur puisque nous allons solliciter la LAPI de l'instance CrowdSec installée sur le pare-feu PfSense.

Attention à la syntaxe, notamment aux espaces, car YAML est très pointilleux là-dessus.

Windows Server - CrowdSec - Déclarer serveur LAPI distant

Une fois que c'est fait, sauvegardez le fichier.

B. Inscrire les hôtes CrowdSec sur le serveur LAPI

Toujours sur ce même serveur, ouvrez une console PowerShell ou une Invite de commande afin d'inscrire l'hôte sur le serveur LAPI. Exécutez la commande suivante, en adaptant l'adresse IP (et éventuellement le port, si vous l'avez modifié).

cscli lapi register -u  http://192.168.200.1:8080

Si l'on ne précise pas de nom, comme c'est le cas avec la commande ci-dessus, un ID aléatoire sera généré. Si vous souhaitez préciser un nom, afin que ce soit plus parlant, utilisez la commande de cette façon :

cscli lapi register -u  http://192.168.200.1:8080 --machine <nom de la machine>

Vous devez obtenir un résultat semblable à celui-ci :

Windows Server - CrowdSec - Exemple cscli lapi register

Pour prendre en compte l'ensemble des modifications que nous venons d'effectuer, redémarrez le service CrowdSec :

Restart-Service crowdsec

Passez à la suite.

C. Approuver les hôtes CrowdSec

Basculez sur le serveur LAPI, c'est-à-dire sur le pare-feu, afin d'approuver la machine que l'on vient d'inscrire. Connectez-vous à la console, via SSH, par exemple.

Exécutez la commande suivante pour lister les machines :

cscli machines list

Ceci va permettre d'obtenir une liste avec deux machines :

  • La machine locale, ici "pfsense"
  • La machine distante que l'on vient d'inscrire, identifier par le nom "3f8ba55c46b54537aadaac7c5b7717a44wNuYECMrmksQ9Mm" (car je n'ai pas précisé de nom ; j'ignorais l'option permettant de nommer la machine à ce moment-là)

Désormais, il faut valider / approuver cette nouvelle machine en attente. Pour cela, exécutez la commande suivante :

cscli machines validate <nom de la machine>
cscli machines validate 3f8ba55c46b54537aadaac7c5b7717a44wNuYECMrmksQ9Mm

En principe, vous devriez obtenir un message de confirmation, comme celui-ci :

CrowdSec - cscli machines list and validate

Passez à la suite.

VI. Déclarer les nouveaux bouncers

A. Ajouter un bouncer et obtenir une clé d'API

Toujours sur le serveur LAPI, à savoir PfSense, nous allons devoir déclarer la machine distante comme étant un bouncer. Ceci signifie qu'elle aura la permission de venir déclarer de nouvelles alertes et décisions pour bloquer des adresses IP malveillantes.

La commande suivante permet de déclarer un bouncer nommé "SRV-WS2022". Vous pouvez reprendre le nom d'hôte de votre machine.

cscli bouncers add <nom de la machine>
cscli bouncers add SRV-WS2022

Comme le montre l'image ci-dessous, nous obtenons une clé d'API pour cet hôte :

CrowdSec - Déclarer un hôte en tant que bouncer

Cette clé d'API va lui permettre de s'authentifier sur le serveur LAPI en tant que bouncer.

B. Configurer le bouncer sur l'hôte

Retournez sur le serveur distant. Pour ma part, c'est le serveur Web sous Windows Server. L'objectif va être de configurer le bouncer Windows Firewall installé sur cette machine pour qu'il déclare les décisions sur le serveur LAPI central, plutôt qu'en local. Ceci implique d'installer le bouncer sur le serveur, au préalable.

Éditez le fichier suivant :

C:\ProgramData\CrowdSec\config\bouncers\cs-windows-firewall-bouncer.yaml

Dans ce fichier, vous devez modifier deux options :

  • api_endpoint
  • api_key

Elles sont mises en évidence sur l'image ci-dessous.

Pour l'option "api_endpoint", vous devez indiquer l'adresse IP (ou le nom d'hôte) ainsi que le port de votre serveur LAPI central (soit le PfSense).

Pour l'option "api_key", vous devez indiquer la clé d'API obtenue précédemment via la commande "cscli bouncers add".

Ce qui donne :

Quand c'est fait, redémarrez le service Windows correspondant au bouncer Firewall :

Restart-Service cs-windows-firewall-bouncer

Du côté de PfSense, si nous regardons l'onglet "Bouncers" présent sur la page de statut de CrowdSec, nous pouvons voir deux bouncers valides ! Il y a le bouncer présent en local sur PfSense et notre hôte distant sous Windows Server.

CrowdSec - Multi-serveurs avec PfSense

La configuration est prête, vous allez pouvoir la tester...

VII. Tester la configuration

Pour tester cette configuration, nous allons devoir simuler un comportement malveillant. Dans le cas présent, mon serveur Web Windows Server est accessible grâce à une règle de NAT (car le reverse proxy n'est pas configuré sur le pare-feu) créée sur le pare-feu PfSense.

À l'aide d'une machine distante, je vais accéder à ce site Web qui est celui par défaut de IIS. Il s'agit d'un Lab et l'interface WAN de mon PfSense a l'adresse IP "192.168.1.60", donc j'effectue un scan Web sur cette adresse IP à l'aide de l'outil Nikto.

Ci-dessous, l'action est effectuée à partir d'une machine Kali Linux. Ce scan effectué par Nikto est bruyant et devrait alerter rapidement CrowdSec.

En effet, nous pouvons constater qu'il y a bien eu une décision prise par CrowdSec : bloquer l'adresse IP correspondante à mon hôte Kali Linux. Le résultat ci-dessous est issu de la machine Windows Server.

CrowdSec multi-server - Adresse IP bannie

Nous pouvons voir qu'il y a eu plusieurs alertes générées :

CrowdSec - Lister les alertes LAPI

Mais, comment savoir si c'est le pare-feu ou le serveur web qui a pris la décision de bloquer cette adresse IP ?

Pour cela, nous pouvons regarder les détails de l'alerte. Par exemple, l'alerte avec l'ID numéro 4 correspondant à du "http-xss-probbing". Pour cela, nous devons exécuter la commande suivante :

cscli alerts inspect 4

Dans les détails, nous pouvons voir la ligne "Machine :" accompagnée par un nom d'hôte. Ici, j'obtiens un ID de machine (souvenez-vous, la machine n'a pas été nommée lors de son inscription initiale). Cet identifiant correspond bien à mon serveur Web, donc c'est ce serveur qui a bloqué l'adresse IP.

Nous pouvons le vérifier en faisant la correspondance entre cet ID et celui visible dans la liste des machines :

cscli machines list

Voici le résultat en image :

CrowdSec - Inspecter une alerte et identifier hôte source

Remarque : nous pouvons également ajouter l'option "-m" aux commandes "cscli alerts list" et "cscli decisions list" pour ajouter une nouvelle colonne avec l'ID de la machine.

Du côté de l'interface Web de PfSense, cette adresse IP est également bannie ! La décision est bien synchronisée entre tous les hôtes. Ainsi, les deux machines vont bloquer tous les flux en provenance de cette adresse IP malveillante.

CrowdSec - Synchronisation des décisions

VIII. Conclusion

Grâce à ce tutoriel basé sur uniquement deux hôtes, nous voyons bien le potentiel et l'intérêt de CrowdSec dans une architecture multiserveur, notamment lorsqu'il y a plusieurs serveurs exposés sur Internet. Le fait de coupler les serveurs avec le pare-feu permet de bannir les adresses IP malveillantes directement en entrée du réseau, ce qui est intéressant pour protéger notre infrastructure.

Sachez que malgré la présence d'une authentification, tous les flux échangés entre les hôtes sont effectués en clair puisque le protocole HTTP est utilisé. Il s'agit de flux interne, entre le serveur en DMZ et le pare-feu, donc c'est acceptable. Toutefois, si vous envisagez d'utiliser un serveur LAPI externe ou qui implique que des flux vont transiter sur Internet, vous devez faire évoluer la configuration pour basculer les connexions en HTTPS.

The post Comment mettre en place une installation multiserveur de CrowdSec ? first appeared on IT-Connect.

Installer CrowdSec sur un pare-feu PfSense pour protéger son réseau

18 février 2024 à 17:00

I. Présentation

Dans ce tutoriel, nous allons voir comment installer CrowdSec sur un pare-feu PfSense dans le but de bloquer les adresses IP malveillantes, notamment à l'origine d'attaques brute force, de scans de port et de recherche de vulnérabilités web (HTTP).

CrowdSec, que nous avons déjà abordé au sein de plusieurs articles, est une solution gratuite et open source capable de détecter et bloquer les attaques à destination des machines, grâce à la prise en charge de nombreux scénarios de détection. CrowdSec prend en charge Linux, Windows Server, FreeBSD, et il peut être mis en place sur certains firewalls comme PfSense et OPNSense.

Lorsqu'il est en place sur un firewall PfSense, CrowdSec va analyser plusieurs journaux du système pour identifier les comportements malveillants et bloquer les adresses IP associées. En complément, les adresses IP présentes dans les listes communautaires de CrowdSec sont également bloquées.

Il est important de préciser que si vous utilisez HAProxy en tant que reverse proxy sur un pare-feu PfSense, vous pouvez également configurer CrowdSec pour qu'il surveille les logs de HAProxy pour détecter les attaques Web. C'est très intéressant, et ce scénario sera probablement détaillé dans un article complémentaire.

Pour vous aider à mettre en place ce tutoriel, voici quelques ressources supplémentaires :

II. Prérequis pour suivre ce tutoriel

Pour suivre ce tutoriel, vous avez besoin d'un pare-feu PfSense déjà en place car nous n'allons pas voir l'installation. Pour ceux qui le souhaitent, vous pouvez utiliser le Lab basé sur VMware Workstation comme point de départ, si vous désirez vous entrainer. C'est ce que je fais pour ma part.

En complément, une machine virtuelle sous Kali Linux sera utilisée pour simuler une attaque (en se positionnant côté WAN). Mais, vous pouvez directement utiliser votre hôte physique sans problème (sous Windows, vous pouvez installer l'outil Zenmap, par exemple).

III. Installer CrowdSec sur PfSense

A. Accéder au shell de PfSense

La première étape consiste à installer un ensemble de paquets sur le pare-feu PfSense afin de pouvoir intégrer CrowdSec. Pour exécuter des commandes shell sur PfSense, il y a trois options :

  • Utiliser le mode console (via l'hyperviseur, par exemple)
  • Utiliser la console distante via une connexion SSH
  • Utiliser la fonction "Command Prompt" accessible via l'interface web de PfSense (dans le menu "Diagnostics").

Dans le cas présent, je pensais utiliser la fonction "Command Prompt" mais les commandes ne sont pas passées. Il est préférable de passer directement via la console.

PfSense - Menu Diagnostique commandes

Si vous avez besoin d'activer le SSH, cliquez sur "System" puis "Advanced". À cet endroit, il y a une section "Secure Shell" où vous pouvez activer le SSH et définir un port personnalisé.

PfSense - Activer accès SSH

Ensuite, vous devez vous connecter en SSH à PfSense. Vous pouvez utiliser le client OpenSSH de Windows ou Linux, ou une autre application telle que PuTTY.

Voici comment se connecter sur un pare-feu avec l'adresse IP "192.168.100.1" avec le compte "admin", où le port SSH est 9922.

ssh [email protected] -p 9922

La première fois, vous devez accepter l'empreinte en indiquant "yes". Ensuite, saisissez le mot de passe et validez. Pour accéder au shell, choisissez l'option "8".

B. Installer CrowdSec, le paquet PfSense et le bouncer Firewall

Désormais, il va falloir installer CrowdSec, son paquet pour PfSense, le bouncer Firewall et des dépendances.

Pour cela, vous devez récupérer les liens vers les dernières versions en vous référant au GitHub de CrowdSec. Autrement dit, les commandes "pkg add" ci-dessous pointent vers les versions actuelles, mais ce ne seront pas forcément les dernières lorsque vous allez suivre ce tutoriel.

Avant d'installer les paquets, nous allons définir la variable "IGNORE_OSVERSION" à "yes" pour éviter les avertissements lors de l'installation des paquets (dû à la différence entre la version du paquet et la version de FreeBSD sur laquelle est basée PfSense).

Dans la console, saisissez cette commande :

setenv IGNORE_OSVERSION yes

Puis exécutez les commandes suivantes pour télécharger et installer les paquets :

pkg add -f https://github.com/crowdsecurity/pfSense-pkg-crowdsec/releases/download/v0.1.3/abseil-20230125.3.pkg
pkg add -f https://github.com/crowdsecurity/pfSense-pkg-crowdsec/releases/download/v0.1.3/re2-20231101.pkg
pkg add -f https://github.com/crowdsecurity/pfSense-pkg-crowdsec/releases/download/v0.1.3/crowdsec-1.6.0.pkg
pkg add -f https://github.com/crowdsecurity/pfSense-pkg-crowdsec/releases/download/v0.1.3/crowdsec-firewall-bouncer-0.0.28_3.pkg
pkg add -f https://github.com/crowdsecurity/pfSense-pkg-crowdsec/releases/download/v0.1.3/pfSense-pkg-crowdsec-0.1.3.pkg
install crowdsec pfsense

L'installation de CrowdSec est effectuée à l'emplacement suivant :

/usr/local/etc/crowdsec/

Par la suite, si vous avez besoin de redémarrer CrowdSec, utilisez cette commande (adaptez également pour l'arrêter / le démarrer) :

service crowdsec.sh restart

Avant de poursuivre, vous devez redémarrer votre pare-feu PfSense, sinon CrowdSec ne sera pas actif, et la ligne de commande "cscli" indisponible également.

Voilà, vous venez d'installer CrowdSec sur PfSense !

IV. Configurer CrowdSec sur PfSense

Sachez que tout le jeu de commandes habituel permettant de configurer et d'utiliser CrowdSec est disponible : cscli. Vous pouvez aussi faire l'essentiel de la configuration à partir de l'interface d'administration de PfSense.

À partir du menu, sous "Services", choisissez "CrowdSec".

PfSense - Menu Services CrowdSec

Par défaut, et c'est plutôt appréciable, CrowdSec est préconfiguré pour être opérationnel et être capable d'analyser les journaux de PfSense. Pour en savoir plus sur les fichiers de logs parsés par CrowdSec, regardez ces deux fichiers :

/usr/local/etc/crowdsec/acquis.yaml
/usr/local/etc/crowdsec/acquis.d/pfsense.yaml

Vous devez tout de même réviser la configuration proposée...

Configurer CrowdSec sur PfSense - Etape 1

Vous pouvez constater que la "Local API" (LAPI) est activée. Elle est utilisée par CrowdSec pour le partage d'informations entre plusieurs instances. Ici, c'est en local. Au cas où il s'agirait d'un déploiement avec plusieurs machines qui s'échangent les informations (adresses IP bloquées, par exemple), il faudrait s'intéresser à la section "Remote API". Ici, ce n'est pas nécessaire.

Configurer CrowdSec sur PfSense - Etape 2

Descendez dans la page... Nous pouvons constater que CrowdSec est actif sur toutes les interfaces de PfSense, en entrée (flux malveillants entrants). Il est important de préciser que les règles de pare-feu créées par CrowdSec ne sont pas visibles dans la liste des règles de PfSense que l'on peut afficher en mode web, mais uniquement en ligne de commande.

Configurer CrowdSec sur PfSense - Etape 3

Cliquez sur le bouton "Save" pour valider la configuration et démarrer CrowdSec.

Désormais, dans le menu "Status", cliquez sur "CrowdSec Status".

Configurer CrowdSec sur PfSense - Etape 4

Ici, vous pouvez visualiser l'état général de CrowdSec, ainsi qu'obtenir la liste des bouncers, des collections, des scénarios, etc... Mais aussi lister les dernières alertes et les décisions. Pour rappel, une décision correspond au fait de bannir une adresse IP (action par défaut).

Voici la liste des collections actuellement installées :

Nous pourrions en ajouter d'autres à partir de la ligne de commande (cscli collections install). Ceci peut s'avérer utile si votre pare-feu PfSense héberge d'autres services, comme un reverse proxy HAProxy, par exemple.

Enfin, il y a la section "CrowdSec Metrics" accessible via le menu "Diagnostics" de PfSense qui donne des statistiques plus détaillées sur l'activité de CrowdSec sur notre pare-feu. Nous pouvons entre autres visualiser quels sont les fichiers de log analysés par CrowdSec et obtenir des statistiques à leur sujet.

PfSense - CrowdSec Metrics

V. Simuler un scan de ports sur PfSense

A partir de l'outil NMAP, nous allons pouvoir réaliser un scan de ports sur l'adresse IP de l'interface WAN du PfSense. Dans cet exemple, il s'agit de "192.168.1.60", mais en production, il s'agirait de votre adresse IP publique. Vous pouvez utiliser NMAP sur Linux, via WSL, ou sinon en mode graphique sous Windows avec Zenmap.

Voici la commande à exécuter pour faire un scan de port à la recherche de services fréquents :

nmap -sV 192.168.1.60

Le scan a permis de détecter que le port 80/tcp (http) était ouvert. C'est normal, car une règle de NAT redirige les flux HTTP vers un serveur Web en DMZ. Il n'a pas obtenu d'autres réponses.

Scan de port avec nmap - Exemple

Pour cause, la machine à l'origine du scan a été bannie par CrowdSec. Nous pouvons le voir dans le menu "Status" puis "CrowdSec", en accédant à l'onglet "Decisions". Cette adresse IP a été bannie à cause du scan de port, comme indiqué : pf-scan-multi_ports.

PfSense - Adresse IP bannie par CrowdSec

L'information est bien entendu visible à partir de la ligne de commande :

cscli decisions list 
PfSense - Exemple de cscli

Nous pouvons constater que CrowdSec est opérationnel et réactif sur notre pare-feu PfSense ! C'est un gros plus pour la protection de notre réseau !

VI. Conclusion

Suite à la mise en place de CrowdSec sur notre pare-feu PfSense, nous sommes en mesure de détecter et bloquer les adresses IP malveillantes. Ainsi, si une machine vient frapper à la porte de votre pare-feu pour voir quels sont les services ouverts, elle sera directement bannie.

Par la suite, nous verrons comment aller plus loin dans la détection et la configuration s'il y a un reverse proxy HAProxy en place sur le pare-feu PfSense. Pour aller plus loin, nous pourrions aussi déployer CrowdSec sur les serveurs de notre infrastructure et faire en sorte pour que toutes les décisions et alertes soient synchronisées entre les hôtes, en nous appuyant sur l'instance CrowdSec déployée sur PfSense comme point central.

The post Installer CrowdSec sur un pare-feu PfSense pour protéger son réseau first appeared on IT-Connect.

Comment installer pfSense dans VMWare Workstation pour créer un lab virtuel ?

28 janvier 2024 à 17:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à installer Pfsense au sein d'une VM VMWare Workstation dans le but de créer un lab. Cette VM assurera le rôle de routeur et pare-feu virtuel. Grâce à cette machine virtuelle Pfsense, vous allez pouvoir vous exercer sur différents sujets notamment : la gestion d'un pare-feu (autoriser ou refuser les flux du réseau local vers Internet, et inversement), faire du NAT, créer des règles de redirection de ports, monter un serveur DHCP, effectuer la mise en place d'un proxy, d'un reverse proxy, la création d'une DMZ, etc...

L'objectif va être de créer un réseau interne (192.168.100.0/24), qui pourra accéder à internet ,par l'intermédiaire du pare-feu pfSense et un réseau DMZ (192.168.200.0/24) qui hébergera un serveur web IIS qui sera accessible en dehors de notre réseau interne.

L'interface WAN, qui nous permettra de simuler l'évasion vers internet sera rattachée (en mode bridge) à une interface physique du PC sur lequel est déployé VMware Workstation. Cette interface WAN se verra attribuer une configuration IP (Adresse IP, masque de sous-réseau, passerelle et serveur DNS) par le service DHCP de notre box internet.

Pour en savoir plus sur ce qu'est une DMZ, je vous recommande à lire cet article :

* Informatique : c’est quoi une DMZ ?

Le schéma de notre lab virtuel est présenté ci-dessous :

Schéma du lab virtuel pfSense VMWare Workstation
Schéma du lab virtuel pfSense VMWare Workstation

II. Prérequis

Pour réaliser ce lab virtuel, vous aurez besoin :

  • Un hôte sur lequel VMWare Workstation Pro est installé (version d'essai disponible ici).
  • Le fichier d'installation de pfSense à télécharger depuis le site officiel.
  • Une machine virtuelle depuis laquelle tester notre configuration réseau, sous l'OS de votre choix.
  • Une machine virtuelle sous Windows Serveur 2022 pour y installer IIS.

Nous vous recommandons de lire les articles ci-dessous si vous débutez avec VMware Workstation :

III. Installer pfSense sur VMware Workstation

A. Télécharger le fichier d'installation de pfSense

Sur l'hôte où est installé VMWare Workstation Pro, ouvrez votre navigateur internet pour accéder à la page de téléchargement de pfSense.

Renseignez les paramètres de téléchargement suivants puis cliquer sur Download :

  • Architecture : AMD 64 (64-bit)
  • Installer : DVD Image (ISO) Installer
  • Mirror : Frankfurt, Germany

Le fichier téléchargé est une archive GZ contenant l'image ISO. Décompressez l'archive GZ (à l'aide de 7-zip, par exemple) et conservez l'espace de stockage de l'image ISO récupérée.

B. Créer une machine virtuelle pour pfSense

Dans VMWare Workstation Pro, ouvrez l'assistant de création d'une machine virtuelle depuis le menu "File > New Virtual Machine".

Une fois l'assistant lancé, nous allons sélectionnez le mode de création "Typical" et cliquez sur "Suivant".

A cette étape, nous allons sélectionner l'option d'installation depuis une image ISO et renseigner l'emplacement de l'image.

Remarque : VMWare Workstation Pro a automatiquement détecté le type de système d'exploitation à utiliser pour cette VM : "FreeBSD version 10 and earlier 64-bit."

Ensuite, nous allons nommer notre machine virtuelle et définir l'emplacement où stocker les données de la VM (fichier de configuration, disque dur virtuel, etc.).

Nous allons pouvoir configurer le disque dur virtuel de la VM. Dans notre cas, nous sommes dans un lab virtuel donc je vais conserver les paramètres par défaut proposés par l'assistant de création de VM, et cliquer sur "Suivant".

Enfin, nous allons finaliser la création de la VM en s'assurant qu'elle ne démarre pas automatiquement une fois créée. Nous allons modifier sa configuration, notamment les interfaces réseaux nécessaires. Voici l'option à décocher avant de cliquer sur "Finish" :

C. Configurer la machine virtuelle et ses interfaces réseaux

Les paramètres à modifier sur notre machine virtuelle sont les suivants :

  • Passer la RAM à 2 Go (2048 Mo), minimum
  • Passer le nombre de cœur de CPU à 2, minimum

Nous allons créer 2 "LAN Segment" qui vont permettre d'avoir plusieurs réseaux virtuels au sein de VMWare Workstation distincts les uns des autres. Pour ce faire, lorsque vous êtes sur les paramètres d'une interface réseau, cliquez sur "LAN Segment". Ensuite, cliquer sur "Add" et nommez-le.

Dans notre cas, nous allons créer 2 LAN Segment : LAN et DMZ.

Ensuite, il faut modifier le type de connexion au réseau de la première interface afin de s'assurer qu'elle soit sur "Bridge". Ensuite, cliquez sur "Add" pour ajouter 2 interfaces réseau supplémentaires.

L'interface réseau n°2 sera rattaché au LAN Segment "LAN" et l'interface réseau n°3 a LAN Segment "DMZ".

Pour terminer, enregistrez l'ensemble des modifications.

D. Installer pfSense sur la VM VMware Workstation

Maintenant que notre VM est configurée selon notre besoin, nous allons pouvoir la démarrer. Cliquer sur "Power on this virtual machine". La VM va automatiquement démarré sur le fichier d'installation ISO de pfSense.

L'installeur de pfSense va d'abord analyser la configuration matérielle de la VM et charger l'assistant d'installation.

Une fois le chargement terminé, veuillez accepter le contrat d'utilisation de pfSense (Tapez sur Entrée).

Pour poursuive l'installation, sélectionnez "Install pfSense" et appuyez sur Entrée.

A l'étape de partitionnement du disque, nous allons utiliser le mode "Auto (ZFS)" présélectionné et appuyer sur Entrée.

A cette étape, un récapitulatif du partitionnement automatique ZFS est présenté, appuyez sur Entrée pour valider.

Au travers du système de fichier ZFS, pfSense peut-être installé sur de multiple disques pour assurer une disponibilité accrue du pare-feu. Pour en savoir plus sur le RAID, je vous invite à consulter cet article Wikipédia - un article sur IT-Connect arrive bientôt 🙂 !

Dans notre cas, nous allons faire une installation sans redondance (mode stripe). Appuyez sur Entrée.

Pour sélectionner le disque dur virtuel, appuyez sur Espace puis sur Entrée et sélectionner "Yes" (flèche gauche et Entrée).

L'installation est relativement rapide. Une fois achevé, validez le redémarrage de la VM.

E. Premier démarrage de pfSense

Au premier démarrage, pfSense détecte automatiquement les interfaces réseau. La plupart du temps, vous verrez l'interface WAN rattachée à l'interface em0 correspondant à la première interface ajoutée. L'interface LAN quant à elle sera rattachée à l'interface em1, correspondant à la deuxième interface ajoutée à la VM.

Comme on peut le voir, la configuration IP de l'interface WAN a été attribuée par le serveur DHCP de mon réseau. Nous allons configurer l'interface LAN avec sa configuration IP adéquate.

Pour modifier la configuration IP de notre interface LAN, nous allons procéder comme suit :

Choisissez l'option 2.

Ensuite, nous allons sélectionner l'interface LAN en entrant l'option 2 et indiquer que nous n'allons pas configurer l'interface via DHCP.

Enfin, nous allons définir la configuration IP de notre interface manuellement :

  • Adresse IP de l'interface LAN : 192.168.100.1
  • Masque de sous-réseau (en notation CIDR) : 24 = 255.255.255.0
  • Pas de passerelle
  • Pas de configuration IPv6
  • Pas de serveur DHCP IPv4 - il pourra être configuré par la suite depuis l'interface Web

Une fois terminé, l'URL pour accéder à l'interface Web d'administration de pfSense s'affiche et faire "Entrée" pour terminer.

IV. Première connexion à l'interface d'administration de pfSense

A. Se connecter à l'interface web de PfSense

Depuis le poste client (c'est-à-dire depuis notre réseau LAN virtuel), nous allons nous connecter à l'interface Web d'administration de pfSense à l'adresse IP "https://192.168.100.1/".

Au préalable, il est nécessaire de configurer l'interface réseau de la machine virtuelle cliente comme suit :

  • Adresse IPv4 : 192.168.100.2
  • Masque : 255.255.255.0 ou /24
  • Passerelle : 192.168.100.1
  • Serveur DNS : 1.1.1.1 ou celui de votre choix

Le certificat de sécurité SSL utilisé pour la connexion HTTPS est auto-signé, il est donc normal d'avoir un avertissement de sécurité. Il est possible, selon vos besoins de définir un certificat provenant d'une autorité de certification d'entreprise ou publique.

Pour vous connecter à l'interface Web d'administration, il est nécessaire de saisir l'identifiant et le mot de passe prédéfini à l'installation. Voici les identifiants par défaut :

  • Identifiant : admin
  • Mot de passe : pfsense (à modifier par la suite)

B. L'assistant de configuration Web

Une fois connecté, l'assistant de configuration Web s'ouvrira. Cliquez sur "Next".

Cliquez à nouveau sur "Next" pour valider les modalités de support fourni par l'éditeur.

Ici, nous allons préciser les serveurs DNS de notre firewall pfSense, à savoir "1.1.1.1" et "8.8.8.8", et cliquer sur "Next". Adaptez ces valeurs si vous le souhaitez.

A cette étape, nous allons configurer le serveur de temps qui est important pour bénéficier de logs à jour. Sélectionnez le fuseau horaire correspondant à votre emplacement puis cliquez sur "Next".

A l'étape 4, conservez les paramètres prédéfinis par pfSense pour la configuration de l'interface WAN en veillant à décocher les 2 options suivantes : "Block private networks form entering via WAN" et "Block non-internet routed networks from entering via WAN". Ces deux paramètres, lorsque pfSense est installé dans un réseau local existant (lab virtuel), permet de ne pas bloquer le trafic reposant sur des adresses IP privée. Ici, entre notre box internet et pfSense.

A l'étape 5 de l'assistant, conservez la configuration de l'interface LAN que nous avons fait en amont.

A l'étape 6 de l'assistant, définissez un nouveau mot de passe et cliquer sur "Next".

A l'étape 7, cliquez sur "Reload" afin de recharger la configuration de pfSense avec les informations que nous venons de définir.

Après quelques secondes, nous arrivons à la fin de l'assistant de configuration. Nous pouvons cliquer sur "Finish" pour accéder au tableau de bord.

C. PfSense : ajouter une interface DMZ

Pour ajouter l'interface DMZ à PfSense, accédez au menu "Interfaces" puis "Assignments".

On constate que l'interface "em2" peut être ajoutée : cliquez sur "Add" puis "Save".

En cliquant sur le nom de l'interface sur la page précédente, nous pouvons accéder à sa configuration. Ici, nous allons activer l'interface et la nommer DMZ au lieu de OPT1 afin de l'identifier facilement. Nous allons également définir la configuration IPv4 statique.

Pour terminer, cliquer sur "Save" et "Apply Changes".

Désormais, PfSense est initialisé et les trois interfaces réseau sont prêtes. A partir des réseaux "LAN" et "DMZ" nous pouvons accéder à Internet grâce aux règles de NAT dynamiques créées par défaut par PfSense.

V. Installer un serveur Web

Comme indiqué en introduction de cet article, nous allons installer un serveur Web dans la zone DMZ.

L'installation des rôles et services de serveur Web sous Windows Serveur est présentée dans la vidéo associée à ce tutoriel, et vous pouvez également vous référer à cet article :

La suite de cet article est à adapter à votre besoin. En effet, vous pouvez aussi utiliser une distribution Linux sur laquelle vous installez Apache pour publier votre site internet.

Dans le cadre de notre lab virtuel, la configuration IP du serveur Web (pouvant être adaptée) est la suivante :

  • Adresse IPv4 : 192.168.200.2
  • Masque : 255.255.255.0 ou /24
  • Passerelle : 192.168.200.1
  • Serveur DNS : 1.1.1.1 ou celui de votre choix

VI. Les règles de pare-feu avec pfSense

Une fois votre serveur Web prêt à être utilisé, nous allons définir les règles de pare-feu permettant d'accéder à serveur Web sur pfSense. L'objectif étant de limiter les flux au strict nécessaire, notamment pour que depuis le LAN, nous puissions accéder à la DMZ uniquement pour contacter le serveur Web en HTTP.

Nous allons créer les règles de flux suivantes :

InterfaceActionSourceDestinationProtocole(s) & Port(s)
LANBloquerLAN netDMZ netTous
LANAutoriserLAN netServeur Web (192.168.200.2)TCP - IPv4 - 80 (HTTP)
DMZBloquerDMZ netLAN netTous
DMZAutoriserDMZ netTousTCP - IPv4 - 80 (HTTP)
DMZAutoriserDMZ netTousTCP - IPv4 - 443 (HTTPS)
DMZAutoriserDMZ netTousTCP/UDP - IPv4 - 53 (DNS)

La création d'une nouvelle règle se fait depuis l'interface Web d'administration pfSense, dans le menu suivant : Firewall > Rules.

Ensuite, sélectionnez l'interface sur laquelle créer la règle puis cliquez sur "Add".

A. LAN - Bloquer les flux vers la DMZ

D'abord, sélectionnez l'interface LAN puis cliquez sur "Add", puis renseignez les paramètres de règle suivants :

  • Action : Block
  • Interface : LAN
  • Address Family : IPv4+IPv6
  • Protocol : Any
  • Source : LAN net
  • Destination : DMZ net
  • Description : Bloquer les flux LAN vers la DMZ

Ce qui donne :

B. LAN - Autoriser l'accès au serveur Web sur la DMZ

Sélectionnez l'interface LAN puis cliquez sur "Add", puis renseignez les paramètres de règle suivants :

  • Action : Pass
  • Interface : LAN
  • Address Family : IPv4
  • Protocol : TCP
  • Source : LAN net
  • Destination : Single host or alias - 192.168.200.2
  • Description : Accès serveur Web en DMZ depuis le LAN

Ce qui donne :

C. DMZ - Bloquer les flux vers le LAN

Cette fois-ci, sélectionnez l'interface DMZ puis cliquez sur "Add", puis renseignez les paramètres de règle suivants :

  • Action : Block
  • Interface : DMZ
  • Address Family : IPv4+IPv6
  • Protocol : any
  • Source : DMZ net
  • Destination : LAN net
  • Description : Bloquer les flux de la DMZ vers le LAN

Ce qui donne :

D. DMZ - Autoriser l'accès à internet (HTTP)

Sélectionnez l'interface DMZ puis cliquez sur Add, puis renseignez les paramètres de règle suivants :

  • Action : Pass
  • Interface : DMZ
  • Address Family : IPv4
  • Protocol : TCP
  • Source : DMZ net
  • Destination : any - HTTP (80)
  • Description : Autoriser l'accès à internet depuis la DMZ

Ce qui donne :

E. DMZ - Autoriser l'accès à internet (HTTPS)

Sélectionnez l'interface DMZ puis cliquez sur Add, puis renseignez les paramètres de règle suivants :

  • Action : Pass
  • Interface : DMZ
  • Address Family : IPv4
  • Protocol : TCP
  • Source : DMZ net
  • Destination : any - HTTPS (443)
  • Description : Autoriser l'accès à internet depuis la DMZ (HTTPS)

Ce qui donne :

F. DMZ - Autoriser la résolution DNS

Pour que notre serveur web puisse accéder à Internet, il doit pouvoir effectuer de la résolution de noms vers Internet (si l'on utilise un résolveur DNS externe). Sélectionnez l'interface DMZ puis cliquez sur "Add", puis renseignez les paramètres de règle suivants :

  • Action : Pass
  • Interface : DMZ
  • Address Family : IPv4
  • Protocol : TCP/UDP
  • Source : DMZ net
  • Destination : any - DNS (53)
  • Description : Autoriser la résolution DNS depuis la DMZ

L'ensemble de ces règles vont nous permettre de gérer les flux de façon stricte entre nos trois réseaux, conformément au tableau présenté ci-dessus.

VII. La règle de NAT pour le serveur Web

Dans cette dernière partie, nous allons mettre en place une règle de NAT pour permettre l'accès au serveur Web hébergé sur notre DMZ depuis l'extérieur du réseau local de notre lab virtuel, au travers de l'interface WAN. Cette règle doit être adaptée en fonction de l'adresse IP du serveur web et du port utilisé (HTTP / HTTPS / ou numéro de port exotique).

Si vous avez besoin d'approfondir la notion de NAT, lisez cet article :

Pour ce faire, naviguez dans le menu "Firewall > NAT" puis cliquez sur "Add".

Voici la configuration de notre règle de NAT :

  • Type de règle : Port Forward
  • Interface : WAN
  • Adress Family : IPv4
  • Protocol : TCP
  • Destination : WAN address
  • Destination port range : HTTP (80)
  • Redirect target IP : Adress or Alias - 192.168.200.2
  • Redirect target port : HTTP

Ce qui donne :

Suite à la mise en place de cette règle de NAT, une machine située à l'extérieur du réseau de notre Lab (côté WAN, donc votre machine physique, par exemple) doit pouvoir accéder au serveur Web ! Dans le navigateur, il faut indiquer l'adresse IP de l'interface WAN du Pfsense et grâce à la règle de NAT, le flux sera redirigé vers le serveur Web.

Ci-dessous, nous pouvons voir que j'ai bien accès à la page par défaut du serveur web IIS.

VIII. Conclusion

Nous arrivons à la fin de ce tutoriel dans lequel nous avons vu comment mettre en place un firewall virtuel avec VMWare Workstation Pro sur un environnement de Lab. Ensuite, nous avons configuré pfSense, les règles de firewall et de NAT afin de rendre disponible le serveur Web en DMZ depuis l'extérieur.

N'hésitez pas à partager vos remarques et questions en commentaire, et vous pouvez regarder la vidéo YouTube sur le même sujet réalisée par Florian 🙂 !

The post Comment installer pfSense dans VMWare Workstation pour créer un lab virtuel ? first appeared on IT-Connect.

❌
❌