Configurer firewalld pour autoriser le trafic Web sous Linux

CompTIABeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez acquérir les compétences essentielles pour configurer firewalld sur un système Linux afin d'autoriser le trafic Web, grâce à une pratique concrète sur des serveurs réels. Vous utiliserez l'utilitaire en ligne de commande firewall-cmd pour gérer les zones et les services du pare-feu, une compétence de base pour tout administrateur système responsable de la sécurité des serveurs. L'objectif principal est d'ouvrir les ports standards pour le HTTP et le HTTPS, rendant ainsi un serveur Web accessible de l'extérieur tout en maintenant une posture de sécurité par défaut rigoureuse.

Vous commencerez par vérifier l'état du service firewalld, en vous assurant qu'il est installé, actif et configuré pour se lancer au démarrage. Vous procéderez ensuite au paramétrage de la zone par défaut sur public, et vous expérimenterez l'impact concret des règles de pare-feu en exécutant un serveur Web Python rudimentaire. En ajoutant et en supprimant des règles pour les services http et https, vous constaterez directement comment ces configurations affectent la connectivité réseau réelle. L'atelier se termine par la vérification de vos configurations et l'exploration d'autres options de firewall-cmd pour approfondir vos connaissances.

Vérifier l'état et la zone par défaut de firewalld

Dans cette étape, vous allez commencer à manipuler firewalld, un outil de gestion de pare-feu puissant et flexible pour Linux. Avant d'effectuer des modifications de configuration, il est primordial de vérifier si le service est installé et actif, et d'identifier ses paramètres par défaut actuels. Cela vous permet de disposer d'une base de référence claire.

Tout d'abord, assurons-nous que firewalld est installé sur votre système. Bien qu'il puisse déjà être présent, l'exécution de la commande d'installation est un moyen sûr de le confirmer. Ouvrez votre terminal et exécutez les commandes suivantes pour mettre à jour votre liste de paquets et installer firewalld :

sudo apt-get update && sudo apt-get install -y firewalld

Une fois l'installation terminée, firewalld devrait être actif par défaut. Pour le vérifier, examinez l'état du service firewalld à l'aide de la commande systemctl, utilisée pour la gestion des services dans les distributions Linux modernes.

Lancez cette commande pour voir si firewalld est actif :

sudo systemctl status firewalld

La sortie devrait afficher active (running), indiquant que le pare-feu est opérationnel.

Le service étant en cours d'exécution, vous pouvez maintenant inspecter sa configuration. firewalld utilise des "zones" pour gérer les niveaux de confiance des connexions réseau. Une zone est un ensemble prédéfini de règles. Déterminons quelle zone est actuellement définie par défaut.

Utilisez l'utilitaire firewall-cmd, l'interface principale en ligne de commande pour firewalld, pour obtenir la zone par défaut :

sudo firewall-cmd --get-default-zone

La commande renverra probablement public, qui est la zone par défaut pour les nouvelles installations.

public

Vous avez maintenant vérifié avec succès l'état de firewalld et identifié sa zone par défaut. Dans les étapes suivantes, vous apprendrez comment modifier cette configuration.

Définir la zone par défaut sur public

Dans cette étape, vous apprendrez à définir la zone par défaut pour firewalld. La zone par défaut est appliquée à toute interface réseau qui n'est pas explicitement assignée à une autre zone. Bien que la zone par défaut soit souvent public sur une nouvelle installation, savoir comment la configurer est une compétence fondamentale. La zone public est généralement utilisée pour les réseaux publics non sécurisés, où vous ne faites pas confiance aux autres ordinateurs du réseau.

Pour changer la zone par défaut, vous utiliserez la commande firewall-cmd avec l'option --set-default-zone. Ce changement est persistant et sera appliqué immédiatement.

Dans votre terminal, exécutez la commande suivante pour définir la zone par défaut sur public :

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

Après avoir exécuté la commande, firewalld confirmera que la modification a réussi.

success

Il est toujours recommandé de vérifier que vos modifications ont été correctement appliquées. Vous pouvez le faire en exécutant à nouveau la commande --get-default-zone, comme vous l'avez fait à l'étape précédente.

sudo firewall-cmd --get-default-zone

Le résultat devrait confirmer que la zone par défaut est désormais public.

public

Vous avez maintenant configuré et vérifié avec succès la zone par défaut de votre pare-feu. Cela garantit une posture de sécurité de base pour toutes les connexions réseau. Dans les étapes suivantes, vous ajouterez des règles à cette zone pour autoriser des types de trafic spécifiques.

Ajouter le service http à la zone public et tester avec un serveur Web

