pfSense
- 1. Installation et configuration initiale
- 2. Configuration des interfaces
- 3. Regles de firewall
- 4. NAT (Network Address Translation)
- 5. DMZ (Zone Demilitarisee)
- 6. HAProxy
- 7. OpenVPN
- 8. Configuration LDAP
- 9. Spanning Tree (STP)
- 10. Trunk et VLANs
- 11. Services courants
- 12. Haute disponibilite (CARP)
- 13. Monitoring et logs
- 14. Sauvegarde et restauration
- 15. Depannage
1. Installation et configuration initiale
1.1 Telechargement de l'ISO
Rendez-vous sur le site officiel https://www.pfsense.org/download/ pour telecharger l'image d'installation. Choisissez l'architecture AMD64 et le format USB Memstick Installer (ou ISO pour une VM).
1.2 Creation du support d'installation
- Rufus (Windows) : Selectionnez l'image, mode DD Image, lancez l'ecriture.
- Etcher (Windows/Mac/Linux) : Selectionnez l'image, choisissez la cle USB, flashez.
- Linux CLI :
dd if=pfSense-CE-memstick-*.img of=/dev/sdX bs=1M status=progress
1.3 Installation pas a pas
- Bootez sur la cle USB ou montez l'ISO dans la VM
- Acceptez les conditions d'utilisation
- Selectionnez Install pfSense
- Choisissez la disposition clavier (French pour AZERTY si besoin)
- Selectionnez le partitionnement : Auto (ZFS) recommande ou Auto (UFS) pour un disque simple
- Selectionnez le disque cible
- Patientez pendant l'installation puis rebootez
1.4 Configuration console initiale
Au premier demarrage, pfSense affiche un menu console. Il detecte les interfaces reseau et demande leur assignation :
Do VLANs need to be set up first? n
Enter the WAN interface name: em0 (ou vtnet0, igb0 selon le materiel)
Enter the LAN interface name: em1 (ou vtnet1, igb1)
Enter the Optional 1 interface name: (laisser vide ou ajouter si besoin)
Do you want to proceed? y
Menu console disponible apres l'assignation :
0) Logout (SSH only) 9) pfTop
1) Assign Interfaces 10) Filter Logs
2) Set interface(s) IP address 11) Restart webConfigurator
3) Reset webConfigurator password 12) PHP shell + pfSense tools
4) Reset to factory defaults 13) Update from console
5) Reboot system 14) Disable Secure Shell (sshd)
6) Halt system 15) Restore recent configuration
7) Ping host 16) Restart PHP-FPM
8) Shell
1.5 Configuration IP du LAN
Par defaut, le LAN est configure sur 192.168.1.1/24. Pour modifier :
# Depuis le menu console, choisir l'option 2
Enter the number of the interface to configure: 2 (LAN)
Enter the new LAN IPv4 address: 192.168.1.1
Enter the new LAN IPv4 subnet bit count: 24
For a WAN, enter the new LAN IPv4 upstream gateway: (laisser vide pour LAN)
Enter the new LAN IPv6 address: (laisser vide ou configurer)
Do you want to enable the DHCP server on LAN? y
Enter the start address of the IPv4 client address range: 192.168.1.100
Enter the end address of the IPv4 client address range: 192.168.1.254
Do you want to revert to HTTP as the webConfigurator protocol? n
1.6 Wizard de configuration initiale (WebGUI)
Connectez-vous a l'interface web depuis un poste sur le LAN :
https://192.168.1.1
Utilisateur : admin
Mot de passe : pfsense
Le wizard vous guide a travers :
- General Information : Hostname, domaine, serveurs DNS
- Time Server : Fuseau horaire (ex: America/Toronto ou Europe/Paris)
- WAN Configuration : DHCP, IP statique ou PPPoE selon votre FAI
- LAN Configuration : Adresse IP du LAN
- Admin Password : Changez imperativement le mot de passe par defaut
- Reload : Appliquer la configuration
pfsense) lors du wizard initial. Un firewall avec les identifiants par defaut est une faille de securite critique.
1.7 Tableau de bord (Dashboard)
Le tableau de bord est personnalisable via le bouton + en haut. Widgets recommandes :
- System Information : Version, uptime, CPU, RAM
- Interfaces : Etat des interfaces reseau
- Gateways : Etat des passerelles
- Traffic Graphs : Graphes de trafic en temps reel
- Services Status : Etat des services actifs
- OpenVPN : Connexions VPN actives
2. Configuration des interfaces
2.1 Assignation des interfaces
Navigation : Interfaces > Assignments
Cette page permet d'assigner les interfaces physiques (ou virtuelles) a des roles logiques :
| Interface logique | Role | Exemple physique |
|---|---|---|
WAN | Connexion Internet (reseau non fiable) | em0, igb0, vtnet0 |
LAN | Reseau local (reseau fiable) | em1, igb1, vtnet1 |
OPT1 | Interface optionnelle (DMZ, Wi-Fi, etc.) | em2, igb2, vtnet2 |
OPT2 | Interface optionnelle supplementaire | em3, igb3, vtnet3 |
Pour ajouter une interface, selectionnez le port physique dans le menu deroulant et cliquez sur + Add.
2.2 Configuration de l'interface WAN
Navigation : Interfaces > WAN
- IPv4 Configuration Type : DHCP (automatique) ou Static IPv4 (IP fixe)
- IPv6 Configuration Type : None, DHCP6, SLAAC, Static IPv6
- MAC Address : Optionnel, pour cloner une adresse MAC (spoofing MAC)
- Block private networks : Cocher pour bloquer les plages RFC1918 sur le WAN
- Block bogon networks : Cocher pour bloquer les adresses non routables
Configuration WAN en IP statique :
IPv4 Configuration Type : Static IPv4
IPv4 Address : 203.0.113.10 / 24
IPv4 Upstream Gateway : 203.0.113.1 (creer via System > Routing > Gateways)
2.3 Configuration de l'interface LAN
Navigation : Interfaces > LAN
IPv4 Configuration Type : Static IPv4
IPv4 Address : 192.168.1.1 / 24
IPv4 Upstream Gateway : None (c'est le firewall qui est la gateway du LAN)
2.4 Ajouter une interface OPT (DMZ)
Navigation : Interfaces > Assignments puis cliquer sur l'onglet de l'interface OPT1.
- Cocher Enable interface
- Renommer la description en DMZ
- IPv4 Configuration Type : Static IPv4
- IPv4 Address :
10.0.0.1/24 - Sauvegarder et appliquer
2.5 Configuration des VLANs
Navigation : Interfaces > Assignments > VLANs
- Cliquer sur + Add
- Parent Interface : Selectionnez l'interface physique (ex: em1)
- VLAN Tag : Numero du VLAN (ex: 10, 20, 30)
- VLAN Priority : Laisser vide (defaut)
- Description : Nom descriptif (ex: VLAN_SERVEURS)
- Sauvegarder
Ensuite, retournez dans Interfaces > Assignments et assignez le VLAN cree a une nouvelle interface OPT.
3. Regles de firewall
3.1 Concepts fondamentaux
Le firewall pfSense fonctionne selon ces principes :
| Concept | Description |
|---|---|
| Stateful | pfSense garde en memoire les connexions etablies. Une regle qui autorise le trafic sortant autorise automatiquement les reponses entrantes associees. |
| First match | Les regles sont evaluees de haut en bas. La premiere regle qui correspond est appliquee. L'ordre est donc critique. |
| Implicit deny | Par defaut, tout trafic qui ne correspond a aucune regle est bloque (deny implicite en fin de liste). |
| Per-interface | Les regles s'appliquent sur une interface specifique, en direction entrante (inbound) par rapport a cette interface. |
| Anti-lockout | Une regle speciale sur le LAN empeche de se bloquer soi-meme (desactivable dans System > Advanced). |
3.2 Regles sur l'interface WAN
Navigation : Firewall > Rules > WAN
Par defaut, le WAN bloque tout le trafic entrant. On ajoute des regles uniquement pour les services exposes :
Exemple : Autoriser HTTP/HTTPS entrant vers un serveur web
| Champ | Valeur |
|---|---|
| Action | Pass |
| Interface | WAN |
| Protocol | TCP |
| Source | Any |
| Destination | WAN Address |
| Destination Port Range | HTTP (80) / HTTPS (443) |
| Description | Autoriser HTTP/HTTPS entrant |
3.3 Regles sur l'interface LAN
Navigation : Firewall > Rules > LAN
Par defaut, le LAN a une regle qui autorise tout le trafic sortant. Vous pouvez la restreindre :
Exemple : Autoriser uniquement DNS, HTTP, HTTPS depuis le LAN
| Ordre | Action | Protocol | Source | Destination | Port | Description |
|---|---|---|---|---|---|---|
| 1 | Pass | TCP/UDP | LAN net | Any | 53 (DNS) | Autoriser DNS |
| 2 | Pass | TCP | LAN net | Any | 80, 443 | Autoriser HTTP/HTTPS |
| 3 | Pass | ICMP | LAN net | Any | * | Autoriser Ping |
| 4 | Block | Any | LAN net | Any | * | Bloquer tout le reste |
3.4 Alias
Navigation : Firewall > Aliases
Les alias permettent de regrouper des IP, reseaux ou ports sous un nom reutilisable dans les regles :
| Type | Nom | Valeurs | Usage |
|---|---|---|---|
| Host(s) | Serveurs_Web | 10.0.0.10, 10.0.0.11 | Groupe de serveurs |
| Network(s) | RFC1918 | 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 | Reseaux prives |
| Port(s) | Ports_Web | 80, 443, 8080, 8443 | Ports HTTP/HTTPS |
| URL Table | Blacklist | URL vers un fichier de blocage | Listes dynamiques |
3.5 Schedules (planification)
Navigation : Firewall > Schedules
Les schedules permettent d'activer des regles uniquement a certaines heures ou certains jours :
- Creer un schedule (ex: Heures_Bureau : Lun-Ven 8h-18h)
- Dans une regle de firewall, selectionnez le schedule dans Advanced Options > Schedule
3.6 Floating Rules
Navigation : Firewall > Rules > Floating
Les floating rules sont des regles speciales qui peuvent s'appliquer a plusieurs interfaces et dans les deux directions (in/out). Elles sont evaluees avant les regles d'interface.
Cas d'usage typiques :
- Bloquer un trafic sur toutes les interfaces en une seule regle
- Appliquer du traffic shaping (QoS)
- Regles de sortie (direction Out)
4. NAT (Network Address Translation)
4.1 Port Forwarding (redirection de port)
Navigation : Firewall > NAT > Port Forward
Le port forwarding redirige le trafic entrant sur le WAN vers un serveur interne.
Exemple : Rediriger le port 443 vers un serveur web interne
| Champ | Valeur |
|---|---|
| Interface | WAN |
| Protocol | TCP |
| Source | Any |
| Destination | WAN Address |
| Destination Port Range | HTTPS (443) |
| Redirect Target IP | 10.0.0.10 |
| Redirect Target Port | 443 |
| Description | HTTPS vers serveur web DMZ |
| Filter rule association | Add associated filter rule |
4.2 NAT 1:1 (un pour un)
Navigation : Firewall > NAT > 1:1
Le NAT 1:1 mappe une adresse IP publique complete vers une adresse IP privee. Tout le trafic destine a l'IP publique est redirige vers l'IP privee.
| Champ | Valeur |
|---|---|
| Interface | WAN |
| External subnet IP | 203.0.113.20 |
| Internal IP | 10.0.0.10 / 32 |
| Destination | Any |
| Description | NAT 1:1 serveur web |
4.3 Outbound NAT
Navigation : Firewall > NAT > Outbound
Le NAT sortant controle comment les adresses internes sont traduites en sortie vers Internet :
| Mode | Description | Usage |
|---|---|---|
| Automatic | pfSense genere automatiquement les regles de NAT sortant | Configuration standard, un seul WAN |
| Hybrid | Regles automatiques + regles manuelles personnalisees | Recommande pour personnaliser sans tout refaire |
| Manual | Uniquement les regles manuelles | Controle total, multi-WAN, VPN |
| Disable | Pas de NAT sortant | pfSense en mode pont (bridge) |
Exemple : Forcer le trafic d'un serveur a sortir avec une IP specifique
En mode Hybrid ou Manual, ajoutez une regle :
| Champ | Valeur |
|---|---|
| Interface | WAN |
| Source | 10.0.0.10 / 32 |
| Destination | Any |
| Translation Address | 203.0.113.20 |
| Description | Sortie serveur web via IP dediee |
4.4 NAT Reflection
Navigation : System > Advanced > Firewall & NAT
Le NAT Reflection permet aux machines internes d'acceder aux services publics heberges derriere pfSense en utilisant l'adresse IP publique (au lieu de l'IP interne).
| Mode | Description |
|---|---|
| Disable | Pas de reflection (defaut) |
| NAT + Proxy | Utilise un proxy pour la reflection. Plus compatible mais plus lent. |
| Pure NAT | Utilise des regles NAT. Meilleure performance, necessite des regles outbound supplementaires. |
5. DMZ (Zone Demilitarisee)
5.1 Architecture DMZ
La DMZ est un reseau isole qui heberge les serveurs accessibles depuis Internet (serveur web, mail, etc.) tout en les separant du LAN :
Internet
|
[WAN] --- pfSense --- [LAN] --- Postes de travail (192.168.1.0/24)
|
[DMZ] --- Serveurs exposes (10.0.0.0/24)
5.2 Creation de l'interface DMZ
- Interfaces > Assignments : Ajouter l'interface physique comme OPT1
- Interfaces > OPT1 :
- Enable : Cocher
- Description :
DMZ - IPv4 Type : Static IPv4
- IPv4 Address :
10.0.0.1/24
- Sauvegarder et appliquer les changements
5.3 Regles de firewall DMZ
Le principe est : le LAN peut acceder a la DMZ, la DMZ ne peut PAS acceder au LAN, la DMZ a un acces Internet limite.
Regles sur l'interface DMZ (Firewall > Rules > DMZ) :
| Ordre | Action | Protocol | Source | Destination | Port | Description |
|---|---|---|---|---|---|---|
| 1 | Block | Any | DMZ net | LAN net | * | Bloquer DMZ vers LAN |
| 2 | Pass | TCP/UDP | DMZ net | Any | 53 | Autoriser DNS sortant |
| 3 | Pass | TCP | DMZ net | Any | 80, 443 | Autoriser HTTP/HTTPS sortant (mises a jour) |
| 4 | Pass | UDP | DMZ net | Any | 123 | Autoriser NTP |
| 5 | Block | Any | DMZ net | Any | * | Bloquer tout le reste |
Regles sur l'interface LAN pour acceder a la DMZ :
| Action | Protocol | Source | Destination | Port | Description |
|---|---|---|---|---|---|
| Pass | TCP | LAN net | DMZ net | 22 | SSH vers DMZ (administration) |
| Pass | TCP | LAN net | DMZ net | 80, 443 | HTTP/HTTPS vers DMZ |
| Pass | ICMP | LAN net | DMZ net | * | Ping vers DMZ |
5.4 Exemple : Serveur web en DMZ
- Serveur web sur
10.0.0.10en DMZ (Apache/Nginx sur le port 443) - Firewall > NAT > Port Forward : Rediriger le port 443 du WAN vers 10.0.0.10:443
- Firewall > Rules > WAN : Regle creee automatiquement (ou manuellement) pour autoriser le trafic
- Firewall > Rules > DMZ : Bloquer tout acces de la DMZ vers le LAN
5.5 Exemple : Serveur mail en DMZ
Ports a rediriger depuis le WAN vers le serveur mail (ex: 10.0.0.20) :
| Port | Protocole | Service |
|---|---|---|
| 25 | TCP | SMTP (reception) |
| 587 | TCP | SMTP Submission (envoi authentifie) |
| 993 | TCP | IMAPS (lecture securisee) |
| 443 | TCP | Webmail (HTTPS) |
6. HAProxy
6.1 Installation du package
Navigation : System > Package Manager > Available Packages
- Rechercher haproxy
- Cliquer sur Install a cote de
haproxy(ouhaproxy-develpour la version de developpement) - Confirmer l'installation
Apres installation, le menu est accessible via Services > HAProxy.
6.2 Configuration globale
Navigation : Services > HAProxy > Settings
- Enable HAProxy : Cocher
- Maximum connections : 1000 (ajuster selon les ressources)
- Internal stats port : 2200 (port pour les statistiques)
- Internal stats refresh rate : 10 secondes
- Syslog host : 127.0.0.1 (pour les logs locaux)
6.3 Configuration des backends (serveurs)
Navigation : Services > HAProxy > Backend
Un backend definit un ou plusieurs serveurs de destination :
Exemple : Backend pour un serveur web unique
| Champ | Valeur |
|---|---|
| Name | backend_web_principal |
| Server list | |
| Name | srv-web01 |
| Address | 10.0.0.10 |
| Port | 443 |
| SSL | Cocher (si le backend est en HTTPS) |
| Health checking | HTTP |
| Health check URI | / |
| Health check HTTP version | HTTP/1.1 |
Exemple : Backend avec load balancing
| Champ | Valeur |
|---|---|
| Name | backend_web_cluster |
| Balance | Round Robin |
| Server list : | |
| srv-web01 | 10.0.0.10:443 |
| srv-web02 | 10.0.0.11:443 |
| srv-web03 | 10.0.0.12:443 |
6.4 Algorithmes de load balancing
| Algorithme | Description | Usage |
|---|---|---|
| Round Robin | Distribution sequentielle entre les serveurs | Serveurs identiques, charge equivalente |
| Least Connections | Envoie vers le serveur ayant le moins de connexions actives | Serveurs de capacites differentes |
| Source | Hash de l'IP source (persistance de session) | Applications avec sessions (sans sticky cookie) |
| URI | Hash de l'URI demandee | Cache distribue |
6.5 Configuration des frontends (ecoute)
Navigation : Services > HAProxy > Frontend
Un frontend definit comment HAProxy ecoute les connexions entrantes :
Exemple : Frontend HTTPS avec SSL offloading
| Champ | Valeur |
|---|---|
| Name | frontend_https |
| Status | Active |
| External address | WAN Address (IPv4) |
| Port | 443 |
| Type | http / https (offloading) |
| SSL Offloading - Certificate | Selectionner le certificat SSL |
| Default backend | backend_web_principal |
6.6 ACLs (routage par nom de domaine)
Les ACLs permettent de router le trafic vers differents backends selon le nom de domaine demande :
Dans le frontend, section Access Control Lists :
| ACL Name | Expression | Value |
|---|---|---|
| acl_site1 | Host matches | www.site1.com |
| acl_site2 | Host matches | www.site2.com |
| acl_api | Path starts with | /api/ |
Section Actions :
| Action | ACL | Backend |
|---|---|---|
| Use Backend | acl_site1 | backend_site1 |
| Use Backend | acl_site2 | backend_site2 |
| Use Backend | acl_api | backend_api |
6.7 SSL Offloading
Le SSL offloading permet a HAProxy de gerer le chiffrement SSL/TLS, dechargeant les serveurs backend :
- Importez votre certificat SSL dans System > Cert Manager > Certificates
- Dans le frontend, selectionnez le type http / https (offloading)
- Selectionnez le certificat dans SSL Offloading > Certificate
- Pour plusieurs certificats (SNI), ajoutez-les dans Additional certificates
6.8 Health checks
Les health checks permettent de verifier que les serveurs backend sont operationnels :
| Type | Description | Configuration |
|---|---|---|
| TCP | Verifie que le port est ouvert | Aucune config supplementaire |
| HTTP | Verifie une reponse HTTP 200 | URI : /health ou / |
| SSL | Verifie la connexion SSL | Avec ou sans verification du certificat |
Parametres importants dans le backend :
- Check interval : 5000 ms (frequence de verification)
- Health fall threshold : 3 (nombre d'echecs avant de declarer le serveur hors service)
- Health rise threshold : 2 (nombre de succes avant de remettre en service)
7. OpenVPN
7.1 Wizard OpenVPN (methode recommandee)
Navigation : VPN > OpenVPN > Wizards
Le wizard simplifie la creation d'un serveur VPN Road Warrior (acces distant) :
- Type of Server : Local User Access
- Certificate Authority : Creer un nouveau CA
- Descriptive name :
VPN-CA - Key length : 2048 ou 4096
- Lifetime : 3650 jours (10 ans)
- Descriptive name :
- Server Certificate : Creer un nouveau certificat serveur
- Descriptive name :
VPN-Server-Cert
- Descriptive name :
- Server Setup :
- Interface : WAN
- Protocol : UDP on IPv4 only
- Local Port : 1194
- Tunnel Network :
10.10.0.0/24 - Local Network :
192.168.1.0/24(reseau LAN accessible via VPN) - Concurrent Connections : 10 (ajuster selon les besoins)
- DNS Server 1 :
192.168.1.1(pfSense)
- Firewall Rules : Cocher les deux options pour creer automatiquement les regles
7.2 Creer les utilisateurs VPN
Navigation : System > User Manager
- Cliquer sur + Add
- Username :
jean.dupont - Password : Mot de passe fort
- Cocher Click to create a user certificate
- Certificate Authority : Selectionner le CA cree precedemment
- Sauvegarder
7.3 Export de la configuration client
Installez le package openvpn-client-export :
- System > Package Manager > Available Packages
- Installer
openvpn-client-export
Navigation : VPN > OpenVPN > Client Export
- Host Name Resolution : Adresse IP publique ou nom DNS du pfSense
- Pour chaque utilisateur, telechargez le fichier de configuration :
| Format | Usage |
|---|---|
| Inline Configurations - Most Clients | Fichier .ovpn universel (Windows, Mac, Linux, Android, iOS) |
| Windows Installer | Installateur Windows avec config integree |
| Viscosity Bundle | Pour le client Viscosity (Mac/Windows) |
7.4 VPN Site-to-Site (pont entre deux pfSense)
Pour connecter deux reseaux distants via un tunnel VPN :
Sur le pfSense serveur (site principal) :
Navigation : VPN > OpenVPN > Servers > + Add
| Champ | Valeur |
|---|---|
| Server Mode | Peer to Peer (Shared Key) |
| Protocol | UDP on IPv4 only |
| Local Port | 1195 (different du VPN Road Warrior) |
| Shared Key | Generer automatiquement (cocher Auto generate) |
| Tunnel Network | 10.10.1.0/30 |
| Remote Network | 192.168.2.0/24 (reseau du site distant) |
Sur le pfSense client (site distant) :
Navigation : VPN > OpenVPN > Clients > + Add
| Champ | Valeur |
|---|---|
| Server Mode | Peer to Peer (Shared Key) |
| Protocol | UDP on IPv4 only |
| Server host or address | IP publique du pfSense serveur |
| Server port | 1195 |
| Shared Key | Coller la cle partagee generee sur le serveur |
| Tunnel Network | 10.10.1.0/30 |
| Remote Network | 192.168.1.0/24 (reseau du site principal) |
7.5 Gestion des certificats
Navigation : System > Cert Manager
| Onglet | Description |
|---|---|
| CAs | Autorites de certification (CA racine pour signer les certificats) |
| Certificates | Certificats serveur et client |
| Certificate Revocation | Listes de revocation (CRL) pour revoquer un certificat compromis |
Pour revoquer l'acces d'un utilisateur VPN :
- Allez dans System > Cert Manager > Certificate Revocation
- Selectionnez le CA concernee puis + Add or Import CRL
- Ajoutez le certificat de l'utilisateur a la CRL
- Dans la configuration du serveur OpenVPN, selectionnez cette CRL
8. Configuration LDAP
8.1 Ajout d'un serveur d'authentification LDAP
Navigation : System > User Manager > Authentication Servers > + Add
Exemple avec Active Directory :
| Champ | Valeur |
|---|---|
| Descriptive name | AD-Principal |
| Type | LDAP |
| Hostname or IP | 192.168.1.50 (IP du controleur de domaine) |
| Port value | 389 (LDAP) ou 636 (LDAPS) |
| Transport | TCP - Standard ou SSL/TLS - Encrypted |
| Protocol version | 3 |
| Search scope | Entire Subtree |
| Base DN | DC=entreprise,DC=local |
| Authentication containers | OU=Utilisateurs,DC=entreprise,DC=local |
| Extended query | Cocher, puis : memberOf=CN=VPN-Users,OU=Groupes,DC=entreprise,DC=local |
| Bind credentials - User DN | CN=svc-pfsense,OU=Services,DC=entreprise,DC=local |
| Bind credentials - Password | Mot de passe du compte de service |
| User naming attribute | samAccountName |
| Group naming attribute | cn |
| Group member attribute | memberOf |
8.2 Groupes LDAP
Navigation : System > User Manager > Groups
Vous pouvez mapper des groupes LDAP/AD avec des privileges pfSense :
- Creer un groupe local avec le meme nom que le groupe AD
- Assigner des privileges au groupe (ex: acces VPN, acces admin)
- Les utilisateurs AD membres de ce groupe heritent automatiquement des privileges
8.3 Integration avec OpenVPN
Pour que le serveur OpenVPN utilise l'authentification LDAP/AD :
Navigation : VPN > OpenVPN > Servers (editer le serveur existant)
- Backend for authentication : Selectionner
AD-Principal
Les utilisateurs pourront alors se connecter au VPN avec leurs identifiants Active Directory.
8.4 Portail captif avec LDAP
Navigation : Services > Captive Portal
- Creer une nouvelle zone (ex:
WiFi_Invite) - Cocher Enable Captive Portal
- Interface : Selectionner l'interface Wi-Fi ou VLAN invite
- Authentication Method : Use an Authentication backend
- Authentication Server : AD-Principal
- Configurer les options supplementaires :
- Idle timeout : 60 minutes
- Hard timeout : 480 minutes (8 heures)
- Concurrent user logins : 1
- Personnaliser la page de connexion (onglet Portal Page Contents) en HTML
- Sauvegarder
Portail-WiFi) et utilisez l'Extended query pour limiter l'acces aux membres de ce groupe uniquement.
9. Spanning Tree (STP)
9.1 Concepts STP
Le Spanning Tree Protocol (STP) empeche les boucles reseau dans les topologies avec des liens redondants. pfSense supporte STP lorsque des interfaces sont configurees en mode bridge.
| Protocole | Standard | Convergence | Description |
|---|---|---|---|
| STP | 802.1D | 30-50 secondes | Version originale, convergence lente |
| RSTP | 802.1w | 1-2 secondes | Version rapide, recommandee |
9.2 Configuration d'un bridge
Navigation : Interfaces > Assignments > Bridges
- Cliquer sur + Add
- Member Interfaces : Selectionner les interfaces a ponter (ex: OPT1 et OPT2)
- Description : Nom descriptif (ex: Bridge_LAN)
9.3 Activation de STP/RSTP sur un bridge
Dans les options avancees du bridge :
| Parametre | Description | Valeur recommandee |
|---|---|---|
| Enable STP/RSTP | Active le protocole Spanning Tree | Cocher |
| Protocol | STP ou RSTP | RSTP (convergence rapide) |
| STP Priority | Priorite du bridge (plus bas = prioritaire) | 32768 (defaut) ou plus bas pour root bridge |
| Forward Delay | Delai avant de passer en forwarding | 15 secondes (defaut STP) |
| Hello Time | Intervalle entre les BPDU | 2 secondes |
| Max Age | Duree de vie maximale des BPDU | 20 secondes |
9.4 Priorite par interface (portfast equivalent)
Pour chaque interface membre du bridge, vous pouvez configurer :
- STP Priority (par interface) : Priorite du port dans le calcul STP
- STP Path Cost : Cout du chemin (plus bas = prefere)
10. Trunk et VLANs
10.1 Concept du trunk 802.1Q
Un trunk est un lien reseau qui transporte le trafic de plusieurs VLANs sur un seul cable physique. Chaque trame est etiquetee (tagged) avec son numero de VLAN.
pfSense (em1 = trunk)
|
| 802.1Q trunk (VLAN 10, 20, 30)
|
Switch gere (port trunk)
|--- Port access VLAN 10 --- Serveurs
|--- Port access VLAN 20 --- Postes de travail
|--- Port access VLAN 30 --- Wi-Fi / Invites
10.2 Creation des VLANs sur pfSense
Navigation : Interfaces > Assignments > VLANs
Creer un VLAN pour chaque reseau logique :
| Parent Interface | VLAN Tag | Description | Reseau |
|---|---|---|---|
| em1 | 10 | VLAN_SERVEURS | 10.10.10.0/24 |
| em1 | 20 | VLAN_POSTES | 10.10.20.0/24 |
| em1 | 30 | VLAN_INVITES | 10.10.30.0/24 |
10.3 Assignation des VLANs aux interfaces
Navigation : Interfaces > Assignments
- Dans le menu deroulant Available network ports, selectionnez
VLAN 10 on em1 - Cliquer sur + Add
- Repeter pour chaque VLAN
- Configurer chaque interface (OPT1, OPT2, OPT3) :
- Activer l'interface
- Renommer (ex: VLAN10_SERVEURS)
- Assigner une IP statique (ex: 10.10.10.1/24)
10.4 Inter-VLAN routing
Par defaut, pfSense route le trafic entre les VLANs. Vous devez creer des regles de firewall pour controler quel VLAN peut communiquer avec quel autre :
Exemple de politique inter-VLAN :
| Source | Destination | Action | Description |
|---|---|---|---|
| VLAN 10 (Serveurs) | VLAN 20 (Postes) | Block | Serveurs ne contactent pas les postes |
| VLAN 20 (Postes) | VLAN 10 (Serveurs) | Pass (ports specifiques) | Postes accedent aux serveurs |
| VLAN 30 (Invites) | VLAN 10, 20 | Block | Invites isoles des autres VLANs |
| VLAN 30 (Invites) | Internet | Pass (80, 443) | Invites ont acces web uniquement |
10.5 DHCP par VLAN
Navigation : Services > DHCP Server
Chaque interface VLAN apparait comme un onglet. Configurez un serveur DHCP independant pour chaque VLAN :
| Parametre | VLAN 10 | VLAN 20 | VLAN 30 |
|---|---|---|---|
| Enable | Oui | Oui | Oui |
| Range | 10.10.10.100 - .200 | 10.10.20.100 - .200 | 10.10.30.100 - .200 |
| DNS Server | 10.10.10.1 | 10.10.20.1 | 10.10.30.1 |
| Gateway | 10.10.10.1 | 10.10.20.1 | 10.10.30.1 |
| Domain | srv.local | corp.local | guest.local |
11. Services courants
11.1 DHCP Server
Navigation : Services > DHCP Server
Le serveur DHCP distribue automatiquement les adresses IP aux equipements du reseau.
Configuration de base :
| Parametre | Description | Exemple |
|---|---|---|
| Enable | Activer le serveur DHCP sur l'interface | Cocher |
| Range | Plage d'adresses distribuees | 192.168.1.100 - 192.168.1.254 |
| DNS Servers | Serveurs DNS fournis aux clients | 192.168.1.1 (pfSense) |
| Gateway | Passerelle par defaut | 192.168.1.1 |
| Domain name | Nom de domaine local | lan.local |
| Default lease time | Duree du bail par defaut | 7200 (2 heures) |
| Max lease time | Duree maximale du bail | 86400 (24 heures) |
Reservations DHCP (Static Mappings) :
En bas de la page DHCP, section DHCP Static Mappings :
- Cliquer sur + Add
- MAC Address :
AA:BB:CC:DD:EE:FF - IP Address :
192.168.1.50 - Hostname :
srv-fichiers - Description : Serveur de fichiers
11.2 DNS Resolver (Unbound)
Navigation : Services > DNS Resolver
Le DNS Resolver (Unbound) est le service DNS recommande. Il effectue des requetes directement aux serveurs racine DNS.
Options principales :
| Parametre | Description | Recommandation |
|---|---|---|
| Enable DNS Resolver | Activer Unbound | Cocher |
| Listen Port | Port d'ecoute | 53 |
| Network Interfaces | Interfaces d'ecoute | All |
| DNSSEC | Validation cryptographique DNS | Cocher |
| DNS Query Forwarding | Transferer les requetes vers les DNS de System > General | Cocher si DNS de l'entreprise |
Host Overrides (split DNS) :
Section Host Overrides en bas de la page. Permet de resoudre un nom de domaine vers une IP interne :
| Host | Domain | IP Address | Description |
|---|---|---|---|
| www | monsite.com | 10.0.0.10 | Serveur web interne |
| monsite.com | 10.0.0.20 | Serveur mail interne | |
| erp | entreprise.local | 192.168.1.60 | Application ERP |
Domain Overrides :
Section Domain Overrides. Permet de rediriger les requetes DNS d'un domaine entier vers un serveur DNS specifique :
Domain : entreprise.local
IP Address : 192.168.1.50 (controleur de domaine AD)
Description : DNS Active Directory
entreprise.local vers le controleur de domaine tout en gerant le DNS Internet lui-meme.
11.3 DNS Forwarder (dnsmasq)
Navigation : Services > DNS Forwarder
Alternative plus legere au DNS Resolver. Il transfere simplement les requetes aux serveurs DNS configures dans System > General Setup. Utile dans les petits environnements.
11.4 NTP Server
Navigation : Services > NTP
pfSense peut servir de serveur NTP pour synchroniser l'heure de tous les equipements du reseau :
- Enable NTP Server : Cocher
- Interface : LAN (et autres interfaces internes)
- Time Servers : Configures dans System > General Setup (ex:
0.pool.ntp.org,1.pool.ntp.org)
Distribuez l'adresse du pfSense comme serveur NTP via DHCP (option NTP Server dans la configuration DHCP).
11.5 SNMP
Navigation : Services > SNMP
Permet la supervision de pfSense depuis un outil de monitoring (Zabbix, Nagios, PRTG, etc.) :
| Parametre | Description | Recommandation |
|---|---|---|
| Enable | Activer le daemon SNMP | Cocher |
| Polling Port | Port d'ecoute | 161 |
| Read Community String | Communaute de lecture | Changer le defaut ! (ex: pfS3nse_R0) |
| System Location | Emplacement physique | Salle serveur, Rack A |
| System Contact | Contact administrateur | admin@entreprise.com |
| Bind Interfaces | Interfaces d'ecoute | LAN uniquement |
public) est un risque de securite. Changez-la immediatement et limitez l'ecoute au LAN.
12. Haute disponibilite (CARP)
12.1 Concept CARP
CARP (Common Address Redundancy Protocol) permet a deux pfSense de fonctionner en paire maitre/esclave (master/backup). En cas de panne du maitre, l'esclave prend automatiquement le relais.
IP virtuelle CARP
192.168.1.1 (VIP)
|
+------------+------------+
| |
pfSense MASTER pfSense BACKUP
192.168.1.2 192.168.1.3
(priorite haute) (priorite basse)
12.2 Prerequis
- Deux pfSense identiques (meme version, memes interfaces)
- Trois adresses IP par interface : une pour le master, une pour le backup, une IP virtuelle CARP
- Un lien reseau dedie pour la synchronisation (recommande)
| Interface | Master | Backup | VIP CARP | Role |
|---|---|---|---|---|
| WAN | 203.0.113.10 | 203.0.113.11 | 203.0.113.1 | IP publique partagee |
| LAN | 192.168.1.2 | 192.168.1.3 | 192.168.1.1 | Gateway du LAN |
| SYNC | 10.0.99.1 | 10.0.99.2 | - | Lien de synchronisation |
12.3 Configuration des IP virtuelles (VIP)
Navigation : Firewall > Virtual IPs > + Add
Sur le pfSense MASTER, creer les VIP CARP :
| Champ | VIP WAN | VIP LAN |
|---|---|---|
| Type | CARP | CARP |
| Interface | WAN | LAN |
| Address | 203.0.113.1 / 24 | 192.168.1.1 / 24 |
| Virtual IP Password | MotDePasseCarp1! | MotDePasseCarp2! |
| VHID Group | 1 | 2 |
| Advertising Frequency - Skew | 0 (master) | 0 (master) |
Sur le pfSense BACKUP, creer les memes VIP avec un Skew plus eleve (ex: 100) pour qu'il soit secondaire.
12.4 Synchronisation des etats (pfsync)
Navigation : System > High Avail. Sync
Le protocole pfsync synchronise la table d'etats du firewall (connexions actives) entre les deux noeuds :
| Parametre | Master | Backup |
|---|---|---|
| Synchronize States | Cocher | Cocher |
| Synchronize Interface | SYNC | SYNC |
| pfsync Synchronize Peer IP | 10.0.99.2 | 10.0.99.1 |
12.5 Synchronisation de la configuration (XMLRPC)
XMLRPC synchronise automatiquement la configuration du master vers le backup :
Sur le pfSense MASTER uniquement :
| Parametre | Valeur |
|---|---|
| Synchronize Config to IP | 10.0.99.2 (IP du backup sur l'interface SYNC) |
| Remote System Username | admin |
| Remote System Password | Mot de passe admin du backup |
Cochez les elements a synchroniser :
- Users and Groups
- Certificates
- Firewall Rules
- Firewall Schedules
- Firewall Aliases
- NAT
- OpenVPN
- DHCP Server
- DNS Resolver / Forwarder
- Virtual IPs (indispensable pour CARP)
13. Monitoring et logs
13.1 Logs systeme
Navigation : Status > System Logs
| Onglet | Contenu |
|---|---|
| System > General | Logs generaux du systeme (demarrage, services, erreurs) |
| Firewall | Paquets bloques/autorises par les regles de firewall |
| DHCP | Attributions DHCP, requetes, conflits |
| DNS Resolver | Requetes DNS, erreurs de resolution |
| OpenVPN | Connexions VPN, authentifications, erreurs |
| Gateway | Etat des passerelles, basculements |
13.2 Filtrage des logs firewall
Navigation : Status > System Logs > Firewall
Utilisez les filtres pour trouver rapidement des evenements specifiques :
- Interface : Filtrer par interface (WAN, LAN, DMZ)
- Action : Pass, Block, Reject
- Source/Destination IP : IP specifique
- Protocol : TCP, UDP, ICMP
- Source/Destination Port : Port specifique
13.3 Packet Capture
Navigation : Diagnostics > Packet Capture
Outil de capture de paquets integre (equivalent de tcpdump) :
| Parametre | Description | Exemple |
|---|---|---|
| Interface | Interface a capturer | WAN |
| Protocol | Filtrer par protocole | TCP |
| Host Address | IP source ou destination | 203.0.113.50 |
| Port | Port source ou destination | 443 |
| Packet Length | Taille max capturee par paquet | 0 (tout) |
| Count | Nombre de paquets a capturer | 100 |
| Level of Detail | Verbosity de l'affichage | Normal |
Vous pouvez telecharger le fichier de capture au format .pcap pour l'analyser dans Wireshark.
13.4 pfTop
Navigation : Diagnostics > pfTop (ou option 9 du menu console)
Affiche en temps reel les connexions actives triees par differents criteres :
- Default (Long) : Vue detaillee des connexions
- Rate : Trie par debit
- Size : Trie par volume de donnees
- Speed : Trie par vitesse
13.5 Graphes RRD
Navigation : Status > Monitoring
Graphes historiques des performances :
- System : CPU, memoire, etats du firewall, temperature
- Traffic : Debit par interface (WAN, LAN, etc.)
- Packets : Paquets par seconde par interface
- Quality : Latence et perte de paquets vers les passerelles
Les graphes sont disponibles sur differentes periodes : 4 heures, 16 heures, 2 jours, 30 jours, 1 an, 4 ans.
13.6 Envoi des logs vers un serveur syslog distant
Navigation : Status > System Logs > Settings
| Parametre | Valeur |
|---|---|
| Enable Remote Logging | Cocher |
| Remote log servers | 192.168.1.60:514 (IP du serveur syslog) |
| Remote Syslog Contents | Cocher les categories souhaitees |
14. Sauvegarde et restauration
14.1 Export de la configuration (XML)
Navigation : Diagnostics > Backup & Restore
- Onglet Backup & Restore
- Backup area : ALL (configuration complete) ou une section specifique
- Skip RRD data : Cocher pour un fichier plus petit (exclut les graphes historiques)
- Encrypt this config file : Recommande, surtout si la sauvegarde contient des mots de passe
- Cliquer sur Download configuration as XML
14.2 Auto Config Backup (ACB)
Navigation : Diagnostics > Backup & Restore > Auto Config Backup
Ce service sauvegarde automatiquement la configuration dans le cloud Netgate a chaque modification :
- Creer un compte sur
https://portal.netgate.com - Renseigner l'identifiant et le mot de passe du portail Netgate
- Cocher Enable ACB
- Encryption Password : Definir un mot de passe de chiffrement
Les sauvegardes sont effectuees automatiquement a chaque changement de configuration. Vous pouvez lister et restaurer les versions precedentes depuis cet onglet.
14.3 Restauration
Navigation : Diagnostics > Backup & Restore
- Onglet Backup & Restore
- Section Restore Backup
- Restore area : ALL ou section specifique
- Selectionnez le fichier XML de sauvegarde
- Si le fichier est chiffre, entrez le mot de passe
- Cliquer sur Restore Configuration
- Le pfSense redemarrera automatiquement
config-pfSense-2025-01-15.xml.
14.4 Restauration depuis la console
En cas de perte totale de l'acces web :
# Menu console > option 15 : Restore recent configuration
# Affiche les 30 dernieres configurations
# Selectionnez le numero de la configuration a restaurer
# Ou via le shell (option 8) :
# Les configurations recentes sont dans /cf/conf/backup/
ls /cf/conf/backup/
cp /cf/conf/backup/config-XXXXXXX.xml /cf/conf/config.xml
reboot
15. Depannage
15.1 Problemes courants
| Probleme | Cause probable | Solution |
|---|---|---|
| Pas d'acces a l'interface web | IP incorrecte, service webConfigurator arrete, regle anti-lockout desactivee | Console > option 2 pour verifier/changer l'IP LAN. Option 11 pour redemarrer le webConfigurator. Option 3 pour reinitialiser le mot de passe. |
| Pas d'acces Internet depuis le LAN | WAN non configure, pas de route par defaut, NAT outbound manquant, DNS non fonctionnel | Verifier Status > Gateways, verifier les regles LAN, tester le DNS depuis Diagnostics > DNS Lookup. |
| Port forward ne fonctionne pas | Regle de firewall manquante, NAT reflection desactivee, serveur interne n'ecoute pas | Verifier la regle associee sur le WAN, tester depuis l'exterieur, verifier que le serveur ecoute sur le bon port. |
| VPN ne se connecte pas | Port bloque par le FAI, certificat expire, regle manquante sur WAN | Verifier la regle WAN (UDP 1194), verifier les logs OpenVPN, verifier les dates des certificats. |
| DHCP ne distribue pas d'adresses | Service DHCP desactive, conflit de plage, interface non configuree | Verifier Services > DHCP Server, verifier que la plage est dans le bon sous-reseau. |
| Lenteurs reseau | Hardware offloading, taille MTU, boucle reseau | Desactiver les offloading dans System > Advanced > Networking. Verifier la MTU. Chercher des boucles STP. |
| CARP ne bascule pas | pfsync non configure, VIP password differents, VHID en conflit | Verifier Status > CARP, s'assurer que les mots de passe et VHID correspondent sur les deux noeuds. |
15.2 Debug firewall avec pfctl
Via le shell (menu console option 8 ou SSH) :
# Afficher toutes les regles chargees
pfctl -sr
# Afficher les regles avec leur numero (utile pour les logs)
pfctl -vvsr
# Afficher la table d'etats (connexions actives)
pfctl -ss
# Compter le nombre d'etats
pfctl -ss | wc -l
# Afficher les statistiques globales
pfctl -si
# Afficher les infos sur une interface specifique
pfctl -sI -v
# Afficher les tables (alias)
pfctl -sT
# Afficher le contenu d'une table/alias
pfctl -t Serveurs_Web -T show
# Vider la table d'etats (deconnecte toutes les connexions actives !)
pfctl -F states
# Vider les etats pour une IP specifique
pfctl -k 192.168.1.100
# Vider les etats pour une paire source/destination
pfctl -k 192.168.1.100 -k 10.0.0.10
pfctl -F states coupe immediatement toutes les connexions actives (y compris votre session SSH/web). Utilisez-la avec precaution et preferez pfctl -k IP pour cibler une IP specifique.
15.3 Outils de diagnostic integres
Navigation : Diagnostics
| Outil | Navigation | Usage |
|---|---|---|
| Ping | Diagnostics > Ping | Tester la connectivite vers un hote |
| Traceroute | Diagnostics > Traceroute | Tracer le chemin reseau vers un hote |
| DNS Lookup | Diagnostics > DNS Lookup | Tester la resolution DNS |
| Packet Capture | Diagnostics > Packet Capture | Capturer et analyser le trafic reseau |
| Test Port | Diagnostics > Test Port | Tester si un port distant est ouvert |
| ARP Table | Diagnostics > ARP Table | Voir les associations IP/MAC |
| States | Diagnostics > States | Voir/filtrer les connexions actives du firewall |
| Routes | Diagnostics > Routes | Voir la table de routage |
| Sockets | Diagnostics > Sockets | Voir les ports ouverts sur pfSense |
| Command Prompt | Diagnostics > Command Prompt | Executer des commandes shell ou PHP depuis le navigateur |
15.4 Commandes shell utiles
# Redemarrer un service specifique
/etc/rc.d/openvpn restart
pfSsh.php playback svc restart dhcpd
pfSsh.php playback svc restart unbound
# Verifier l'espace disque
df -h
# Voir les processus les plus gourmands
top -b -n 1 | head -20
# Voir les interfaces reseau et leurs IP
ifconfig -a
# Voir la table de routage
netstat -rn
# Voir les connexions actives
sockstat -4 -l
# Tester la connectivite DNS
drill google.com @8.8.8.8
# Voir la version de pfSense
cat /etc/version
# Forcer la mise a jour des listes bogon
/etc/rc.update_bogons.sh
# Verifier l'integrite du filesystem
fsck -y /dev/ada0p2
15.5 Reinitialisation d'urgence
# Depuis le menu console :
# Option 3 : Reinitialiser le mot de passe webConfigurator
# Option 4 : Reinitialiser aux parametres usine (ATTENTION : efface toute la configuration !)
# Depuis le shell :
# Reinitialiser le mot de passe admin
/etc/rc.initial.password
# Retour aux parametres usine
/etc/rc.initial.defaults