PFSENSE

Installation de PFSENSE sur PROXMOX

Prérequis:

Création de la VM:

  1. Créer la VM

    image.png

  2. Paramètres généraux

    image.png

  3. Os

    image.png

  4. La partie système peut être passée
  5. Disque

    image.png

  6. CPU

    image.png

  7. RAM peut être laissée à 2048 (2Go)
  8. Réseau doit être laissé sur vmbr0 car c'est grâce a cette interface que le firewall aura accès à internet

    image.png


  9. Ne pas démarrer la machine à la fin de l'installation

    image.png

  10. Ajouter une carte réseau à la VM

    image.png

    image.png

Premier démarrage:

  1. Démarrage de la VM

    image.png

  2. Se rendre sur la console

    image.png

  3. Attendre que l'ISO boot
  4. Accepter le contrat de licence

    image.png

  5. Installer Pfsense

    image.png

    image.png

    image.png

    image.png

    image.png

    image.png

  6. Attendre la fin de l'installation

Paramétrage du réseau:

  1. Sélectionner l'interface WAN, comprendre l'interface connecter à vmbr0

    image.png

  2. Sélectionner l'interface LAN, comprendre l'interface LAN (vmbr1 pour moi)

    image.png

  3. Valider

    image.png

  4. Paramétrer les IPs des deux interfaces, pour moi la WAN est en DHCP donc pas besoin de la configurer pour moi
    • Paramétrage de l'interface LAN

      image.png

      image.png

      image.png

      image.png

      image.png

      image.png

    • Le serveur pfsense est installé

      image.png

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

image.png

image.png

image.png

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

image.png

Mise en place du PAT

  1. Accès au paramètre NAT

    image.png

  2. On arrive sur la page port forwardc'est la bonne page
  3. Ajouter un port forward

    image.png

  4. Paramétrage de l'IP de redirection

    image.png

  5. Appliquer les changements

    image.png

  6. 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:

Installation du paquet Wireguard:

  1. Se rendre dans la partie Package Manager
    image.png
  2. Aller dans la section paquet disponible
    image.png
  3. Chercher et installer WIREGUARD
    image.png
  4. Confirmer
    image.png
  5. Attendre l'installation
    image.png

Paramétrage de Wireguard:

  1. Paramétrer Wireguard
    image.png
  2. Ajouter un tunnel
    image.png
  3. 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.
    image.png
  4. Paramétrer la partie réseau mettre un réseau qui n'est pas dans l'infrastructure actuelle
    image.png
  5. Sauvegarder le tunnel et passer au settings
    image.png
  6. Activer Wireguard
    image.png
  7. 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
  8. Démarrage du client WIREGUARD (Windows) et ajouter un nouveau tunnel
  9. Ajouter un tunnel vide

    image.png

  10. 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

    image.png


  11. Passer à la partie Pfsense (ajouter un pair)


    image.png
    image.png

  12. Appliquer les changements


    image.png

  13. Activer le VPN (Windows)


    image.png

  14. Mettre en place un Régle de pare feu sur l'interface WAN

    image.png

  15. Vérifier que le VPN est bien connecté


    image.png
    image.png

  16. 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 :

image.png

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 

Capture d’écran 2024-12-17 à 11.32.34.png

On va créer notre Authorites -> cliquer sur "Add"

Capture d’écran 2024-12-17 à 11.33.18.png

On devra renseigner :
-> Le descriptive name
-> Et le pays + ville

Capture d’écran 2024-12-17 à 11.36.55.png

Capture d’écran 2024-12-17 à 11.37.13.png

Capture d’écran 2024-12-17 à 11.38.08.png
On "Save"

Capture d’écran 2024-12-17 à 11.43.53.png
Vous devriez avoir un certificat créée.

Ensuite, on va créer le certificat de serveur que l'ont va signer avec notre Authorites.

Capture d’écran 2024-12-17 à 11.45.50.png
Cliquer sur "Add/Sign"

