Le démon firewalld
La commande firewall-cmd nécessite que le service firewalld soit actif. Nous pouvons gérer ce démon avec les commandes systemctl status/start/stop/restart firewalld. Ce processus fournit les fonctionnalités de pare-feu au système.
Lorsqu'une configuration est modifiée (particulièrement les fichiers de configuration), le pare-feu ne Aplic effects immédiatement. Deux méthodes permettent d'appliquer les changements: systemctl restart firewalld pour redémarrer le service, ou firewall-cmd --reload pour recharger la configuration. La seconde méthode est préférable car elle préserve les connexions TCP existantes, contrairement au redémarrage du service qui les interrompt.
Contrôle des ports et services
La gestion des ports peut s'effectuer de deux manières: via le numéro de port ou via le nom du service. Bien que l'ouverture du service HTTP corresponde à l'ouverture du port 80, la fermeture doit respecter le même principe - un service ouvert par son nom doit être fermé par son nom, et un port ouvert par son numéro doit être fermé par son numéro. Il est également essentiel de spécifier le protocole (TCP ou UDP) lors de la manipulation des ports.
# Ouvrir le service SSH
firewall-cmd --add-service=ssh
# Bloquer le service FTP
firewall-cmd --remove-service=ftp
# Lister les services actifs
firewall-cmd --list-services
# Autoriser l'accès TCP au port 8080
firewall-cmd --add-port=8080/tcp
# Bloquer l'accès UDP au port 53
firewall-cmd --remove-port=53/udp
# Afficher les ports actifs
firewall-cmd --list-ports
Masquage IP
Le pare-feu permet le masquage d'adresses IP, fonctionnalité requise pour la redirection de ports vers d'autres machines du réseau.
# Vérifier si le masquage est activé
firewall-cmd --query-masquerade
# Activer le masquage IP
firewall-cmd --add-masquerade
# Désactiver le masquage IP
firewall-cmd --remove-masquerade
Redirection de ports
La redirection de ports permet de transférer le trafic destiné à un port spécifique vers un autre port ou une autre machine. Si aucune adresse de destination n'est définie, la redirection s'effectue vers localhost. Si une adresse IP est spécifiée sans numéro de port, le port source est utilisé.
Si la redirection ne fonctionne pas après configuration, deux points doivent être vérifiés:
- Vérifier que les ports source (ici 80) et destination (8080) sont bien ouverts et en écoute sur le système
- S'assurer que le masquage IP est activé si la redirection cible une machine distante
# Rediriger le port TCP 80 vers le port 8080 sur la même machine
firewall-cmd --add-forward-port=port=80:proto=tcp:toport=8080
# Rediriger le port TCP 443 vers une machine distante
firewall-cmd --add-forward-port=port=443:proto=tcp:toaddr=192.168.1.100
# Rediriger le port TCP 80 vers un port différent sur une machine distante
firewall-cmd --add-forward-port=port=80:proto=tcp:toaddr=192.168.1.100:toport=9090
Applications pratiques de la redirection:
- Discrétion des services: Masquer un port sensible en bloquant l'accès direct et en configurant une redirection vers un port alternatif non standard
- Équilibrage de charge: Utiliser le pare-feu pour distribuer le trafic selon les ports vers plusieurs serveurs exécutant des services différents