Tutorial

Comment configurer un pare-feu en utilisant firewalld sur CentOS 8

Published on May 1, 2020
Français
Comment configurer un pare-feu en utilisant firewalld sur CentOS 8

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.

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

Conditions préalables

Pour suivre ce tutoriel, vous aurez besoin d’un serveur qui exécute CentOS 8. Nous supposerons que vous êtes connecté à ce serveur en tant qu’utilisateur non root et sudo. Pour le configurer, consultez notre Guide de configuration initiale du serveur pour CentOS 8.

Concepts de base dans firewalld

Avant de commencer à parler de la façon d’utiliser réellement l’utilitaire firewall-cmd pour gérer la configuration de votre pare-feu, nous devons nous familiariser avec quelques concepts que l’outil introduit.

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. Vous pouvez avoir mis en place des règles strictes interdisant la plupart du trafic lorsque vous opérez sur un réseau WiFi 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 qui se cache derrière chacune des zones prédéfinies pour firewalld.  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.
  • 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 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.

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

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, dont de nombreuses images de CentOS 8. Cependant, il peut vous être nécessaire d’installer firewalld vous-même :

  1. sudo dnf install firewalld

Après avoir installé firewalld, vous pouvez activer le service et redémarrer de votre serveur. Gardez à l’esprit que l’activation de firewalld entraînera le lancement du service au démarrage. Il est préférable 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.

  1. sudo systemctl enable firewalld
  2. sudo systemctl start firewalld

Lorsque le serveur redémarre, votre pare-feu devrait s’afficher, vos 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.

Nous pouvons vérifier que le service fonctionne et est accessible en tapant :

  1. sudo firewall-cmd --state
Output
running

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 devrions nous familiariser avec l’environnement et les règles par défaut fournis par firewalld.

Explorer les valeurs par défaut

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

  1. firewall-cmd --get-default-zone
Output
public

Comme nous n’avons donné à Firewalld aucune commande 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 vérifier cela en tapant :

  1. firewall-cmd --get-active-zones
Output
public interfaces: eth0 eth1

Ici, nous pouvons voir que notre serveur d’exemple possède deux interfaces réseau contrôlées par le pare-feu (eth0 et eth1). Elles sont toutes deux gérées actuellement en fonction des règles définies pour la zone public.

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

  1. sudo firewall-cmd --list-all
