PFSENSE
- Installation de PFSENSE sur PROXMOX
- Augmenter la bande passante de pfsense
- Mise en place du PAT sur Pfsense
- Mise en place de WIREGUARD
- PfSense : ajouter et configurer un VPN-SSL avec OpenVPN
- Authentification AD sur pfsense
- Configuration de openVPN
- Installation Suricata sur Pfsense
Installation de PFSENSE sur PROXMOX
Prérequis:
- Avoir PROXMOX installé
- Avoir l'ISO de Pfsense (https://www.pfsense.org/download/)
- Proxmox doit avoir accès à internet depuis proxmox
Création de la VM:
- Créer la VM
- Paramètres généraux
- Os
- La partie système peut être passée
- Disque
- CPU
- RAM peut être laissée à 2048 (2Go)
- Réseau doit être laissé sur vmbr0 car c'est grâce a cette interface que le firewall aura accès à internet
- Ne pas démarrer la machine à la fin de l'installation
- Ajouter une carte réseau à la VM
Premier démarrage:
- Démarrage de la VM
- Se rendre sur la console
- Attendre que l'ISO boot
- Accepter le contrat de licence
- Installer Pfsense
- Attendre la fin de l'installation
Paramétrage du réseau:
- Sélectionner l'interface WAN, comprendre l'interface connecter à vmbr0
- Sélectionner l'interface LAN, comprendre l'interface LAN (vmbr1 pour moi)
- Valider
- Paramétrer les IPs des deux interfaces, pour moi la WAN est en DHCP donc pas besoin de la configurer pour moi
Il vous suffit d'accéder à pfsense sur l'interface WAN.
Si ça ne fonctionne pas il faudra alors désactiver le firewall:
Sur la console:pfctl -d
User: admin
mot de passe: pfsense
Augmenter la bande passante de pfsense
Paramétrer le firewall
Voila la bande passante devrait être augmentée.
Mise en place du PAT sur Pfsense
Dans ce tutoriel nous allons mettre en place le PAT (port address translation). Ce mécanisme permet de transférer les requêtes émise vers une interface ou une IP vers une autres interface ou IP.
On pourra par exemple accéder à une machine en SSH (port 22) qui se trouve sur le réseau LAN en attaquent directement l'interface WAN.
Schéma qui nous servira d'exemple
Mise en place du PAT
- Accès au paramètre NAT
- On arrive sur la page port forwardc'est la bonne page
- Ajouter un port forward
- Paramétrage de l'IP de redirection
- Appliquer les changements
- Tester la connexion
❯ ssh -o IdentitiesOnly=yes root@192.168.1.112 -i .ssh/id_ed25519_new_kvega Linux adm-front-01 6.8.12-1-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-1 (2024-08-05T16:17Z) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Sep 18 08:21:30 2024 root@adm-front-01:~#La connexion est réussi, le PAT est bien mis en place.
Mise en place de WIREGUARD
Prérequis:
- Avoir une connexion internet (ping 8.8.8.8 et résolution de goolge.fr)
- Avoir installé pfsense
Installation du paquet Wireguard:
- Se rendre dans la partie Package Manager
- Aller dans la section paquet disponible
- Chercher et installer WIREGUARD
- Confirmer
- Attendre l'installation
Paramétrage de Wireguard:
- Paramétrer Wireguard
- Ajouter un tunnel
- Mettre une description, le port que l'on souhaite utiliser et générer un paire de clé. Attention il faut garder la clé publique.
- Paramétrer la partie réseau mettre un réseau qui n'est pas dans l'infrastructure actuelle
- Sauvegarder le tunnel et passer au settings
- Activer Wireguard
- Installation du paquet pour la génération de la paire de clé (Sur un Linux)
apt install wireguard umask 077 wg genkey > privatekey wg pubkey < privatekey > publickey - Démarrage du client WIREGUARD (Windows) et ajouter un nouveau tunnel
- Ajouter un tunnel vide
- Ajouter la configuration
[Interface] # Adresse IP du serveur à l'intérieur du VPN Address = 172.16.100.2/30 #Mon adresse IP # Clef privée du serveur PrivateKey = uAcjoRTjjV1/3D3cf9SR34RZKVjz6Jk8TJPqC6C70Uo= # Port sur lequel le serveur écoute ListenPort = 51820 # DNS DNS = 172.16.1.62, 1.1.1.1 [Peer] # Clef publique du client (Pfsense) PublicKey = 5GZYrXuyqDwA/GZBK3pUmKoLm0I3RSbqGaK0mFEG7CA= # Adresse IP que le client peut utiliser à l'intérieur du VPN AllowedIPs = 0.0.0.0/0 #Ip du serveur distant Endpoint = 192.168.1.112:51820 PersistentKeepalive = 15 - Passer à la partie Pfsense (ajouter un pair)
- Appliquer les changements
- Activer le VPN (Windows)
- Mettre en place un Régle de pare feu sur l'interface WAN
- Vérifier que le VPN est bien connecté
- Nous aurions pu aussi dans le configuration du client WIREGUARD spécifier les réseau auxquels Ont peut se connecter car en l'état actuel les routes ajoutées sont :
Exemple de configuration que l'on pouvait mettre en place
[Interface]
# Adresse IP du serveur à l'intérieur du VPN
Address = 172.16.100.2/30 #Mon adresse IP
# Clef privée du serveur
## Mon adresse IP privée
PrivateKey = uAcjoRTjjV1/3D3cf9SR34RZKVjz6Jk8TJPqC6C70Uo=
# Port sur lequel le serveur écoute
ListenPort = 51820
[Peer]
# Clef publique du client (Pfsense)
PublicKey = 5GZYrXuyqDwA/GZBK3pUmKoLm0I3RSbqGaK0mFEG7CA=
# Adresse IP que le client peut utiliser à l'intérieur du VPN
AllowedIPs = 172.16.1.0/26
#Ip du serveur distant
Endpoint = 192.168.1.112:51820
PfSense : ajouter et configurer un VPN-SSL avec OpenVPN
Pour commencer nous allons créer une autorité de certification
Sur PfSense
System -> Certificates
On va créer notre Authorites -> cliquer sur "Add"
On devra renseigner :
-> Le descriptive name
-> Et le pays + ville
Vous devriez avoir un certificat créée.
Ensuite, on va créer le certificat de serveur que l'ont va signer avec notre Authorites.
On renseigne :
-> Le description name
-> Le certificat d'autorité sera celui que l'ont vient de créer (il s'add automatiquement "normalement")
-> Le common name (CN)
-> On renseigne encore pays + ville
Pour finir :
-> Le type de certificat -> server certificate
-> Alternative name -> FQDN or Hostname
-> Type -> megaproduction.local
Le certificat devrait apparaitre comme ceci :
Maintenant on va pouvoir créer un certificat utilisateur :
On clique sur "Add/Sign"
Comme pour le certificat serveur, on doit renseigner quelques infos :
-> Descriptive name "ADMIN-LDAP"
-> Le certificat d'autorité sera celui que l'ont vient de créer (il s'add automatiquement "normalement")
-> Common Name (CN) "megaproduction.local"
-> Pays + Ville
Pour finir :
-> Le type de certificat -> user certificate
-> Alternative name -> FQDN or Hostname
-> Type -> megaproduction.local
Voici le certificat utilisateur :
Il nous reste plus qu'à configurer OpenVPN.
Authentification AD sur pfsense
Prérequis
- Avoir Pfsense installé
- Avoir un Active Directory fonctionnel
- Avoir mis en tant que DNS principal sur Pfsense votre Active Directory
Préparation
Il vous faudra ici créer une OU, un groupe et un utilisateur spécifique afin de lié Pfsense à l'AD. Je m'explique, l'utilisateur créé nous permettra de lister les utilisateurs d'un ou plusieurs groupe AD.
Mise en place
Préparation des groupe active directory
Voici l’arborescence de mon Active Directory
- Créer un groupe GG_users_pfsense dans l'OU CONNECTEURS
- Créer un utilisateur bind_pfsense et le mettre dans le groupe GG_users_pfsense
Préparation de Pfsense
- Aller dans les paramètres utilisateurs
- Ajouter un serveur d'authentification ( Ne pas faire save à la fin)
- Choisir le container d'authentification
- Sauvegarder la configuration.
- Tester l'authentification
Mise en place de l'authentification
- Paramétrer le groupe
- Une fois le groupe créé lui donner les bon privilèges
- Sauvegarder la configuration
- Mettre en place l'authentification générale via l'Active Directory
- tester
Configuration de openVPN
Quand le pfsense est configuré il ne vous reste plus qu'à exporter votre config vers OpenVPN (dans notre cas)
Accéder au pfsense
VPN -> openVPN
Client export (scroll en bas de la page)
Cliquer sur l'export (Most Clients)
Une foi la configuration téléchargée
DL OpenVPN
https://openvpn.net/community-downloads/
Se rendre sur openVPN
Importer la config (Il ne vous reste plus qu'à declarer NDC/MDP)
Vous pouvez désormais vous connecter au tunnel VPN
On peut maintenant accéder aux services en résolvent le nom de domaine par exemple pour acceder a GLPI on mentionnera le nom de la machine.magaproduction.local
http://glpi-front-01.megaproduction.local/
Installation Suricata sur Pfsense
Introduction :
Pour assurer la sécurité d’un réseau, vous pouvez déployer des systèmes IDS ou IPS.
Il est recommandé de commencer par configurer un système en mode IDS avant de le transformer en système IPS. Activer Suricata en mode IPS dès le départ pourrait être déroutant. Il est conseillé d’observer d’abord ce qui se passe sur le réseau afin d’éviter de générer trop d’alertes et de blocages faux positifs.
IDS (Intrusion Detection System) et IPS (Intrusion Prevention System) sont des systèmes de sécurité réseau conçus pour détecter et gérer les menaces.
- IDS (Système de Détection d'Intrusions) : Il surveille le trafic réseau et signale les activités suspectes sans les bloquer. Il est principalement utilisé pour analyser et alerter en cas de tentative d'attaque.
- IPS (Système de Prévention d'Intrusions) : Il agit comme un IDS, mais en plus, il peut bloquer automatiquement les menaces détectées afin de protéger le réseau en temps réel.
Ces systèmes sont essentiels pour améliorer la sécurité en détectant ou empêchant les intrusions malveillantes avant qu'elles n'affectent les systèmes informatiques.
Installation et configuration de Suricata en mode IDS
Suricata, un système IDS/IPS, peut être installé en tant que package autonome sans pfSense, mais il est particulièrement utile lorsqu’il est utilisé avec une installation de pare-feu/routeur.
Installation sous pfSense
- Accédez à System > Package Manager > Available Packages.
- Recherchez Suricata dans la liste des paquets disponibles.
- Cliquez sur Installer et attendez la fin du processus.
Une fois installé, Suricata peut être configuré en mode IDS pour détecter les menaces sans bloquer automatiquement le trafic.
Après l’installation, la page de configuration de Suricata est accessible via le menu Services.
Configuration initiale
-
Accédez à Services > Suricata.
-
Commencez par les Global Settings (paramètres globaux).
-
Cochez les options suivantes :
-
✅ Install ETOpen Emerging Threats rules (Installer les règles ETOpen Emerging Threats).
-
✅ Hide Deprecated Rules Categories (Masquer les catégories de règles obsolètes).
-
Cela permet d’activer un ensemble de règles de détection des menaces et de masquer celles qui ne sont plus pertinentes.
Ensuite, dans les paramètres globaux :
-
Sélectionnez la fréquence de mise à jour dans le menu déroulant "Update Interval".
-
Je recommande de choisir "1 DAY" (1 jour) pour des mises à jour régulières des règles de détection.
-
-
Activez l’option "Live Rule Swap on Update" (Remplacement en direct des règles lors de la mise à jour).
-
✅ Cette option permet de recharger les règles sans redémarrer complètement le service, évitant ainsi une interruption du trafic.
-
Pour "Remove Blocked Hosts Interval", choisissez une durée entre 6 et 24 heures, selon votre système. Même si vous ne démarrez pas en mode IPS, configurez cette option dès le début pour éviter d’avoir à y revenir plus tard.
Ensuite, allez dans l’onglet Updates et forcez le téléchargement des règles. Cela ne se fait pas toujours automatiquement, donc dès que possible, cliquez sur Update.
⚠ Si tu rencontres des problèmes liés à des paquets obsolètes, la meilleure solution est de mettre à jour PfSense en premier.
Pour la configuration des interfaces :
-
Va dans l’onglet Interfaces.
-
Clique sur Ajouter une interface.
-
Active Suricata sur l’interface souhaitée.
-
Configure le mode d'inspection (mode en ligne ou mode hérité).
-
Configure les catégories de règles et les options de journalisation.
Tu peux tester différentes options ici pour TLS, file-store et packet log.
À part TLS, les autres nécessitent beaucoup d’espace disque sur un réseau très actif. Pense donc à allouer suffisamment de stockage.
Il y a une autre chose à configurer dans cette section : le Detect-Engine Profile. Je recommande de le mettre sur High plutôt que le réglage par défaut Medium.
Pour l’instant, on ne bloque pas les attaquants. On reste en mode IDS (détection) plutôt qu’en IPS (prévention).
Pour les tests, je recommande d’activer les catégories de règles "3coresec", "compromised" et "scan".
Une fois cela fait :
-
Va dans l’onglet Interfaces et redémarre Suricata sur l’interface concernée.
-
Si Suricata ne démarre pas, va dans l’onglet Logs View et consulte suricata.log pour voir les erreurs.
-
La plupart du temps, le problème vient d’un conflit entre la taille de la mémoire et la configuration dans l’onglet Flow/Stream (mais ça, c’est un sujet à part).
Activation du mode IPS
Pour préparer le mode de prévention, commence par aller dans l’onglet Alerts et examine les journaux pendant un certain temps. Selon le contexte, cela peut prendre un jour à un mois pour bien comprendre ce qui se passe sur ton ou tes réseaux.
-
Pour les réseaux d’entreprise, le trafic sortant est généralement plus intéressant à analyser que le trafic entrant.
-
Pour les fournisseurs de services, c’est l’inverse : le trafic entrant est celui à surveiller en priorité.
Il est important de noter que le package Suricata de pfSense ajoute automatiquement à une pass list (liste d’exclusion) les adresses du réseau local, les adresses des interfaces et même les sous-réseaux des tunnels pour éviter de les bloquer.
Si tu souhaites bloquer certaines adresses internes, pense à vérifier cette liste par défaut ou à créer ta propre pass list.
Une fois que tu as bien analysé le trafic de ton réseau, y compris le trafic entrant, il est temps d’activer le mode de blocage.
➡️ Va dans les paramètres de l’interface et coche l’option "Block Offenders" pour activer le blocage des menaces.
Préférences pour le mode IPS
-
Choix du mode IPS : "Legacy Mode"
-
Je recommande de sélectionner "Legacy Mode", car il copie les paquets au lieu de les intercepter entre la carte réseau (NIC) et le système d’exploitation.
-
C’est plus simple pour commencer, car cela demande moins de configuration par rapport au mode "Inline Mode".
-
-
Blocage basé sur l’adresse source ("SRC")
-
Dans les paramètres "Which IP to Block", je préfère bloquer uniquement les adresses sources ("SRC").
-
Pour le trafic sortant, l’adresse source sera une adresse locale, mais elle ne sera pas bloquée car elle est présente dans la pass list du réseau domestique.
-
-
Adaptation selon le réseau
-
Le choix de bloquer les adresses source ou destination dépend du type de trafic sur ton réseau :
-
Si tu as plus de trafic sortant, envisage de bloquer les adresses cibles.
-
Certains recommandent de bloquer les adresses source et destination, mais ce n’est pas toujours adapté à tous les cas d’usage.
-
-
Analyse des menaces
-
Redémarrage et observation
-
Après avoir enregistré la configuration, redémarre le service Suricata sur l’interface concernée.
-
Attends quelques minutes pour observer l’activité du réseau.
-
-
Surveillance des scans et tentatives d’exploration
-
Les adresses IPv4 publiques sont bien connues et scannées en permanence.
-
Ne sois pas surpris si, en quelques minutes, des crawlers ou des scripts automatisés commencent à explorer ton adresse IP.
-
Même une nouvelle adresse publique sera rapidement détectée et scannée.
-
-
Nombre de menaces détectées
-
En général, avec Suricata actif, on observe entre 50 et 500 adresses IP publiques bloquées par jour.
-
Sur un réseau domestique ou de bureau, tu verras surtout du trafic lié aux mises à jour et aux connexions des appareils.
-
Pour les grandes entreprises, le trafic sera beaucoup plus varié et nécessitera une analyse plus approfondie (ce qui sera abordé plus tard).
-