Introduction
Firewalld est une solution de gestion de pare-feu disponible pour de nombreuses distributions Linux. Elle sert d'interface au système de filtrage de paquets iptables fourni par le noyau Linux. Dans ce guide, vous apprendrez à configurer un pare-feu pour votre serveur. Nous vous montrerons également les bases de la gestion du pare-feu avec l'outil d'administration firewall-cmd.
Bases de Firewalld
FirewallD utilise les concepts de zones et de services, plutôt que les chaînes et les règles d'iptables. En fonction des zones et des services que vous configurez, vous pouvez contrôler quel trafic est autorisé ou non vers et depuis le système. FirewallD peut être configuré et géré à l'aide de l'utilitaire en ligne de commande firewall-cmd.
Installer et activer votre pare-feu pour qu'il démarre au démarrage
Sur la plupart des distributions Linux, firewallD est déjà installé. Cependant, si vous devez l'installer vous-même, saisissez la syntaxe ci-dessous :
|
1 |
sudo yum install firewalld |
Vous pouvez activer le service et redémarrer votre serveur une fois firewalld installé :
|
1 2 |
sudo systemctl enable firewalld sudo reboot |
Ensuite, redémarrez votre serveur. Votre pare-feu sera activé lorsque vous aurez redémarré le serveur avec succès. Après cela, utilisez la commande ci-dessous pour vérifier que le service a été activé :
|
1 |
sudo firewall-cmd --state |

La sortie montre que le paramètre de pare-feu par défaut fonctionne.
Vérification des valeurs par défaut
Vous pouvez vérifier la zone sélectionnée par le serveur à l'aide de cette commande :
|
1 |
firewall-cmd --get-default-zone |

Vérifiez la zone active en tapant :
|
1 |
firewall-cmd --get-active-zones |

Affichez la configuration de la zone par défaut pour connaître les règles associées à la zone publique en utilisant cette syntaxe :
|
1 |
sudo firewall-cmd --list-all |

La sortie indique que cette zone est à la fois la zone par défaut et la zone active. Elle montre également que les interfaces eth0 et eth1 sont attribuées à cette zone.
Vérification des zones alternatives
En plus des zones par défaut et actives, il existe d'autres zones que vous pouvez explorer. Entrez cette commande pour voir toutes les zones disponibles :
|
1 |
firewall-cmd --get-zones |

Vérifiez la configuration particulière attribuée à une zone en ajoutant le paramètre –zone= dans la commande –list-all :
|
1 |
sudo firewall-cmd --zone=home --list-all |

Modifier la zone d'interface
Vous pouvez facilement modifier la zone d'interface en utilisant l'option –change-interface combinée avec l'option –change-interface. La commande suivante attribuera l'interface eth1 à l'espace de travail :
|
1 |
sudo firewall-cmd --zone=work --change-interface=eth1 |
Vous pouvez vérifier les modifications en tapant :
|
1 |
sudo firewall-cmd --get-active-zones |
Modifier la zone par défaut
Pour modifier la zone par défaut, utilisez –set-default-zone suivi du nom de la zone que vous souhaitez définir par défaut. Par exemple, pour changer la zone par défaut pour commencer, vous devez exécuter la commande suivante :
|
1 |
sudo firewall-cmd --set-default-zone=home |
Ensuite, vous pouvez vérifier les modifications avec :
|
1 |
sudo firewall-cmd --get-default-zone |
Définir des règles pour vos applications
Passons en revue les bases requises pour définir des exceptions de pare-feu pour les services :
Ajouter un service à vos zones
La méthode la plus simple consiste à ajouter les ports ou services dont vous avez besoin aux zones que vous utilisez. De même, vous pouvez utiliser l'option –get-services pour voir tous les services disponibles :
|
1 |
firewall-cmd --get-services |

Vous pouvez activer le service pour une zone avec le paramètre –add-service =. L'action cible la zone par défaut ou toute zone définie par le paramètre –zone =. Par défaut, seule la session de pare-feu actuelle est configurée. Vous pouvez configurer une configuration de pare-feu permanente en activant le drapeau –permanent. Par exemple, si vous exécutez un serveur web qui fournit un trafic HTTP standard, vous pouvez autoriser ce trafic pour les interfaces de notre zone “public” pour cette session en saisissant :
|
1 |
sudo firewall-cmd --zone=public --add-service=http |
Vous pouvez omettre –zone = si vous souhaitez modifier la zone par défaut. Vous pouvez vérifier la réussite de l'opération avec les opérations –list-all ou –list-services :
|
1 |
sudo firewall-cmd --zone=public --list-services |