Dans cette étape, vous allez ajouter une règle à votre pare-feu pour autoriser le trafic Web, puis démontrer son impact concret en lançant un serveur Web simple. Par défaut, firewalld bloque la plupart du trafic entrant pour protéger votre système. Pour autoriser des connexions spécifiques, vous devez ajouter des règles pour les services que vous souhaitez exposer. firewalld utilise des "services" prédéfinis qui sont des noms faciles à retenir correspondant aux ports réseau standards. Par exemple, le service http correspond au port TCP 80, le port standard pour le trafic Web non chiffré.

Tout d'abord, vérifions l'état actuel du pare-feu pour la zone publique avant d'apporter des modifications :

sudo firewall-cmd --zone=public --list-services

Vous remarquerez que http ne figure pas initialement dans la liste, ce qui signifie que les connexions externes vers le port 80 sont bloquées.

Maintenant, ajoutons le service http à la zone public. Vous utiliserez la commande firewall-cmd avec l'option --add-service, en spécifiant la zone que vous souhaitez modifier :

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

Cette commande indique à firewalld de modifier la zone public en ajoutant la règle du service http. La modification est appliquée à la configuration d'exécution (runtime), ce qui signifie qu'elle prend effet immédiatement. Vous devriez voir un message de confirmation :

success

Vérifions que le service a été ajouté en consultant à nouveau la liste des services :

sudo firewall-cmd --zone=public --list-services

Vous devriez maintenant voir http dans la liste des services autorisés.

Pour illustrer l'impact pratique, démarrons un serveur Web simple. Nous utiliserons le serveur HTTP intégré de Python sur le port 80 :

cd /tmp
echo "<h1>Welcome to LabEx Firewall Demo</h1><p>This server is running on port 80</p>" > index.html
sudo python3 -m http.server 80

Notez que nous avons besoin de sudo car le port 80 est un port privilégié (inférieur à 1024). Laissez ce serveur tourner dans un terminal séparé.

Maintenant, depuis un autre terminal, testez la connexion :

curl http://localhost

La connexion fonctionne car le service http est désormais autorisé par le pare-feu. Notez que les connexions via localhost peuvent parfois contourner les règles du pare-feu, mais le point essentiel est que les connexions externes vers le port 80 seraient désormais autorisées.

Pour illustrer davantage les capacités de gestion du pare-feu, supprimons temporairement le service HTTP :

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

Vérifiez la liste des services pour confirmer la suppression :

sudo firewall-cmd --zone=public --list-services

Vous devriez constater que http n'est plus dans la liste. Ajoutez à nouveau le service :

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

Vérifiez qu'il est de nouveau présent :

sudo firewall-cmd --zone=public --list-services

Vous avez appris avec succès comment gérer le service HTTP dans le pare-feu et avez pu observer les changements de configuration. Le concept clé est que sans la règle du service http, les connexions externes vers le port 80 seraient bloquées, même si un serveur Web est en cours d'exécution. Vous pouvez arrêter le serveur Web avec Ctrl+C une fois la démonstration terminée.

Ajouter le service https à la zone public et tester la configuration HTTPS

Dans cette étape, vous allez poursuivre la configuration de votre pare-feu en ajoutant le service https. Alors que le http permet le trafic Web standard, les communications Web modernes reposent sur le https (HTTP Secure) pour le chiffrement et la sécurité. Le service https correspond au port TCP 443 et est indispensable pour tout serveur manipulant des informations sensibles.

Avant d'ajouter le service HTTPS, vérifions ce qui se passe lorsque nous essayons de tester la connectivité HTTPS sans la règle de pare-feu. Exécutez la commande suivante pour vérifier les services actuels du pare-feu :

sudo firewall-cmd --zone=public --list-services

Vous devriez voir http dans la liste, mais pas https.

Maintenant, ajoutons le service https à la zone public. Vous utiliserez la commande firewall-cmd --add-service pour autoriser le trafic https à travers la zone public. Cela garantit que votre serveur peut accepter des connexions sécurisées de la part d'utilisateurs externes.

Dans votre terminal, lancez la commande suivante pour ajouter le service https :

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

Cette commande modifie la configuration d'exécution de la zone public pour inclure une règle pour le service https. firewalld confirmera l'ajout réussi de la règle.

success

Vérifions maintenant que le service HTTPS a été ajouté en consultant à nouveau la liste des services :

sudo firewall-cmd --zone=public --list-services

Vous devriez maintenant voir à la fois http et https dans la sortie, confirmant que votre pare-feu est configuré pour autoriser les deux types de trafic Web.

Pour démontrer la différence concrète, vous pouvez également vérifier quels ports sont désormais ouverts :

sudo firewall-cmd --zone=public --list-ports
sudo firewall-cmd --zone=public --list-services

La commande --list-services affiche les services par leur nom, et vous pouvez constater que le service http correspond au port 80 et https au port 443.

