Comment configurer un pare-feu à l'aide de firewalld sur CentOS 8

De Get Docs
Aller à :navigation, rechercher

Introduction

firewalld est un logiciel de gestion de pare-feu disponible pour de nombreuses distributions Linux, qui agit comme une interface pour les systèmes de filtrage de paquets intégrés au noyau Linux nftables ou iptables.

Dans ce guide, nous allons vous montrer comment configurer un pare-feu avec pare-feu pour votre serveur CentOS 8 et couvrir les bases de la gestion du pare-feu avec l'outil d'administration firewall-cmd.

Conditions préalables

Pour terminer ce didacticiel, vous aurez besoin d'un serveur exécutant CentOS 8. Nous supposerons que vous êtes connecté à ce serveur en tant qu'utilisateur non root, sudo. Pour le configurer, consultez notre guide Configuration initiale du serveur pour CentOS 8.

Concepts de base dans firewalld

Avant de commencer à parler de l'utilisation réelle de l'utilitaire firewall-cmd pour gérer la configuration de votre pare-feu, nous devons nous familiariser avec quelques concepts introduits par l'outil.

Zones

Le démon firewalld gère des groupes de règles à l'aide d'entités appelées zones. Les zones sont des ensembles de règles qui dictent le trafic à autoriser en fonction du niveau de confiance que vous avez dans le réseau. Les interfaces réseau sont affectées à une zone pour dicter le comportement que le pare-feu doit autoriser.

Pour les ordinateurs susceptibles de se déplacer fréquemment entre les réseaux (comme les ordinateurs portables), ce type de flexibilité offre une bonne méthode pour modifier vos règles en fonction de votre environnement. Vous pouvez avoir mis en place des règles strictes interdisant la plupart du trafic lorsque vous utilisez un réseau Wi-Fi public, tout en autorisant des restrictions plus souples lorsque vous êtes connecté à votre réseau domestique. Pour un serveur, ces zones ne sont souvent pas aussi importantes car l'environnement réseau change rarement, voire jamais.

Quelle que soit la dynamique de votre environnement réseau, il est toujours utile de se familiariser avec l'idée générale derrière chacune des zones prédéfinies pour firewalld. Les zones prédéfinies dans firewalld sont, dans l'ordre de les moins fiables à les plus fiables :

  • drop : le niveau de confiance le plus bas. Toutes les connexions entrantes sont abandonnées sans réponse et seules les connexions sortantes sont possibles.
  • block : similaire à ce qui précède, mais au lieu de simplement supprimer les connexions, les requêtes entrantes sont rejetées avec un message icmp-host-prohibited ou icmp6-adm-prohibited.
  • public : représente les réseaux publics non approuvés. Vous ne faites pas confiance aux autres ordinateurs, mais vous pouvez autoriser certaines connexions entrantes au cas par cas.
  • external : réseaux externes dans le cas où vous utilisez le pare-feu comme passerelle. Il est configuré pour le masquage NAT afin que votre réseau interne reste privé mais accessible.
  • interne : 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 une 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. Faites 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 : Faites confiance à toutes les machines du réseau. La plus ouverte des options disponibles et doit être utilisée avec parcimonie.

Pour utiliser le pare-feu, nous pouvons créer des règles et modifier les propriétés de nos zones, puis attribuer nos interfaces réseau aux zones les plus appropriées.

Permanence de la règle

Dans firewalld, les règles peuvent être appliquées à l'ensemble de règles actuel runtime, 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 resteront.

La plupart des opérations firewall-cmd peuvent prendre un indicateur --permanent pour indiquer que les modifications doivent être appliquées à la configuration permanente. De plus, 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 l'exécution et la configuration permanente signifie que vous pouvez tester en toute sécurité les règles de votre pare-feu actif, puis recharger pour recommencer en cas de problème.

Installation et activation du pare-feu

firewalld est installé par défaut sur certaines distributions Linux, y compris de nombreuses images de CentOS 8. Cependant, il peut être nécessaire que vous installiez vous-même firewalld :

sudo dnf install firewalld

Après avoir installé firewalld, vous pouvez activer le service et redémarrer votre serveur. Gardez à l'esprit que l'activation de firewalld entraînera le démarrage du service au démarrage. Il est recommandé de créer vos règles de pare-feu et de profiter de l'occasion pour les tester avant de configurer ce comportement afin d'éviter les problèmes potentiels.

