🛡️ Firewall / Pare-feu – Filtrage, ACL, Stateful & NGFW
Guide complet IDEO-Lab sur la sécurité réseau, du filtrage de paquets au NGFW.
Définition & Rôle
Filtre, Zones (Trust/Untrust), Couche 3/4/7.
Sécurité Filtre WAN/LANHardware vs. Software
Appliance (Dédié) vs. Hôte (OS).
Appliance Hôte pfSenseACL (Access Control List)
Règles (Permit/Deny), 5-Tuple, Implicit Deny.
ACL Permit/Deny 5-TupleType : Stateless
Filtrage de paquets simple (Basé sur ACL). Rapide.
Stateless ACLType : Stateful (SPI)
Suivi de connexion (State Table). Standard moderne.
Stateful SPI ConnexionType : NGFW (Couche 7)
Next-Gen (DPI, IPS/IDS, Application-aware).
NGFW DPI IPS/IDSProxy vs. Firewall
Médiateur (L7) vs. Filtre (L3/L4).
Proxy Reverse ProxyArchitecture : DMZ
Zone Démilitarisée (Serveurs publics, Bastion).
DMZ ArchitectureFonction : NAT / Port Fwd
Translation d'adresse, Ouverture de port.
NAT PAT Port ForwardingOutil : iptables (Linux)
Noyau Linux. Tables (Filter, NAT), Chaînes (Input).
iptables Linux NetfilterOutil : UFW (Ubuntu)
Uncomplicated Firewall (Frontend pour iptables).
UFW Ubuntu FacileCheat-sheet : ACL
Exemples de règles (Bloquer Ping, Ouvrir SSH).
Checklist RèglesLe "Garde-Frontière" du Réseau
Un Firewall (Pare-feu) est un appareil (matériel ou logiciel) de sécurité réseau qui filtre le trafic entrant et sortant.
Son rôle principal est d'agir comme une barrière entre un réseau interne de confiance (ex: votre LAN) et un réseau externe non-fiable (ex: Internet), en n'autorisant que le trafic légitime (défini par des règles) à passer.
Opération (Couches OSI)
- Firewall L3/L4 (Classique) : Filtre basé sur les Paquets (L3) et les Ports (L4). (IP Source/Dest, Port TCP/UDP Source/Dest).
- Firewall L7 (NGFW) : Filtre basé sur l'Application (L7). (Peut inspecter le contenu du paquet, ex: "Bloquer Facebook").
Concept : Zones de Confiance
Un firewall est conçu pour appliquer des politiques entre des "zones" de différents niveaux de confiance.
(Zone 0 - UNTRUST) (Zone 100 - TRUST)
INTERNET <──────────────> [ FIREWALL ] <──────────────> LAN (Réseau Interne)
│
│
└─────────────────────> DMZ (Zone 50 - Semi-Trust)
- Trust (LAN) : Réseau interne (employés, PC de bureau). Confiance élevée.
- Untrust (WAN/Internet) : Réseau externe. Confiance nulle.
- DMZ (Demilitarized Zone) : (Voir 3.2) Réseau "tampon" pour les serveurs publics (serveur web). Confiance limitée.
Exemple de règle : Autoriser le trafic de "Trust" vers "Untrust", mais bloquer tout trafic initié de "Untrust" vers "Trust".
Firewall Matériel (Appliance)
Un boîtier physique dédié (une "appliance") placé en bordure de réseau (entre le routeur Internet et le switch principal).
- Rôle : Protéger tout le réseau (LAN).
- Performance : Élevée (hardware dédié, ASICs).
- Exemples : Cisco ASA, Palo Alto Networks, Fortinet, ou des solutions open-source (pfSense, OPNsense) sur du matériel dédié.
Firewall Logiciel (Hôte)
Un logiciel qui tourne directement sur un système d'exploitation (serveur, PC client).
- Rôle : Protéger la machine hôte elle-même (contre les menaces internes du LAN).
- Performance : Dépend du CPU/RAM de l'hôte.
- Exemples : Windows Defender Firewall, iptables (Linux), UFW (Ubuntu).
Le firewall "Stateless" (sans état) est la forme la plus basique de filtrage. Il traite chaque paquet isolément, sans mémoire des connexions passées.
Fonctionnement (ACL pure)
Il se base uniquement sur les ACL (Access Control Lists) (voir 3.1). Il vérifie l'IP source, l'IP destination, le protocole, et le port, puis applique la règle (Permit/Deny).
Règle (Outbound) : PERMIT TCP Source:192.168.1.50 Dest:ANY Port:80 Problème : Le trafic RETOUR (de Google) (Source:ANY Port:80, Dest:192.168.1.50) sera bloqué par l'Implicit Deny.
- Avantage : Très rapide, faible overhead CPU.
- Inconvénient : "Stupide". Pour autoriser le trafic retour, il faut ouvrir de larges plages de ports entrants, ce qui est une faille de sécurité majeure.
Stateful Packet Inspection (SPI)
Le firewall "Stateful" (avec état) est le standard moderne. Il est "intelligent" car il mémorise l'état des connexions (TCP Handshake, flux UDP).
Il maintient une "State Table" (Table d'état) de toutes les connexions actives qui traversent le firewall.
Flux de Connexion (Exemple)
Règle ACL : PERMIT TCP LAN -> WAN Port:443 (Autoriser le trafic web sortant)
1. [PC A (LAN)] envoie un paquet [SYN] à [Google (WAN) Port 443]. 2. [Firewall] vérifie l'ACL : "LAN -> WAN:443" = PERMIT. Il crée une entrée dans sa State Table : [PC A:1234 -> Google:443 | Status: SYN_SENT] Il envoie le paquet. 3. [Google] répond avec [SYN/ACK] à [PC A]. 4. [Firewall] reçoit le [SYN/ACK] (trafic entrant). Il vérifie sa State Table. "Aha, ce paquet est une RÉPONSE à une connexion que j'ai déjà autorisée (SYN_SENT)." -> Il autorise le paquet retour (sans vérifier les ACLs entrantes). 5. [Pirate (WAN)] envoie un paquet non sollicité à [PC A]. 6. [Firewall] reçoit le paquet. Il vérifie sa State Table. "Ce paquet n'appartient à aucune connexion initiée depuis l'intérieur." -> Il le bloque (Implicit Deny).
Un NGFW va au-delà du filtrage L3/L4 (IP/Port). Il utilise le DPI (Deep Packet Inspection) pour inspecter le contenu (L7 - Application) des paquets.
Le Problème (Port 80/443)
Un firewall Stateful autorise tout sur le port 443 (HTTPS). Mais ce port peut transporter des applications légitimes (Google) ou indésirables (BitTorrent, Facebook, Malwares).
Fonctionnalités Clés du NGFW
- Application-Aware : Peut identifier et bloquer "Facebook" ou "Netflix", même s'ils utilisent le port 443.
- IPS/IDS (Intrusion Prevention/Detection) : Analyse le trafic à la recherche de signatures de malwares, d'exploits (ex: Log4j), et les bloque.
- Filtrage URL : Bloque l'accès à des catégories de sites (ex: Adulte, Jeux d'argent).
- Gateway Anti-Virus : Scanne les fichiers téléchargés (HTTP/FTP) à la volée.
Ce sont deux concepts différents, bien que souvent confondus (un NGFW moderne agit souvent comme un proxy L7).
Firewall (L3/L4)
Rôle : Filtre (Agent de la circulation).
Le firewall laisse passer (ou bloque) la connexion *directe* entre le Client et le Serveur. Il ne modifie pas le paquet (sauf pour le NAT).
Client <-----> Firewall <-----> Serveur
Proxy (L7)
Rôle : Médiateur (Intermédiaire).
La connexion s'arrête au proxy. Le client ne parle jamais directement au serveur.
(Connexion 1) (Connexion 2) Client <-----> PROXY <-----> Serveur
- Forward Proxy (Client) : Le client est configuré pour utiliser un proxy (ex: filtrage web en entreprise).
- Reverse Proxy (Serveur) : Protège les serveurs web (Load Balancing, SSL Offload, WAF).
Le "Livre de Règles"
Une ACL est un ensemble de règles (Permit/Deny) appliquées à une interface (entrante ou sortante) pour filtrer le trafic. C'est la base des firewalls (Stateless et Stateful).
Le "5-Tuple"
Une règle ACL (étendue) se base sur 5 informations pour identifier un flux :
- Protocole (ex: TCP, UDP, ICMP)
- Adresse IP Source
- Port Source (ex: >1024)
- Adresse IP Destination
- Port Destination (ex: 443)
Implicit Deny (Refus Implicite)
Les ACLs sont lues de haut en bas. La première règle qui "matche" est appliquée, et le firewall arrête la lecture.
Crucial : À la fin de chaque ACL se trouve une règle invisible : DENY ALL (Refus Implicite).
Cela signifie qu'un firewall ne doit contenir que des règles "PERMIT". Tout ce qui n'est pas explicitement autorisé est bloqué.
Une DMZ est un réseau "tampon" (une 3ème zone de confiance) créé par un firewall. C'est la zone destinée à héberger les serveurs qui doivent être accessibles depuis Internet (Untrust).
Le Problème
Si vous hébergez votre serveur web (Port 80) dans votre LAN (Trust), et qu'un pirate le compromet, il a un accès direct à tout votre réseau interne (PC, Serveurs de fichiers...).
La Solution (DMZ)
Le firewall crée 3 zones (ex: 3 interfaces physiques) :
Interface 1: WAN (Untrust) Interface 2: LAN (Trust) - 192.168.1.0/24 Interface 3: DMZ (Semi-Trust) - 172.16.1.0/24 (Héberge le Serveur Web 172.16.1.10)
Règles de Firewall :
PERMITWAN -> DMZ (Port 80/443) (Internet voit le serveur web)PERMITLAN -> WAN (Sortie Internet)PERMITLAN -> DMZ (Les admins accèdent au serveur web)DENYDMZ -> LAN (La règle la plus importante !)
Si le serveur web (DMZ) est piraté, le pirate est bloqué dans la DMZ et ne peut pas atteindre le LAN.
Le NAT est une fonction clé des firewalls (surtout Stateful).
Source NAT / PAT (Masquerading)
C'est le processus (sortant) qui "masque" votre LAN (IPs privées) derrière l'IP publique du firewall.
C'est une fonction Stateful. Le firewall crée une entrée dans sa table NAT (voir 2.1) pour savoir à quel PC interne renvoyer la réponse.
Port Forwarding (Destination NAT / DNAT)
C'est le processus (entrant) qui permet d'exposer un service interne (LAN ou DMZ) à Internet. C'est l'ouverture de port.
C'est une règle statique qui dit au firewall :
"Tout trafic arrivant sur mon [IP Publique] sur le [Port Public: 443] doit être 'translaté' (DNAT) vers [IP Interne: 172.16.1.10] sur le [Port Interne: 443 (ou 8443...)]"
Attention : Une règle de Port Forwarding (DNAT) doit toujours être accompagnée d'une règle ACL (Firewall) PERMIT correspondante.
iptables est l'outil en ligne de commande (historique) pour configurer le firewall Netfilter intégré au noyau Linux. C'est un firewall Stateful L3/L4 très puissant (et complexe).
Structure : Tables & Chaînes (Chains)
iptables utilise des "Tables" (filter, nat, mangle) qui contiennent des "Chaînes" (listes de règles ACL).
La Table filter (la plus utilisée)
Contient 3 chaînes principales pour le trafic destiné au serveur lui-même :
INPUT: Trafic entrant (destiné au serveur). (La plus importante pour la sécurité).OUTPUT: Trafic sortant (généré par le serveur).FORWARD: Trafic "routé" (si le serveur agit comme routeur/firewall pour un autre réseau).
# Exemple : # 1. Politique par défaut : tout bloquer en entrée iptables -P INPUT DROP # 2. Autoriser le trafic "déjà établi" (Stateful) iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT # 3. Ouvrir le port SSH (22) iptables -A INPUT -p tcp --dport 22 -j ACCEPT
UFW est un "frontend" (une interface de gestion simplifiée) pour iptables, très populaire sur Ubuntu.
Il est conçu pour rendre la configuration d'un firewall hôte (Stateful) très simple.
Exemple de Workflow
# 1. Activer le firewall sudo ufw enable # 2. Définir les politiques par défaut (Implicit Deny) sudo ufw default deny incoming sudo ufw default allow outgoing # 3. Ouvrir des ports (Règles PERMIT) sudo ufw allow ssh (Lit /etc/services, = port 22) sudo ufw allow http (Port 80) sudo ufw allow 443/tcp (Port 443) # 4. Autoriser une IP spécifique sudo ufw allow from 1.2.3.4 to any port 22 # 5. Voir le statut sudo ufw status verbose
Logique de configuration (de haut en bas) pour un firewall Stateful (ex: INPUT sur un serveur web).
| N° | Action | Source | Destination | Port/Service | Notes |
|---|---|---|---|---|---|
| 1 | PERMIT | IP_Admin (1.2.3.4) | ANY | ANY | (Règle "Anti-lockout". S'autoriser soi-même d'abord). |
| 2 | PERMIT | ANY | ANY | (Trafic Stateful) | RELATED, ESTABLISHED. Autorise les réponses. |
| 3 | PERMIT | ANY | Loopback (127.0.0.1) | ANY | (Trafic local). |
| 4 | PERMIT | IP_Admin (1.2.3.4) | Serveur | TCP 22 (SSH) | Accès administration. |
| 5 | PERMIT | ANY | Serveur | TCP 80 (HTTP) | Service public. |
| 6 | PERMIT | ANY | Serveur | TCP 443 (HTTPS) | Service public. |
| 7 | DENY | IP_Pirate (5.6.7.8) | ANY | ANY | (Règle de blocage explicite - optionnelle). |
| 8 | PERMIT | ANY | Serveur | ICMP (Ping) | (Optionnel, pour diagnostic). |
| ... | (Invisible) | ANY | ANY | ANY | Implicit Deny (DENY ALL) |