Output
public (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 par défaut et active, et que les interfaces eth0 et eth1 sont associées à cette zone (nous savions déjà tout cela lors de nos précédentes demandes). Cependant, nous pouvons également voir que cette zone permet le trafic d’un client DHCP (pour l’attribution d’adresses IP), SSH (pour l’administration à distance), et Cockpit (une console basée sur le web).

Explorer les zones alternatives

Nous avons maintenant une bonne idée de la configuration pour 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 :

  1. firewall-cmd --get-zones
Output
block 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 :

  1. sudo firewall-cmd --zone=home --list-all
Output
home 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 produire toutes les définitions de zones en utilisant l’option --list-all-zones. Vous allez probablement acheminer la sortie dans un pager pour qu’elle soit plus facile à consulter :

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

Ensuite, nous allons apprendre à assigner des zones aux interfaces de réseau.

Sélection de zones pour vos interfaces

À moins que vous n’ayez configuré vos interfaces de réseau autrement, chaque interface sera mise dans la zone par défaut lorsque le pare-feu est démarré.

Changer la zone d’une interface

Vous pouvez déplacer une interface entre les zones pendant 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 :

  1. sudo firewall-cmd --zone=home --change-interface=eth0
Output
success

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, ici nous nous déplaçons vers la zone home, qui dispose de SSH.  Cela signifie que notre connexion ne doit pas être interrompue. Certaines autres zones n’ont pas SSH activé par défaut, et le passage à l’une de ces zones pourrait entraîner la perte de votre connexion, vous empêchant de vous reconnecter à votre serveur.

Nous pouvons vérifier que cela a réussi en demandant à nouveau les zones actives :

  1. firewall-cmd --get-active-zones
Output
home interfaces: eth0 public interfaces: eth1

Ajuster 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 désigner la meilleure zone comme zone par défaut et de l’utiliser ensuite 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 :

  1. sudo firewall-cmd --set-default-zone=home
Output
success

Définir des règles pour vos applications

Passons en revue la méthode de base pour définir les 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 :

  1. firewall-cmd --get-services
Output
RH-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 le fichier .xml qui leur est 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 en utilisant le paramètre --add-service= L’opération ciblera la zone par défaut ou toute zone est spécifiée par le paramètre --zone=. 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.

Par exemple, si nous exploitons un serveur web desservant un trafic HTTP classique, nous pouvons temporairement autoriser ce trafic pour les interfaces dans notre zone public en tapant :

  1. 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 :

  1. sudo firewall-cmd --zone=public --list-services
Output
cockpit dhcpv6-client http ssh

Une fois que vous avez vérifié que tout fonctionne comme il devrait, vous allez probablement vouloir modifier les règles de pare-feu permanent de sorte que votre service soit toujours disponible après un redémarrage. Nous pouvons rendre notre changement précédent permanent en le répétant et en ajoutant le drapeau --permanent :

  1. sudo firewall-cmd --zone=public --add-service=http --permanent
Output
success

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

  1. sudo firewall-cmd --runtime-to-permanent

Faites attention à cela, car toutes les modifications apportées au pare-feu en cours d’exécution seront appliquées de manière permanente.

Quelle que soit la méthode que vous avez choisie, vous pouvez vérifier qu’elle a réussi en ajoutant le drapeau --permanent à l’opération --list-services. Vous devez utiliser sudo pour toute opération --permanent :

  1. sudo firewall-cmd --zone=public --list-services --permanent
Output
cockpit 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 voudrez également ajouter le service https.  Nous pouvons ajouter cela à la session en cours et au jeu de règles permanent en tapant :

  1. sudo firewall-cmd --zone=public --add-service=https
  2. sudo firewall-cmd --zone=public --add-service=https --permanent

Que faire si aucun service approprié est disponible ?

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 à vos exigences.

Dans cette situation, vous disposez de deux options.

Ouvrir un port pour vos 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.

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

  1. sudo firewall-cmd --zone=public --add-port=5000/tcp
Output
success

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

  1. sudo firewall-cmd --zone=public --list-ports
Output
5000/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 avec un tiret. Par exemple, si notre application utilise UDP ports 4990 à 4999, nous pourrions les ouvrir sur public en tapant :

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

Après avoir testé, nous voudrions probablement les ajouter au pare-feu permanent. Utilisez sudo firewall-cmd --runtime-to-permanent pour faire cela ou réexécutez les commandes avec le drapeau --permanent :

  1. sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
  2. sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
  3. sudo firewall-cmd --zone=public --permanent --list-ports
Output
success 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 chacun d’entre eux sert. 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 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. La façon la plus simple de commencer 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.

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

  1. 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 :

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

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

/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 aurez besoin de changer le nom abrégé du service dans les balises <short>. Il s’agit d’un nom lisible par un humain pour votre service. Vous devez également ajouter une description afin de disposer de plus d’informations si jamais vous avez besoin de vérifier le service. La seule configuration que vous devez effectuer et qui affecte réellement la fonctionnalité du service sera probablement la définition du 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 exemple de service, imaginez que nous devons ouvrir le port 7777 pour TCP et 8888 pour UDP. Nous pouvons modifier la définition existante avec quelque chose de ce type :

/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 :

  1. sudo firewall-cmd --reload

Vous pouvez voir qu’il se trouve maintenant parmi la liste des services disponibles :

  1. firewall-cmd --get-services
Output
RH-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éation de vos propres zones

Bien 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 qui décrivent mieux leur fonction.

Par exemple, vous pouvez créer une zone pour votre serveur web, appelé publicweb. Cependant, vous pouvez avoir une autre zone configurée pour le service DNS que vous fournissez sur votre réseau privé. Vous pouvez vouloir une zone appelée “privateDNS” pour cela.

Lorsque vous ajoutez une zone, vous devez l’ajouter à la configuration du pare-feu permanent. Vous pouvez ensuite recharger pour intégrer la configuration dans votre session en cours. Par exemple, nous pourrions créer les deux zones dont nous avons parlé ci-dessus en tapant :

  1. sudo firewall-cmd --permanent --new-zone=publicweb
  2. sudo firewall-cmd --permanent --new-zone=privateDNS

Vous pouvez vérifier qu’elles sont présentes dans votre configuration permanente en tapant :

  1. sudo firewall-cmd --permanent --get-zones
Output
block dmz drop external home internal privateDNS public publicweb trusted work

Comme indiqué précédemment, ils ne seront pas encore disponibles dans le pare-feu en exécution :

  1. firewall-cmd --get-zones
Output
block dmz drop external home internal public trusted work

Rechargez le pare-feu pour amener ces nouvelles zones dans la configuration d’exécution active :

  1. sudo firewall-cmd --reload
  2. firewall-cmd --get-zones
Output
block dmz drop external home internal privateDNS public publicweb trusted work

Maintenant, vous pouvez affecter les services et les ports appropriés à vos zones. Il est généralement bon de régler le pare-feu en cours d’exécution et d’enregistrer ces modifications dans la configuration permanente après l’avoir testé. Par exemple, pour la zone publicweb , vous pouvez vouloir ajouter les services SSH, HTTP et HTTPS :

  1. sudo firewall-cmd --zone=publicweb --add-service=ssh
  2. sudo firewall-cmd --zone=publicweb --add-service=http
  3. sudo firewall-cmd --zone=publicweb --add-service=https
  4. sudo firewall-cmd --zone=publicweb --list-all
Output
publicweb 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 :

  1. sudo firewall-cmd --zone=privateDNS --add-service=dns
  2. sudo firewall-cmd --zone=privateDNS --list-all
Output
privateDNS 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 pour ces nouvelles zones afin de les tester :

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

À ce stade, vous avez la possibilité de tester votre configuration. Si ces valeurs vous conviennent, vous allez vouloir ajouter ces règles à la configuration permanente. Vous pourriez le faire en exécutant à nouveau toutes les commandes avec le drapeau --permanent annexé, mais dans ce cas, nous utiliserons le drapeau --runtime-to-permanent pour sauvegarder de façon permanente l’ensemble de notre configuration d’exécution :

  1. sudo firewall-cmd --runtime-to-permanent

Après avoir appliqué ces règles de manière permanente, rechargez le pare-feu pour vérifier que les changements demeurent :

  1. sudo firewall-cmd --reload

Valider que les zones correctes ont été attribuées :

  1. firewall-cmd --get-active-zones
Output
privateDNS interfaces: eth1 publicweb interfaces: eth0

Et validezt le fait que les services appropriés sont disponibles pour les deux zones :

  1. sudo firewall-cmd --zone=publicweb --list-services
Output
http https ssh
  1. sudo firewall-cmd --zone=privateDNS --list-services
Output
dns

Vous avez configuré vos propres zones avec succès ! Si vous voulez 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= :

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

Conclusion

Vous devriez maintenant avoir une compréhension assez complète 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 prennent en compte votre environnement réseau. Il vous permet de passer en toute transparence d’une politique de pare-feu à l’autre en utilisant des zones et donne aux administrateurs la possibilité d’abstraire la gestion des ports en des définitions de service plus conviviales. L’acquisition d’une connaissance pratique de ce système vous permettra de tirer parti de la flexibilité et de la puissance que cet outil procure.

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

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
1 Comments


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Belle explication Merci. Pourtant je me demande comment faire du knock,knock,knock avec firewalld ?

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel