Sécurité Informatique et Réseaux

Pare-feu : règles de filtrage et bonnes pratiques

Un pare-feu n'est efficace que par la qualité de ses règles. Politique par défaut, ordre d'évaluation, filtrage sortant, journalisation et revue régulière : les bonnes pratiques pour une politique lisible et sûre.

Pare-feu filtrant les flux entre Internet, une DMZ et le réseau interne selon des règles ordonnées

Le pare-feu est l'équipement de sécurité réseau le plus répandu, mais aussi l'un des plus mal exploités. Au fil des années, les règles s'accumulent, les exceptions temporaires deviennent permanentes et plus personne ne sait pourquoi un flux est autorisé. Une politique de filtrage efficace est minimale, ordonnée, documentée et revue régulièrement.

Objectif : comprendre les types de pare-feu et la logique d'évaluation des règles, puis appliquer des bonnes pratiques de conception et de maintenance. Les exemples sont fournis à titre pédagogique, pour des environnements de test ou des réseaux dont vous avez la responsabilité.

Les grandes familles de pare-feu

Type Niveau d'analyse Exemple d'usage
Filtrage de paquets sans état Adresses, protocole, ports, paquet par paquet ACL de routeur
Pare-feu à états (stateful) Suivi des connexions Pare-feu périmétrique, nftables, pare-feu des systèmes
Pare-feu applicatif / « nouvelle génération » Identification des applications, utilisateurs, inspection du contenu Filtrage par application, prévention d'intrusion intégrée
Pare-feu applicatif web (WAF) Requêtes HTTP Protection d'applications web

Le suivi d'état

Un pare-feu à états garde en mémoire les connexions établies. Lorsqu'une règle autorise un poste interne à ouvrir une connexion HTTPS, les réponses du serveur sont automatiquement acceptées, car elles appartiennent à une connexion connue. Il n'est donc pas nécessaire d'ouvrir les ports éphémères en entrée, ce qu'imposerait un filtrage sans état.