sudo systemctl enable firewalld
sudo systemctl start firewalld

Lorsque le serveur redémarre, votre pare-feu doit être activé, vos interfaces réseau doivent être placées dans les zones que vous avez configurées (ou revenir à la zone par défaut configurée) et toutes les règles associées à la ou aux zones seront appliquées aux zones associées. interfaces.

Nous pouvons vérifier que le service est en cours d'exécution et accessible en tapant :

sudo firewall-cmd --state
Outputrunning

Cela indique que notre pare-feu est opérationnel avec la configuration par défaut.

Se familiariser avec les règles actuelles du pare-feu

Avant de commencer à apporter des modifications, nous devons nous familiariser avec l'environnement par défaut et les règles fournies par firewalld.

Explorer les valeurs par défaut

Nous pouvons voir quelle zone est actuellement sélectionnée par défaut en tapant :

firewall-cmd --get-default-zone
Outputpublic

Étant donné que nous n'avons donné aucune commande à firewalld pour dévier de la zone par défaut, et qu'aucune de nos interfaces n'est configurée pour se lier à une autre zone, cette zone sera également la seule zone active (la zone qui contrôle le trafic de nos interfaces). Nous pouvons le vérifier en tapant :

firewall-cmd --get-active-zones
Outputpublic
  interfaces: eth0 eth1

Ici, nous pouvons voir que notre exemple de serveur a deux interfaces réseau contrôlées par le pare-feu (eth0 et eth1). Ils sont tous deux actuellement gérés selon les règles définies pour la zone publique.

Comment savoir quelles règles sont associées à la zone publique ? Nous pouvons imprimer la configuration de la zone par défaut en tapant :