Capture d’écran 2024-12-17 à 11.49.30.png
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

Capture d’écran 2024-12-17 à 11.51.54.png

Pour finir :
-> Le type de certificat -> server certificate 
-> Alternative name -> FQDN or Hostname 
-> Type -> megaproduction.local

Capture d’écran 2024-12-17 à 11.53.14.png

Le certificat devrait apparaitre comme ceci :

Capture d’écran 2024-12-17 à 11.56.28.png

Maintenant on va pouvoir créer un certificat utilisateur : 

Capture d’écran 2024-12-17 à 11.45.50.png

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 

Capture d’écran 2024-12-17 à 12.03.29.png

Capture d’écran 2024-12-17 à 12.01.01.png
Pour finir :
-> Le type de certificat -> user certificate 
-> Alternative name -> FQDN or Hostname 
-> Type -> megaproduction.local

Capture d’écran 2024-12-17 à 12.01.29.png

Voici le certificat utilisateur :

Capture d’écran 2024-12-17 à 12.16.19.png

Il nous reste plus qu'à configurer OpenVPN.

Authentification AD sur pfsense

Prérequis

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

image.png

  1.  Créer un groupe GG_users_pfsense dans l'OU CONNECTEURS
  2. Créer un utilisateur bind_pfsense et le mettre dans le groupe GG_users_pfsense

Préparation de Pfsense

  1. Aller dans les paramètres utilisateurs

    image.png


  2. Ajouter un serveur d'authentification ( Ne pas faire save à la fin)

    image.png

    image.png

    image.png

  3. Choisir le container d'authentification

    image.png

  4. Sauvegarder la configuration.
  5. Tester l'authentification

    image.png

    image.png

Mise en place de l'authentification

  1. Paramétrer le groupe
    image.png

    image.png

    image.png

  2. Une fois le groupe créé lui donner les bon privilèges

    image.png

    image.png

    image.png

  3. Sauvegarder la configuration
  4. Mettre en place l'authentification générale via l'Active Directory

    image.png

  5. 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

image.png Client export (scroll en bas de la page)

image.pngCliquer sur l'export (Most Clients)


Une foi la configuration téléchargée

DL OpenVPN

https://openvpn.net/community-downloads/

Se rendre sur openVPN

image.png

Importer la config (Il ne vous reste plus qu'à declarer NDC/MDP)

Une erreur lors du chargement de la config peut survenir, il vous suffit de l'ajouter à la main grace au chemin.image.png

image.png

Vous pouvez désormais vous connecter au tunnel VPN

Capture d’écran 2024-12-11 à 10.52.11.png

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/

Capture d’écran 2024-12-11 à 10.55.31.png

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.

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

  1. Accédez à System > Package Manager > Available Packages.
  2. Recherchez Suricata dans la liste des paquets disponibles.
  3. 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.

sr1.png

Après l’installation, la page de configuration de Suricata est accessible via le menu Services.

Configuration initiale
  1. Accédez à Services > Suricata.

  2. Commencez par les Global Settings (paramètres globaux).

  3. 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.

sr2.png

Ensuite, dans les paramètres globaux :

  1. 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.

  2. 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.

sr3.png

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.

sr4.png

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 :

  1. Va dans l’onglet Interfaces.

  2. Clique sur Ajouter une interface.

  3. Active Suricata sur l’interface souhaitée.

  4. Configure le mode d'inspection (mode en ligne ou mode hérité).

  5. Configure les catégories de règles et les options de journalisation.

sr5.pngss

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 :

  1. Va dans l’onglet Interfaces et redémarre Suricata sur l’interface concernée.

  2. Si Suricata ne démarre pas, va dans l’onglet Logs View et consulte suricata.log pour voir les erreurs.

  3. 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.

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.

sr6.png

Préférences pour le mode IPS

  1. 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".

  2. 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.

  3. 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

  1. 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.

  2. 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.

  3. 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).