FirewallD : concepts
et configuration
A D M I N I S T R AT I O N
R É S E AU S O U S L I N U X
Introduction
∙ firewalld est un logiciel de gestion de pare-feu
disponible pour de nombreuses distributions
Linux, qui fait office d interface pour les
systèmes de filtrage de
paquets nftables ou iptables du noyau de
Linux.
∙ À travers ce cours, nous allons voir comment
mettre en place un pare-feu pour un serveur
Linux, et aborder les bases de la gestion du
pare-feu avec l’outil
d’administration firewall-cmd.
Concepts de base dans
firewalld : les zones
∙ Le démon firewalld gère des groupes de règles en utilisant des entités
appelées zones.
∙ Les zones sont des ensembles de règles qui dictent quel trafic doit être
autorisé en fonction du niveau de confiance que vous avez dans le réseau.
∙ Les interfaces réseau sont attribuées à une zone pour dicter le comportement
que le pare-feu devrait autoriser.
∙ Pour les ordinateurs susceptibles de passer fréquemment d’un réseau à l’autre
(comme les ordinateurs portables), ce type de flexibilité constitue une bonne
méthode pour modifier vos règles en fonction de votre environnement.
∙ Pour un serveur, ces zones ne sont souvent pas aussi importantes car
l’environnement réseau change rarement, voire jamais.
Concepts de base dans firewalld : les zones
Les zones prédéfinies au sein de firewalld sont, dans l’ordre, de la moins fiable à la plus fiable :
∙ drop : le niveau de confiance le plus bas. Toutes les connexions entrantes sont interrompues sans réponse et seules les
connexions sortantes sont possibles.
∙ block : similaire à ce qui précède, mais au lieu de simplement interrompre les connexions, les demandes entrantes sont
rejetées avec un message icmp-host-prohibited ou icmp6-adm-prohibited.
∙ public : représente les réseaux publics, non fiables. Vous ne faites pas confiance aux autres ordinateurs, mais vous pouvez
autoriser certaines connexions entrantes au cas par cas.
∙ external : les réseaux externes dans l’éventualité où vous utilisez le pare-feu comme passerelle. Il est configuré pour le
masquage NAT de sorte que votre réseau interne reste privé mais accessible.
∙ internal : l’autre côté de la zone externe, utilisé pour la partie interne d’une passerelle. Les ordinateurs sont assez fiables et
certains services supplémentaires sont disponibles.
∙ dmz : utilisé pour les ordinateurs situés dans un DMZ (ordinateurs isolés qui n’auront pas accès au reste de votre réseau).
Seules certaines connexions entrantes sont autorisées.
∙ work : utilisé pour les machines de travail. Fait confiance à la plupart des ordinateurs du réseau. Quelques services
supplémentaires pourraient être autorisés.
∙ home : un environnement domestique. Cela implique généralement que vous faites confiance à la plupart des autres
ordinateurs et que quelques services supplémentaires seront acceptés.
∙ trusted : fais confiance à toutes les machines du réseau. La plus ouverte des options disponibles et doit être utilisée avec
parcimonie.
Concepts de base dans firewalld : Permanence de la règle
∙ Dans firewalld, les règles peuvent être appliquées au jeu de règles d’exécution actuel
ou être rendues permanentes.
∙ Lorsqu’une règle est ajoutée ou modifiée, par défaut, seul le pare-feu en cours
d’exécution est modifié.
∙ Après le prochain redémarrage – ou rechargement du service firewalld – seules les
règles permanentes subsisteront.
∙ La plupart des opérations firewall-cmd peuvent prendre un drapeau --permanent
pour indiquer que les changements doivent être appliqués à la configuration
permanente. En outre, le pare-feu en cours d’exécution peut être enregistré dans la
configuration permanente avec la commande firewall-cmd --runtime-to-
permanent
∙ Cette séparation entre les configurations d’exécution et permanente signifie que
vous pouvez tester en toute sécurité les règles dans votre pare-feu actif, puis les
recharger pour recommencer à zéro en cas de problème.
Installation et activation de firewalld
∙ firewalld est installé par défaut sur certaines distributions Linux.
∙ Si l’on vient d’installer firewalld, on doit s’assurer de la’ctivation du service :
systemctl enable firewalld
systemctl start firewalld
∙ Normalement, les interfaces réseau devraient être placées dans les zones que vous avez
configurées (ou retomber dans la zone par défaut configurée), et toutes les règles
associées à la ou aux zones seront appliquées aux interfaces associées.
∙ On peut vérifier que le service fonctionne et est accessible en tapant :
firewall-cmd --state
Se familiariser avec les règles actuelles du pare-feu :
explorer les valeurs par défaut
∙ Voir quelle zone est actuellement sélectionnée comme étant la zone par défaut :
firewall-cmd --get-default-zone
∙ Lister le(s) zone(s) active(s) (zone qui contrôle le trafic des interfaces) :
firewall-cmd --get-active-zones
∙ Lister les règles associées à la zone par défaut :
firewall-cmd --list-all
Se familiariser avec les règles actuelles du pare-feu :
Explorer les zones alternatives
∙ Lister les zones disponibles :
firewall-cmd --get-zones
∙ Vérifier la configuration spécifique à une zone :
firewall-cmd --zone=home --list-all
∙ Vérifier la configuration pour toutes les zones :
firewall-cmd --list-all-zones | less
Sélection de zones pour les interfaces
∙ Dans un état normal, toutes les zones seront placées dans la zone par défaut.
∙ redéfinir la zone par défaut :
firewall-cmd --set-default-zone=home
∙ On peut déplacer une interface dans une zone donnée :
firewall-cmd --zone=home --change-interface=ens33
∙ Vérifier la configuration par lister le(s) zone(s) active(s) :
firewall-cmd --get-active-zones
Définir des règles pour les applications :
ajouter un service
∙ Obtenir une liste des définitions de service disponibles :
firewall-cmd --get-services
Remarque : vous pouvez obtenir plus de détails sur chacun de ces services en consultant le fichier .xml qui leur est
associé dans le répertoire /usr/lib/firewalld/services.
∙ Activer un service pour une zone spécifique
firewall-cmd --zone=public --add-service=http
Par défaut, cela n’ajustera que la session de pare-feu actuelle.
∙ Vous pouvez ajuster la configuration du pare-feu permanent en incluant le drapeau --permanent.
firewall-cmd --zone=public --add-service=http --permanent
Définir des règles pour les applications :
ajouter un service (suite)
∙ Vérifier que le service a été ajouté :
firewall-cmd --zone=public --list-services
firewall-cmd --zone=public --list-services –permanent
∙ On peut également utiliser enregistrer la configuration du pare-feu en cours
d’exécution dans la configuration permanente :
firewall-cmd --runtime-to-permanent
Définir des règles pour les applications :
ajouter un service non défini par défaut
∙ Les services qui sont inclus dans l’installation firewalld représentent un grand nombre
des applications les plus courantes auxquelles vous pouvez souhaiter autoriser l’accès.
∙ Cependant, il y aura probablement de scénarios où ces services ne correspondent pas
aux exigences de la société.
∙ Dans cette situation, on dispose de deux options :
✓ Ouvrir un port pour les zones.
✓ Définir un service
Définir des règles pour les applications :
Ouvrir un port pour les zones
∙ La façon la plus simple d’ajouter un support à votre application spécifique consiste à ouvrir les ports qu’elle
utilise dans la ou les zone(s) appropriée(s).
∙ Cela se fait en spécifiant le port ou la plage de ports, et le protocole associé (TCP ou UDP) pour les ports.
firewall-cmd --zone=public --add-port=5000/tcp
∙ Vérifier les ports ajoutés à une zone :
firewall-cmd --zone=public --list-ports
∙ spécifier une plage séquentielle de ports :
firewall-cmd --zone=public --add-port=4990-4999/udp
Définir des règles pour les applications :
Définir un service
∙ L’ouverture de ports pour les zones est une solution simple, mais il peut être difficile de savoir à quoi chacun d’entre
eux correspond exactement.
∙ Pour éviter cette situation, il est possible de définir un nouveau service.
∙ Les services sont des collections de ports avec un nom et une description associés.
∙ L’utilisation de services est plus facile à administrer que les ports, mais nécessite un bon travail en amont.
∙ Une astuce consiste à copier un script existant (trouvé dans /usr/lib/firewalld/services) dans le répertoire
/etc/firewalld/services où le pare-feu recherche des définitions non standard.
Définir des règles pour les applications :
Définir un service (suite)
∙ Copier le fichier [Link] :
cp /usr/lib/firewalld/services/[Link] /etc/firewalld/services/[Link]
<?xml version="1.0" encoding="utf-8"?>
∙ Editer le fichier [Link] <service>
<short>8080</short>
<description>Autoriser le port TCP/8080 pour des sites privés.</description>
<port protocol="tcp" port=“8080"/>
</service>
∙ Rechargez votre pare-feu pour accéder à votre nouveau service :
firewall-cmd --reload
∙ Afficher la liste des services disponibles :
firewall-cmd --get-services