Chapitre 1. Utilisation et configuration de firewalld
firewall est un moyen de protéger les machines contre tout trafic indésirable provenant de l'extérieur. Il permet aux utilisateurs de contrôler le trafic réseau entrant sur les machines hôtes en définissant un ensemble de firewall rules. Ces règles sont utilisées pour trier le trafic entrant et le bloquer ou l'autoriser.
firewalld
est un démon de service de pare-feu qui fournit un pare-feu dynamique personnalisable basé sur l'hôte avec une interface D-Bus. Comme il est dynamique, il permet de créer, de modifier et de supprimer les règles sans qu'il soit nécessaire de redémarrer le démon du pare-feu à chaque fois que les règles sont modifiées.
firewalld
utilise les concepts de zones et de services, qui simplifient la gestion du trafic. Les zones sont des ensembles de règles prédéfinies. Les interfaces réseau et les sources peuvent être affectées à une zone. Le trafic autorisé dépend du réseau auquel votre ordinateur est connecté et du niveau de sécurité attribué à ce réseau. Les services de pare-feu sont des règles prédéfinies qui couvrent tous les paramètres nécessaires pour autoriser le trafic entrant pour un service spécifique et s'appliquent à l'intérieur d'une zone.
Les services utilisent un ou plusieurs ports ou adresses pour communiquer avec le réseau. Les pare-feu filtrent les communications en fonction des ports. Pour autoriser le trafic réseau d'un service, ses ports doivent être ouverts. firewalld
bloque tout le trafic sur les ports qui ne sont pas explicitement définis comme ouverts. Certaines zones, comme la zone de confiance, autorisent tout le trafic par défaut.
Notez que firewalld
avec le backend nftables
ne permet pas de passer des règles nftables
personnalisées à firewalld
, en utilisant l'option --direct
.
1.1. Démarrer avec firewalld
Ce qui suit est une introduction aux fonctionnalités de firewalld
, telles que les services et les zones, et à la manière de gérer le service firewalld
systemd.
1.1.1. Quand utiliser firewalld, nftables ou iptables ?
Voici un bref aperçu des scénarios dans lesquels vous devez utiliser l'un des utilitaires suivants :
-
firewalld
: Utilisez l'utilitairefirewalld
pour des cas d'utilisation simples de pare-feu. L'utilitaire est facile à utiliser et couvre les cas d'utilisation typiques de ces scénarios. -
nftables
: Utilisez l'utilitairenftables
pour configurer des pare-feu complexes et critiques en termes de performances, par exemple pour l'ensemble d'un réseau. -
iptables
: L'utilitaireiptables
sur Red Hat Enterprise Linux utilise l'API du noyaunf_tables
au lieu de l'interfacelegacy
. L'APInf_tables
offre une compatibilité ascendante de sorte que les scripts qui utilisent les commandesiptables
fonctionnent toujours sur Red Hat Enterprise Linux. Pour les nouveaux scripts de pare-feu, Red Hat recommande d'utilisernftables
.
Pour éviter que les différents services de pare-feu ne s'influencent mutuellement, exécutez un seul d'entre eux sur un hôte RHEL et désactivez les autres services.
1.1.2. Zones
firewalld
peut être utilisé pour séparer les réseaux en différentes zones en fonction du niveau de confiance que l'utilisateur a décidé d'accorder aux interfaces et au trafic au sein de ce réseau. Une connexion ne peut faire partie que d'une seule zone, mais une zone peut être utilisée pour plusieurs connexions réseau.
NetworkManager
notifie à firewalld
la zone d'une interface. Vous pouvez assigner des zones aux interfaces avec :
-
NetworkManager
-
firewall-config
outil -
firewall-cmd
outil en ligne de commande - La console web RHEL
Les trois derniers ne peuvent éditer que les fichiers de configuration appropriés de NetworkManager
. Si vous changez la zone de l'interface à l'aide de la console web, firewall-cmd
ou firewall-config
, la demande est transmise à NetworkManager
et n'est pas traitée parfirewalld
.
Les zones prédéfinies sont stockées dans le répertoire /usr/lib/firewalld/zones/
et peuvent être appliquées instantanément à toute interface réseau disponible. Ces fichiers ne sont copiés dans le répertoire /etc/firewalld/zones/
qu'après avoir été modifiés. Les paramètres par défaut des zones prédéfinies sont les suivants :
block
-
Toute connexion réseau entrante est rejetée avec un message icmp-host-prohibited pour
IPv4
et icmp6-adm-prohibited pourIPv6
. Seules les connexions réseau initiées depuis l'intérieur du système sont possibles. dmz
- Pour les ordinateurs de votre zone démilitarisée qui sont accessibles au public avec un accès limité à votre réseau interne. Seules les connexions entrantes sélectionnées sont acceptées.
drop
- Tous les paquets réseau entrants sont abandonnés sans notification. Seules les connexions réseau sortantes sont possibles.
external
- À utiliser sur les réseaux externes où le masquage est activé, en particulier pour les routeurs. Vous ne faites pas confiance aux autres ordinateurs du réseau pour ne pas nuire à votre ordinateur. Seules les connexions entrantes sélectionnées sont acceptées.
home
- À utiliser à la maison lorsque vous faites essentiellement confiance aux autres ordinateurs du réseau. Seules les connexions entrantes sélectionnées sont acceptées.
internal
- À utiliser sur les réseaux internes lorsque vous faites essentiellement confiance aux autres ordinateurs du réseau. Seules les connexions entrantes sélectionnées sont acceptées.
public
- À utiliser dans les lieux publics où vous ne faites pas confiance aux autres ordinateurs du réseau. Seules les connexions entrantes sélectionnées sont acceptées.
trusted
- Toutes les connexions réseau sont acceptées.
work
- À utiliser au travail lorsque vous faites essentiellement confiance aux autres ordinateurs du réseau. Seules les connexions entrantes sélectionnées sont acceptées.
L'une de ces zones est définie comme la zone default. Lorsque des connexions d'interface sont ajoutées à NetworkManager
, elles sont affectées à la zone par défaut. Lors de l'installation, la zone par défaut dans firewalld
est définie comme étant la zone public
. La zone par défaut peut être modifiée.
Les noms des zones du réseau doivent être explicites et permettre aux utilisateurs de prendre rapidement une décision raisonnable. Pour éviter tout problème de sécurité, examinez la configuration de la zone par défaut et désactivez tous les services inutiles en fonction de vos besoins et de l'évaluation des risques.
Ressources supplémentaires
-
La page de manuel
firewalld.zone(5)
.
1.1.3. Services prédéfinis
Un service peut être une liste de ports locaux, de protocoles, de ports sources et de destinations, ainsi qu'une liste de modules d'aide au pare-feu automatiquement chargés si un service est activé. L'utilisation de services permet aux utilisateurs de gagner du temps car ils peuvent effectuer plusieurs tâches, telles que l'ouverture de ports, la définition de protocoles, l'activation du transfert de paquets et autres, en une seule étape, plutôt que de tout configurer l'un après l'autre.
Les options de configuration des services et les informations génériques sur les fichiers sont décrites dans la page de manuel firewalld.service(5)
. Les services sont spécifiés au moyen de fichiers de configuration XML individuels, qui sont nommés dans le format suivant : service-name.xml
. Les noms de protocoles sont préférés aux noms de services ou d'applications dans firewalld
.
Des services peuvent être ajoutés et supprimés à l'aide de l'outil graphique firewall-config
, firewall-cmd
et firewall-offline-cmd
.
Vous pouvez également modifier les fichiers XML dans le répertoire /etc/firewalld/services/
. Si un service n'est pas ajouté ou modifié par l'utilisateur, aucun fichier XML correspondant n'est trouvé dans /etc/firewalld/services/
. Les fichiers du répertoire /usr/lib/firewalld/services/
peuvent être utilisés comme modèles si vous souhaitez ajouter ou modifier un service.
Ressources supplémentaires
-
La page de manuel
firewalld.service(5)
1.1.4. Démarrer firewalld
Procédure
Pour démarrer
firewalld
, entrez la commande suivante en tant queroot
:# systemctl unmask firewalld # systemctl start firewalld
Pour que
firewalld
démarre automatiquement au démarrage du système, entrez la commande suivante en tant queroot
:# systemctl enable firewalld
1.1.5. Arrêt de firewalld
Procédure
Pour arrêter
firewalld
, entrez la commande suivante en tant queroot
:# systemctl stop firewalld
Pour éviter que
firewalld
ne démarre automatiquement au démarrage du système :# systemctl disable firewalld
Pour s'assurer que firewalld n'est pas démarré en accédant à l'interface
firewalld
D-Bus
et aussi si d'autres services nécessitentfirewalld
:# systemctl mask firewalld
1.1.6. Vérification de la configuration permanente de firewalld
Dans certaines situations, par exemple après avoir modifié manuellement les fichiers de configuration de firewalld
, les administrateurs souhaitent vérifier que les modifications sont correctes. Vous pouvez utiliser l'utilitaire firewall-cmd
pour vérifier la configuration.
Conditions préalables
-
Le service
firewalld
est en cours d'exécution.
Procédure
Vérifier la configuration permanente du service
firewalld
:# firewall-cmd --check-config success
Si la configuration permanente est valide, la commande renvoie
success
. Dans les autres cas, la commande renvoie une erreur avec des détails supplémentaires, tels que les suivants :# firewall-cmd --check-config Error: INVALID_PROTOCOL: 'public.xml': 'tcpx' not from {'tcp'|'udp'|'sctp'|'dccp'}