Aller au contenu principal

firewalld — pare-feu dynamique

firewalld est le pare-feu par défaut sur RHEL/Fedora/CentOS. Contrairement à ufw (statique, rechargement complet à chaque changement), il gère les règles dynamiquement (application à chaud, sans couper les connexions existantes) et organise la configuration autour de zones (ensembles de règles associées à une interface ou une source).

Installation

sudo dnf install firewalld
sudo systemctl enable --now firewalld

Fichiers de configuration

CheminRôle
/etc/firewalld/firewalld.confConfiguration générale (zone par défaut...)
/etc/firewalld/zones/*.xmlDéfinition des zones et de leurs règles
/etc/firewalld/services/*.xmlDéfinitions de services (ports associés à un nom)
/usr/lib/firewalld/Zones/services par défaut fournis par le système

Commandes utiles

sudo systemctl status firewalld
firewall-cmd --state
firewall-cmd --get-zones
firewall-cmd --get-active-zones
firewall-cmd --zone=public --list-all
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload # applique les règles --permanent
firewall-cmd --panic-on / --panic-off # coupe tout le trafic en urgence

Exemple de configuration

# Ouvrir HTTPS et un port applicatif de façon persistante, puis appliquer
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --zone=public --list-all

Sécurisation

  • Les zones (public, internal, trusted, drop...) permettent d'appliquer des politiques différentes par interface : assigner l'interface WAN à public (restrictive) et le LAN interne à internal.
  • Toujours utiliser --permanent puis --reload pour persister ; une commande sans --permanent ne survit pas à un redémarrage (utile pour tester sans risque).
  • Préférer --add-service (règles maintenues par le paquet) à --add-port en dur quand un service définit déjà son profil.
  • firewall-cmd --panic-on en cas d'incident actif pour couper tout le trafic immédiatement.

Logs & dépannage

journalctl -u firewalld
firewall-cmd --get-log-denied # voir si les paquets refusés sont loggés
firewall-cmd --zone=public --list-all # diagnostiquer une zone

Voir aussi