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
| Chemin | Rôle |
|---|---|
/etc/firewalld/firewalld.conf | Configuration générale (zone par défaut...) |
/etc/firewalld/zones/*.xml | Définition des zones et de leurs règles |
/etc/firewalld/services/*.xml | Dé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
--permanentpuis--reloadpour persister ; une commande sans--permanentne survit pas à un redémarrage (utile pour tester sans risque). - Préférer
--add-service(règles maintenues par le paquet) à--add-porten dur quand un service définit déjà son profil. firewall-cmd --panic-onen 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
- Pare-feu — nftables, ufw, fail2ban — l'équivalent Debian/Ubuntu et le fonctionnement de netfilter sous-jacent (firewalld pilote nftables depuis RHEL8+).