Configuration du firewall firewalld avec zones et services.
Composant
Version
Rocky Linux
9.x
Firewalld
1.x
Durée estimée : 20 minutes
1. Vérifier l'installation
# Firewalld est installé par défautsystemctlstatusfirewalld
# Si non installédnfinstall-yfirewalld
systemctlenable--nowfirewalld
2. Concepts de base
Zones
Zone
Description
drop
Tout est rejeté silencieusement
block
Tout est rejeté avec message ICMP
public
Réseau public non fiable (défaut)
external
NAT/masquerading activé
dmz
Zone démilitarisée
work
Réseau de travail
home
Réseau domestique
internal
Réseau interne
trusted
Tout est accepté
3. Commandes de base
# État du firewallfirewall-cmd--state
# Zone par défautfirewall-cmd--get-default-zone
# Zones activesfirewall-cmd--get-active-zones
# Lister la configurationfirewall-cmd--list-all
# Rechargerfirewall-cmd--reload
4. Gérer les services
# Lister les services disponiblesfirewall-cmd--get-services
# Ajouter un service (temporaire)firewall-cmd--add-service=http
# Ajouter un service (permanent)firewall-cmd--permanent--add-service=http
firewall-cmd--permanent--add-service=https
# Supprimer un servicefirewall-cmd--permanent--remove-service=cockpit
# Appliquer les changements permanentsfirewall-cmd--reload
# Vérifierfirewall-cmd--list-services
5. Gérer les ports
# Ajouter un portfirewall-cmd--permanent--add-port=8080/tcp
firewall-cmd--permanent--add-port=8443/tcp
# Plage de portsfirewall-cmd--permanent--add-port=3000-3100/tcp
# Port UDPfirewall-cmd--permanent--add-port=161/udp
# Supprimerfirewall-cmd--permanent--remove-port=8080/tcp
# Lister les portsfirewall-cmd--list-ports
6. Règles riches (rich rules)
# Autoriser une IP spécifiquefirewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'# Autoriser un réseau pour un servicefirewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" accept'# Bloquer une IPfirewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="10.0.0.50" reject'# Limiter le rate (protection DDoS)firewall-cmd--permanent--add-rich-rule='rule service name="ssh" limit value="10/m" accept'# Loggingfirewall-cmd--permanent--add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="ssh" log prefix="SSH-ACCESS: " level="info" accept'# Lister les rich rulesfirewall-cmd--list-rich-rules
firewall-cmd--reload
7. Zones et interfaces
# Assigner une interface à une zonefirewall-cmd--permanent--zone=internal--change-interface=eth1
# Définir la zone par défautfirewall-cmd--set-default-zone=public
# Lister les interfaces d'une zonefirewall-cmd--zone=public--list-interfaces
# Configuration par zonefirewall-cmd--zone=internal--list-all
8. Masquerading et forwarding
# Activer le masquerading (NAT)firewall-cmd--permanent--zone=external--add-masquerade
# Port forwardingfirewall-cmd--permanent--add-forward-port=port=80:proto=tcp:toport=8080# Forwarding vers une autre machinefirewall-cmd--permanent--add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=80# Activer le forwarding IPecho'net.ipv4.ip_forward = 1'>>/etc/sysctl.conf
sysctl-p
9. Direct rules (iptables)
# Ajouter une règle iptables directefirewall-cmd--permanent--direct--add-ruleipv4filterINPUT0-ptcp--dport9999-jACCEPT
# Lister les règles directesfirewall-cmd--direct--get-all-rules
# Créer le fichier de servicecat>/etc/firewalld/services/myapp.xml<< 'EOF'<?xml version="1.0" encoding="utf-8"?><service> <short>MyApp</short> <description>Mon application personnalisée</description> <port protocol="tcp" port="9000"/> <port protocol="tcp" port="9001"/></service>EOF# Recharger et utiliserfirewall-cmd--reload
firewall-cmd--permanent--add-service=myapp
firewall-cmd--reload
12. Sauvegarde et restauration
# Sauvegardercp-r/etc/firewalld/backup/firewalld-$(date+%Y%m%d)# Ou exporterfirewall-cmd--list-all>/backup/firewall-rules.txt
# Runtime vers permanentfirewall-cmd--runtime-to-permanent