Une fois que vous avez vérifié que tout fonctionne comme prévu, vous voudrez très probablement modifier les règles de pare-feu permanentes pour que votre service reste disponible après un redémarrage. Nous pouvons rendre ce changement permanent pour notre zone “public” en saisissant la syntaxe suivante :
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --add-service=http sortie: success |
Vous pouvez vérifier si cela a réussi en ajoutant le drapeau –permanent à l'opération –list-services. Vous devez utiliser sudo pour toutes les opérations permanentes :
|
1 2 3 4 |
sudo firewall-cmd --zone=public --permanent --list-services sortie: dhcpv6-client http ssh |
Votre zone “public” autorise désormais le trafic HTTP sur le port 80. Vous pouvez ajouter cela à la session actuelle et au jeu de règles persistantes en utilisant la commande ci-dessous :
|
1 2 3 |
sudo firewall-cmd --zone=public --add-service=https sudo firewall-cmd --zone=public --permanent --add-service=https |
S'il n'y a aucun service qui correspond à vos besoins, vous disposez de deux excellentes options pour gérer cette situation :
- Ouvrir un port pour vos zones
La manière la plus simple d'ajouter la prise en charge de votre application particulière consiste à ouvrir les ports utilisés dans chaque zone. Il suffit de désigner un port ou une plage de ports et le protocole correspondant pour les ports que vous devez ouvrir. Par exemple, si votre application s'exécute sur le port 5000 et utilise TCP, vous pouvez l'ajouter à la zone “public” pour cette session avec le paramètre –add-port =. Les protocoles peuvent être TCP ou UDP :
|
1 2 3 4 |
sudo firewall-cmd --zone=public --add-port=5000/tcp sortie: success |
Afin de vérifier que l'opération a réussi, utilisez l'opération –list-ports :
|
1 2 3 4 |
sudo firewall-cmd --zone=public --list-ports Sortie: 5000/tcp |
Vous pouvez également spécifier une plage pour l'interface série en séparant les ports de début et de fin de la plage par un trait d'union. Par exemple, si votre application utilise les ports UDP 4990 à 4999, vous pouvez les ouvrir dans “public” en écrivant :
|
1 |
sudo firewall-cmd --zone=public --add-port=4990-4999/udp |
Après les tests, nous voudrons probablement les ajouter au pare-feu permanent. Vous pouvez le faire en saisissant ce qui suit :
|
1 2 3 |
sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp sudo firewall-cmd --zone=public --permanent --list-ports |

- Définir un service
Un service est une collection de ports avec un nom et une description associés. Les services sont plus faciles à gérer que les ports, mais cela nécessite un peu de travail initial. La façon la plus simple de commencer est de copier un script existant (dans / usr / lib / firewalld / services) vers le répertoire /etc/firewalld/services. Par exemple, vous pouvez copier la définition du service SSH pour l'utiliser dans la définition du service “example” comme suit. Le nom du fichier moins le suffixe XML détermine le nom du service dans la liste des services de pare-feu :
|
1 |
sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml |
À ce stade, vous pouvez ajuster la définition dans le fichier copié :
|
1 |
sudo vi /etc/firewalld/services/example.xml |
Tout d'abord, le fichier contient la définition SSH que vous avez copiée :
|
1 2 3 4 5 6 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>SSH</short> <description>Secure Shell (SSH) est un protocole pour se connecter à et exécuter des commandes sur des machines distantes. Il fournit des communications chiffrées sécurisées. Si vous envisagez de vous connecter à votre machine à distance via SSH sur une interface protégée par pare-feu, activez cette option. Vous avez besoin du openssh-server paquet installé pour cette option pour être utile.</description> <port protocol="tcp" port="22"/> </service> |
La majeure partie de cette définition est constituée de métadonnées. Vous devez modifier le nom court du service dans les balises <short>. Il s'agit d'un nom de service lisible. Imaginez que pour notre service “example”, nous devions ouvrir le port 7777 pour TCP et 8888 pour UDP. Vous pouvez modifier la définition existante en entrant en mode INSERT en appuyant sur i :
|
1 2 3 4 5 6 7 |
<?xml version="1.0" encoding="utf-8"?> <service> <short>Exemple de Service</short> <description>Ceci est juste un exemple de service. Il probablement ne devrait 'pas être utilisé sur un système réel.</description> <port protocol="tcp" port="7777"/> <port protocol="udp" port="8888"/> </service> |
Ensuite, appuyez sur ÉCHAP et tapez : x pour enregistrer et fermer le fichier. Ensuite, tapez la commande ci-dessous pour redémarrer votre pare-feu afin d'avoir accès à votre nouveau service ;
|
1 |
sudo firewall-cmd --reload |
Après cela, utilisez la commande ci-dessous pour obtenir la liste des services disponibles :
|
1 |
firewall-cmd --get-services |