Vous avez maintenant configuré votre pare-feu pour autoriser le trafic Web standard (http) et sécurisé (https). Il s'agit d'une configuration courante et nécessaire pour héberger des sites Web qui traitent des données sensibles ou nécessitent des connexions sécurisées.

Vérifier que les services Web sont ajoutés à la zone public

Dans cette étape, vous allez confirmer que les services http et https ont été ajoutés avec succès à la zone public. Après avoir effectué des modifications de configuration, il est crucial de vérifier qu'elles ont été appliquées comme prévu. Cela garantit que votre pare-feu est dans l'état souhaité et facilite le dépannage.

Pour voir la liste de tous les services actuellement autorisés dans une zone, vous pouvez utiliser la commande firewall-cmd avec l'option --list-services. Comme vous avez ajouté les services à la zone public, vous devez la spécifier dans la commande.

Exécutez la commande suivante dans votre terminal pour lister les services actifs pour la zone public :

sudo firewall-cmd --list-services --zone=public

La sortie affichera une liste de noms de services. Vous devriez voir http et https dans cette liste, aux côtés d'autres services qui pourraient être activés par défaut, tels que dhcpv6-client et ssh.

dhcpv6-client ssh http https

La présence de http et https dans la sortie confirme que vous avez configuré avec succès le pare-feu pour autoriser le trafic Web entrant. Votre système est maintenant prêt à servir du contenu Web sur les ports standards et sécurisés.

Explorer les commandes disponibles avec firewall-cmd --help

Dans cette dernière étape, vous apprendrez à explorer par vous-même les capacités de firewall-cmd. Les outils en ligne de commande disposent souvent de nombreuses options et fonctionnalités, et savoir accéder à leur documentation intégrée est une compétence cruciale pour tout utilisateur Linux. L'option --help est un moyen universel d'obtenir un aperçu rapide de la syntaxe d'une commande et des options disponibles.

Pour voir toutes les commandes et options disponibles pour firewall-cmd, exécutez la commande suivante dans votre terminal. Notez que cette commande ne nécessite pas sudo car elle ne fait qu'afficher des informations.

firewall-cmd --help

Cette commande affichera une longue liste d'options dans votre terminal. Vous pouvez faire défiler vers le haut pour tout voir. La sortie commencera par quelque chose comme ceci :

Usage: firewall-cmd [OPTIONS...]

General Options
  -h, --help            Prints a short help text and exists
  -V, --version         Print the version string of firewalld
  -q, --quiet           Do not print status messages

Status Options
  --state               Get state of firewalld
  --reload              Reload firewall rules and keep state information
  --complete-reload     Reload firewall rules and lose state information
  --runtime-to-permanent
                        Save runtime configuration to permanent
...

Prenez un moment pour parcourir la sortie. Vous verrez des sections pour les "Options de zone" (Zone Options), les "Options de service" (Service Options), les "Options de port" (Port Options), et bien d'autres. C'est une excellente ressource pour découvrir de nouvelles fonctionnalités ou vous rappeler la syntaxe d'une commande que vous n'utilisez pas souvent. Par exemple, vous pouvez voir l'option --remove-service, qui est le pendant de la commande --add-service que vous avez utilisée précédemment.

Félicitations ! Vous avez terminé cet atelier et appris les opérations de base de firewalld. Vous savez désormais vérifier son état, gérer les zones et ajouter des services pour autoriser un trafic spécifique.

Résumé

Dans cet atelier, vous avez appris les étapes fondamentales pour gérer et configurer firewalld sur un système Linux grâce à des démonstrations concrètes de son impact. Vous avez commencé par vous assurer que le service firewalld était installé, puis vous avez utilisé les commandes systemctl pour le démarrer, l'activer et vérifier son état. Vous avez également identifié la zone par défaut active et appris à la changer pour public à l'aide de firewall-cmd, établissant ainsi une base de référence claire pour les règles du pare-feu.

Le point fort de cet atelier a été la démonstration pratique des effets du pare-feu à l'aide d'un serveur Web réel. Vous avez mis en place un serveur HTTP Python simple et avez pu constater par vous-même comment les règles du pare-feu contrôlent l'accès au réseau. En ajoutant et en supprimant le service http de la zone public, vous avez été témoin de l'impact immédiat sur la connectivité Web, rendant le concept abstrait des règles de pare-feu tangible et concret.

En vous appuyant sur ces bases, vous avez configuré le pare-feu pour autoriser à la fois le trafic Web standard et sécurisé en ajoutant les services http et https à la zone public. Vous avez appris à vérifier vos modifications à l'aide de diverses options de firewall-cmd et avez exploré la relation entre les noms de services et leurs numéros de ports correspondants. Enfin, vous avez découvert comment accéder à la documentation d'aide complète de firewall-cmd, ce qui vous permet d'explorer les fonctionnalités avancées de manière autonome.