sudo firewall-cmd --list-all
Outputpublic (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0 eth1
  sources:
  services: cockpit dhcpv6-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules: 

Nous pouvons dire à partir de la sortie que cette zone est à la fois la valeur par défaut et active, et que les interfaces eth0 et eth1 sont associées à cette zone (nous savions déjà tout cela grâce à nos enquêtes précédentes) . Cependant, nous pouvons également voir que cette zone autorise le trafic pour un client DHCP (pour l'attribution d'adresse IP), SSH (pour l'administration à distance) et Cockpit (une console Web).

Explorer des zones alternatives

Nous avons maintenant une bonne idée de la configuration de la zone par défaut et active. Nous pouvons également trouver des informations sur d'autres zones.

Pour obtenir une liste des zones disponibles, tapez :

firewall-cmd --get-zones
Outputblock dmz drop external home internal public trusted work

Nous pouvons voir la configuration spécifique associée à une zone en incluant le paramètre --zone= dans notre commande --list-all :

sudo firewall-cmd --zone=home --list-all
Outputhome
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: cockpit dhcpv6-client mdns samba-client ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Vous pouvez sortir toutes les définitions de zone en utilisant l'option --list-all-zones. Vous souhaiterez probablement diriger la sortie vers un téléavertisseur pour une visualisation plus facile :

sudo firewall-cmd --list-all-zones | less

Ensuite, nous apprendrons comment attribuer des zones aux interfaces réseau.

Sélection de zones pour vos interfaces

Sauf si vous avez configuré vos interfaces réseau autrement, chaque interface sera placée dans la zone par défaut au démarrage du pare-feu.

Modification de la zone d'une interface

Vous pouvez déplacer une interface entre les zones au cours d'une session en utilisant le paramètre --zone= en combinaison avec le paramètre --change-interface=. Comme pour toutes les commandes qui modifient le pare-feu, vous devrez utiliser sudo.

Par exemple, nous pouvons déplacer notre interface eth0 vers la zone home en tapant ceci :

sudo firewall-cmd --zone=home --change-interface=eth0
Outputsuccess

Remarque : Chaque fois que vous déplacez une interface vers une nouvelle zone, sachez que vous modifiez probablement les services qui seront opérationnels. Par exemple, nous passons ici à la zone home, qui dispose de SSH. Cela signifie que notre connexion ne devrait pas tomber. Certaines autres zones n'ont pas SSH activé par défaut, et le passage à l'une de ces zones pourrait entraîner l'interruption de votre connexion, vous empêchant de vous reconnecter à votre serveur.


Nous pouvons vérifier que cela a réussi en redemandant les zones actives :

firewall-cmd --get-active-zones
Outputhome
  interfaces: eth0
public
  interfaces: eth1

Réglage de la zone par défaut

Si toutes vos interfaces peuvent être bien gérées par une seule zone, il est probablement plus facile de simplement désigner la meilleure zone par défaut, puis de l'utiliser pour votre configuration.

Vous pouvez modifier la zone par défaut avec le paramètre --set-default-zone=. Cela changera immédiatement toute interface utilisant la zone par défaut :

sudo firewall-cmd --set-default-zone=home
Outputsuccess

Définir des règles pour vos applications

Passons en revue la méthode de base de définition des exceptions de pare-feu pour les services que vous souhaitez rendre disponibles.

Ajouter un service à vos zones

La méthode la plus simple consiste à ajouter les services ou les ports dont vous avez besoin aux zones que vous utilisez. Vous pouvez obtenir une liste des définitions de service disponibles avec l'option --get-services :

firewall-cmd --get-services
OutputRH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

Remarque : Vous pouvez obtenir plus de détails sur chacun de ces services en consultant leur fichier .xml associé dans le répertoire /usr/lib/firewalld/services. Par exemple, le service SSH est défini comme ceci :

/usr/lib/firewalld/services/ssh.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

Vous pouvez activer un service pour une zone à l'aide du paramètre --add-service=. L'opération ciblera la zone par défaut ou toute zone spécifiée par le paramètre --zone=. Par défaut, cela n'ajustera que la session de pare-feu en cours. Vous pouvez ajuster la configuration permanente du pare-feu en incluant le drapeau --permanent.

Par exemple, si nous exécutons un serveur Web servant du trafic HTTP conventionnel, nous pouvons temporairement autoriser ce trafic pour les interfaces de notre zone public en tapant :

sudo firewall-cmd --zone=public --add-service=http

Vous pouvez omettre le drapeau --zone= si vous souhaitez modifier la zone par défaut. Nous pouvons vérifier que l'opération a réussi en utilisant les opérations --list-all ou --list-services :

sudo firewall-cmd --zone=public --list-services
Outputcockpit dhcpv6-client http ssh

Une fois que vous aurez testé que tout fonctionne comme il se doit, vous souhaiterez probablement modifier les règles permanentes du pare-feu afin que votre service soit toujours disponible après un redémarrage. Nous pouvons rendre permanent notre changement précédent en le retapant et en ajoutant le drapeau --permanent :

sudo firewall-cmd --zone=public --add-service=http --permanent
Outputsuccess

Vous pouvez également utiliser l'indicateur --runtime-to-permanent pour enregistrer la configuration du pare-feu en cours d'exécution dans la configuration permanente :

sudo firewall-cmd --runtime-to-permanent

Soyez prudent avec cela, car toutes modifications apportées au pare-feu en cours d'exécution seront validées de manière permanente.

Quelle que soit la méthode choisie, vous pouvez vérifier qu'elle a réussi en ajoutant l'indicateur --permanent à l'opération --list-services. Vous devez utiliser sudo pour toutes les opérations --permanent :

sudo firewall-cmd --zone=public --list-services --permanent
Outputcockpit dhcpv6-client http ssh

Votre zone public autorisera désormais le trafic Web HTTP sur le port 80. Si votre serveur Web est configuré pour utiliser SSL/TLS, vous souhaiterez également ajouter le service https. Nous pouvons ajouter cela à la session en cours et au jeu de règles permanent en tapant :

sudo firewall-cmd --zone=public --add-service=https
sudo firewall-cmd --zone=public --add-service=https --permanent 

Que faire si aucun service approprié n'est disponible ?

Les services inclus avec l'installation de firewalld représentent la plupart des applications les plus courantes auxquelles vous pouvez souhaiter autoriser l'accès. Cependant, il y aura probablement des scénarios où ces services ne répondront pas à vos besoins.

Dans cette situation, vous avez deux options.

Ouvrir un port pour vos zones

Le moyen le plus simple d'ajouter la prise en charge de votre application spécifique consiste à ouvrir les ports qu'elle utilise dans la ou les zones appropriées. Cela se fait en spécifiant le port ou la plage de ports, et le protocole associé (TCP ou UDP) pour les ports.

Par exemple, si notre application s'exécute sur le port 5000 et utilise TCP, nous pourrions temporairement l'ajouter à la zone public en utilisant le paramètre --add-port=. Les protocoles peuvent être désignés comme tcp ou udp :

sudo firewall-cmd --zone=public --add-port=5000/tcp
Outputsuccess

Nous pouvons vérifier que cela a réussi en utilisant l'opération --list-ports :

sudo firewall-cmd --zone=public --list-ports
Output5000/tcp

Il est également possible de spécifier une plage séquentielle de ports en séparant le port de début et de fin de la plage par un tiret. Par exemple, si notre application utilise les ports UDP 4990 à 4999, nous pourrions les ouvrir sur public en tapant :

sudo firewall-cmd --zone=public --add-port=4990-4999/udp

Après les tests, nous voudrions probablement les ajouter au pare-feu permanent. Utilisez sudo firewall-cmd --runtime-to-permanent pour ce faire, ou relancez les commandes avec le drapeau --permanent :

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
Outputsuccess
success
5000/tcp 4990-4999/udp

Définir un service

L'ouverture de ports pour vos zones est une solution simple, mais il peut être difficile de savoir à quoi sert chacun. Si jamais vous désactivez un service sur votre serveur, vous aurez peut-être du mal à vous souvenir des ports qui ont été ouverts et qui sont encore nécessaires. Pour éviter cette situation, il est possible de définir un nouveau service.

Les services sont des ensembles de ports avec un nom et une description associés. L'utilisation des services est plus facile à administrer que les ports, mais nécessite un peu de travail initial. La façon la plus simple de commencer est de copier un script existant (trouvé dans /usr/lib/firewalld/services) dans le répertoire /etc/firewalld/services où le pare-feu recherche les définitions non standard.

Par exemple, nous pourrions copier la définition de service SSH à utiliser pour notre définition de service exemple comme celle-ci. Le nom de fichier moins le suffixe .xml dictera le nom du service dans la liste des services de pare-feu :

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml

Maintenant, vous pouvez ajuster la définition trouvée dans le fichier que vous avez copié. Ouvrez-le d'abord dans votre éditeur de texte préféré. Nous utiliserons vi ici :

sudo vi /etc/firewalld/services/example.xml

Pour commencer, le fichier contiendra la définition SSH que vous avez copié :

/etc/firewalld/services/example.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

La majorité de cette définition est en fait des métadonnées. Vous voudrez changer le nom abrégé du service dans les balises <short>. Il s'agit d'un nom lisible pour votre service. Vous devez également ajouter une description afin d'avoir plus d'informations si jamais vous avez besoin d'auditer le service. La seule configuration que vous devez effectuer et qui affecte réellement la fonctionnalité du service sera probablement la définition de port où vous identifiez le numéro de port et le protocole que vous souhaitez ouvrir. Plusieurs balises <port/> peuvent être spécifiées.

Pour notre service exemple, imaginons que nous devions ouvrir le port 7777 pour TCP et 8888 pour UDP. Nous pouvons modifier la définition existante avec quelque chose comme ceci :

/etc/firewalld/services/example.xml

<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Example Service</short>
  <description>This is just an example service. It probably shouldn't be used on a real system.</description>
  <port protocol="tcp" port="7777"/>
  <port protocol="udp" port="8888"/>
</service>

Enregistrez et fermez le fichier.

Rechargez votre pare-feu pour accéder à votre nouveau service :

sudo firewall-cmd --reload

Vous pouvez voir qu'il fait désormais partie de la liste des services disponibles :

firewall-cmd --get-services
OutputRH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server example finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

Vous pouvez maintenant utiliser ce service dans vos zones comme vous le feriez normalement.

Créer vos propres zones

Alors que les zones prédéfinies seront probablement plus que suffisantes pour la plupart des utilisateurs, il peut être utile de définir vos propres zones plus descriptives de leur fonction.

Par exemple, vous pouvez créer une zone pour votre serveur Web, appelée publicweb. Cependant, vous souhaiterez peut-être configurer une autre zone pour le service DNS que vous fournissez sur votre réseau privé. Vous voudrez peut-être une zone appelée "privateDNS" pour cela.

Lors de l'ajout d'une zone, vous devez l'ajouter à la configuration permanente du pare-feu. Vous pouvez ensuite recharger pour intégrer la configuration dans votre session en cours d'exécution. Par exemple, nous pourrions créer les deux zones dont nous avons parlé ci-dessus en tapant :

sudo firewall-cmd --permanent --new-zone=publicweb
sudo firewall-cmd --permanent --new-zone=privateDNS

Vous pouvez vérifier que ceux-ci sont bien présents dans votre configuration permanente en tapant :

sudo firewall-cmd --permanent --get-zones
Outputblock dmz drop external home internal privateDNS public publicweb trusted work

Comme indiqué précédemment, ceux-ci ne seront pas encore disponibles dans le pare-feu d'exécution :

firewall-cmd --get-zones
Outputblock dmz drop external home internal public trusted work

Rechargez le pare-feu pour intégrer ces nouvelles zones dans la configuration d'exécution active :

sudo firewall-cmd --reload
firewall-cmd --get-zones
Outputblock dmz drop external home internal privateDNS public publicweb trusted work

Vous pouvez maintenant commencer à attribuer les services et ports appropriés à vos zones. C'est généralement une bonne idée d'ajuster le pare-feu d'exécution, puis d'enregistrer ces modifications dans la configuration permanente après le test. Par exemple, pour la zone publicweb, vous pouvez ajouter les services SSH, HTTP et HTTPS :

sudo firewall-cmd --zone=publicweb --add-service=ssh
sudo firewall-cmd --zone=publicweb --add-service=http
sudo firewall-cmd --zone=publicweb --add-service=https
sudo firewall-cmd --zone=publicweb --list-all
Outputpublicweb
  target: default
  icmp-block-inversion: no
  interfaces: 
  sources: 
  services: http https ssh
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

De même, nous pouvons ajouter le service DNS à notre zone privateDNS :

sudo firewall-cmd --zone=privateDNS --add-service=dns
sudo firewall-cmd --zone=privateDNS --list-all
OutputprivateDNS
  target: default
  icmp-block-inversion: no
  interfaces:
  sources:
  services: dns
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Nous pourrions alors changer nos interfaces vers ces nouvelles zones pour les tester :

sudo firewall-cmd --zone=publicweb --change-interface=eth0
sudo firewall-cmd --zone=privateDNS --change-interface=eth1

À ce stade, vous avez la possibilité de tester votre configuration. Si ces valeurs vous conviennent, vous voudrez ajouter ces règles à la configuration permanente. Vous pourriez le faire en exécutant à nouveau toutes les commandes avec l'indicateur --permanent ajouté, mais dans ce cas, nous utiliserons l'indicateur --runtime-to-permanent pour enregistrer de manière permanente l'ensemble de notre configuration d'exécution :

sudo firewall-cmd --runtime-to-permanent

Après avoir appliqué ces règles de manière permanente, rechargez le pare-feu pour tester que les modifications sont conservées :

sudo firewall-cmd --reload

Vérifiez que les bonnes zones ont été attribuées :

firewall-cmd --get-active-zones
OutputprivateDNS
  interfaces: eth1
publicweb
  interfaces: eth0

Et validez que les services appropriés sont disponibles pour les deux zones :

sudo firewall-cmd --zone=publicweb --list-services
Outputhttp https ssh
sudo firewall-cmd --zone=privateDNS --list-services
Outputdns

Vous avez configuré avec succès vos propres zones ! Si vous souhaitez faire de l'une de ces zones la zone par défaut pour d'autres interfaces, n'oubliez pas de configurer ce comportement avec le paramètre --set-default-zone= :

sudo firewall-cmd --set-default-zone=publicweb

Conclusion

Vous devriez maintenant avoir une compréhension assez approfondie de la façon d'administrer le service firewalld sur votre système CentOS pour une utilisation quotidienne.

Le service firewalld vous permet de configurer des règles et des ensembles de règles maintenables qui tiennent compte de votre environnement réseau. Il vous permet de passer de manière transparente entre différentes politiques de pare-feu grâce à l'utilisation de zones et donne aux administrateurs la possibilité d'abstraire la gestion des ports dans des définitions de service plus conviviales. L'acquisition d'une connaissance pratique de ce système vous permettra de profiter de la flexibilité et de la puissance que cet outil offre.

Pour plus d'informations sur firewalld, veuillez consulter la documentation officielle de firewalld.