Les états courants sont : new (nouvelle connexion), established (connexion établie), related (flux associé, comme un message ICMP d'erreur lié à une connexion) et invalid (paquet incohérent, à rejeter).

Comment les règles sont évaluées

Sur la plupart des pare-feu, les règles sont évaluées de haut en bas, et la première règle qui correspond s'applique (first match). Conséquences :

  • une règle large placée trop haut masque toutes les règles plus spécifiques situées en dessous ;
  • l'ordre est une partie intégrante de la politique ;
  • une règle par défaut s'applique lorsqu'aucune autre ne correspond.
1. Autoriser  10.10.99.0/24 → 10.10.20.0/24  TCP 22      (administration)
2. Refuser    tout          → 10.10.20.0/24  TCP 22      (SSH interdit ailleurs)
3. Autoriser  10.10.10.0/24 → 10.10.20.80    TCP 443     (application web)
4. Refuser    tout          → tout                        (règle par défaut, journalisée)

Si l'on inverse les règles 1 et 2, plus aucun administrateur ne peut se connecter en SSH.

Les bonnes pratiques de conception

1. Politique par défaut : tout refuser

Autorisez explicitement les flux nécessaires et refusez tout le reste. C'est l'application directe du moindre privilège. La politique inverse (« tout autoriser sauf… ») laisse passer tout ce que l'on n'a pas imaginé.

2. Des règles précises

Chaque règle précise source, destination, protocole et port. Évitez les règles « any/any » et les plages de ports entières. Une règle « 10.10.10.0/24 → serveur web, TCP 443 » est préférable à « LAN → DMZ, tout ».

3. Utiliser des objets nommés

Les pare-feu permettent de définir des objets (SRV-WEB-PROD, RES-ADMIN, SVC-HTTPS) et des groupes. Les règles deviennent lisibles et la modification d'une adresse se fait en un seul endroit.

4. Filtrer aussi en sortie

Le filtrage sortant est souvent négligé, alors qu'il limite fortement l'impact d'une compromission :

  • les serveurs n'ont généralement besoin de joindre qu'un nombre restreint de destinations (dépôts de mises à jour, services partenaires) ;
  • les postes peuvent être contraints de passer par un proxy pour le Web ;
  • seuls les résolveurs DNS internes interrogent l'extérieur sur le port 53 ;
  • SMTP sortant est limité aux serveurs de messagerie.

Un logiciel malveillant qui ne peut pas joindre son serveur de commande est largement neutralisé.

5. Documenter chaque règle

Pour chaque règle : justification, demandeur, date de création, date de revue (et date d'expiration pour une règle temporaire). Les pare-feu modernes offrent un champ de commentaire : utilisez-le systématiquement.

6. Journaliser intelligemment

  • Journalisez les refus de la règle par défaut, pour détecter les tentatives et les erreurs de configuration.
  • Journalisez les autorisations des flux sensibles (administration, accès aux données).
  • Envoyez les journaux vers un serveur central ou un SIEM. Voir Journalisation et supervision des événements de sécurité.

7. Ne pas bloquer aveuglément ICMP

Les messages d'erreur ICMP sont nécessaires au bon fonctionnement du réseau, notamment à la découverte de MTU. Filtrez finement plutôt que de tout bloquer. Voir MTU, MSS et fragmentation des paquets.

Exemple : politique d'un serveur avec nftables

#!/usr/sbin/nft -f
# Exemple de laboratoire : serveur web administré depuis 10.10.99.0/24
flush ruleset
table inet filtre {
  set admins {
    type ipv4_addr; flags interval;
    elements = { 10.10.99.0/24 }
  }
  chain entree {
    type filter hook input priority 0; policy drop;
    ct state established,related accept
    ct state invalid drop
    iif "lo" accept
    meta l4proto icmp icmp type { echo-request, destination-unreachable, time-exceeded } accept
    meta l4proto ipv6-icmp accept
    tcp dport 22 ip saddr @admins accept comment "SSH depuis le réseau d'administration"
    tcp dport { 80, 443 } accept comment "Service web public"
    limit rate 5/minute log prefix "nft-refus: " level info
  }
  chain sortie {
    type filter hook output priority 0; policy accept;
  }
}

La politique de sortie est ici permissive pour simplifier ; sur un serveur exposé, elle peut être restreinte aux destinations nécessaires. La règle de journalisation est limitée en débit pour ne pas saturer les journaux.

Maintenir la politique dans le temps

  • Revue périodique (par exemple semestrielle) : chaque règle est-elle encore justifiée ? A-t-elle été utilisée récemment ? Les compteurs de correspondance (hit counts) aident à identifier les règles mortes.
  • Suppression des règles temporaires à leur échéance.
  • Processus de changement : demande, analyse, validation, mise en œuvre, vérification.
  • Contrôle des règles en double ou masquées par une règle plus large.
  • Sauvegarde de la configuration avant toute modification.

Pare-feu et architecture

Le pare-feu prend tout son sens dans une architecture segmentée : zones Internet, DMZ, serveurs, utilisateurs, administration, avec des règles explicites entre chaque zone.

Architecture avec pare-feu, DMZ et réseau interne
Architecture avec pare-feu, DMZ et réseau interne

Voir Segmentation réseau et réduction de la surface d'attaque.

Erreurs courantes

  • Règles « any/any » temporaires jamais supprimées.
  • Ordre incorrect, une règle large masquant des refus spécifiques.
  • Absence de filtrage sortant.
  • Exposition des interfaces d'administration du pare-feu lui-même sur Internet.
  • Correctifs non appliqués sur le pare-feu : les équipements de bordure sont des cibles prioritaires.
  • Journalisation désactivée pour « économiser des ressources ».

Conclusion

Un bon pare-feu, c'est d'abord une bonne politique : tout refuser par défaut, autoriser précisément, filtrer en entrée et en sortie, documenter, journaliser et revoir. L'équipement le plus avancé ne compensera jamais une politique incohérente. Pour le filtrage directement sur les routeurs, voir ACL Cisco : contrôle du trafic réseau.

Références