Ce service est désormais disponible dans votre zone.
Créer vos zones
Bien que les zones prédéfinies soient probablement suffisantes pour la plupart des utilisateurs, il peut être utile de définir vos propres zones qui décrivent plus précisément leur fonction.
Lorsque vous ajoutez une zone, ajoutez-la à vos paramètres de pare-feu permanents. Vous pouvez ensuite recharger pour appliquer les paramètres à votre session. Par exemple, vous pouvez créer les deux zones mentionnées précédemment en tapant :
|
1 2 |
sudo firewall-cmd --permanent --new-zone=publicweb sudo firewall-cmd --permanent --new-zone=privateDNS |
Vous pouvez confirmer qu'elles sont présentes dans votre configuration permanente à l'aide de cette commande :
|
1 |
sudo firewall-cmd --permanent --get-zones |

Rechargez le pare-feu pour appliquer ces nouvelles zones à la configuration active :
|
1 2 3 4 5 |
sudo firewall-cmd --reload firewall-cmd --get-zones sortie: block dmz drop external home internal privateDNS public publicweb trusted work |
Vous pouvez maintenant attribuer les services et ports appropriés à vos zones. Par exemple, pour la zone “publicweb”, vous aimeriez peut-être ajouter les services SSH, HTTP et HTTPS :
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --add-service=ssh sudo firewall-cmd --zone=publicweb --add-service=http sudo firewall-cmd --zone=publicweb --add-service=https |

De plus, vous pouvez ajouter le service DNS à votre zone “privateDNS” en utilisant cette commande :
|
1 2 |
sudo firewall-cmd --zone=privateDNS --add-service=dns sudo firewall-cmd --zone=privateDNS --list-all |

Ensuite, vous pouvez changer vos interfaces vers ces nouvelles zones pour les tester :
|
1 2 3 |
sudo firewall-cmd --zone=publicweb --change-interface=eth0 sudo firewall-cmd --zone=privateDNS --change-interface=eth1 |
Testez la configuration pour voir si elle fonctionne. Si ces valeurs fonctionnent pour vous, vous devez ajouter les mêmes règles à la configuration permanente. Vous pouvez le faire en réappliquant les règles avec l'indicateur —permanent :
|
1 2 3 4 5 6 7 |
sudo firewall-cmd --zone=publicweb --permanent --add-service=ssh sudo firewall-cmd --zone=publicweb --permanent --add-service=http sudo firewall-cmd --zone=publicweb --permanent --add-service=https sudo firewall-cmd --zone=privateDNS --permanent --add-service=dns |
Après avoir appliqué ces règles de manière permanente, vous pouvez redémarrer votre réseau et recharger votre service de pare-feu :
|
1 2 3 |
sudo systemctl restart network sudo systemctl reload firewalld |
Vérifiez que les zones ont été correctement attribuées :
|
1 |
firewall-cmd --get-active-zones |

De plus, assurez-vous que les deux zones ont le bon service :
|
1 2 3 4 |
sudo firewall-cmd --zone=publicweb --list-services sortie: http https ssh |
|
1 2 3 4 5 |
sudo firewall-cmd --zone=privateDNS --list-services sortie: dns |
Si vous souhaitez définir l'une de vos zones par défaut pour d'autres interfaces, vous devez configurer ce comportement avec le paramètre –set-default-zone= en utilisant cette commande :
|
1 |
sudo firewall-cmd --set-default-zone=publicweb |
Conclusion
À ce stade, vous avez créé vos propres zones avec succès. Vous devriez avoir une compréhension de base de l'administration du service firewalld sur votre système CentOS pour une utilisation quotidienne. Une bonne maîtrise du service firewalld vous permet de profiter pleinement de sa puissance et de sa flexibilité.
Bonne informatique !


Commentaires
Aucun commentaire pour l'instant. Soyez le premier.