Aller au contenu

Maîtriser Firewalld

Mise à jour :

Firewalld

Dans un monde où les menaces en ligne sont de plus en plus sophistiquées et omniprésentes, la sécurité informatique est devenue une priorité absolue. Le principe Zero Trust (Zéro Confiance) émerge comme une philosophie de sécurité radicalement nouvelle qui remet en question l’approche traditionnelle de la sécurité des réseaux.

Dans ce guide, je vous guiderai dans l’univers de Firewalld, le gestionnaire de pare-feu dynamique de Linux. Que vous soyez un débutant cherchant à comprendre les bases ou un administrateur système chevronné souhaitant exploiter au maximum ses fonctionnalités avancées, ce guide est fait pour vous.

Nous commencerons par les bases, expliquant ce qu’est Firewalld, comment l’installer et les distributions Linux sur lesquelles vous pouvez le trouver. Ensuite, nous vous guiderons à travers la configuration de base, la gestion des zones de sécurité et l’autorisation du trafic réseau essentiel.

Qu’est-ce que Firewalld ?

Firewalld est un pare-feu dynamique pour les systèmes Linux. Il s’agit d’un outil puissant qui vous permet de contrôler le trafic réseau entrant et sortant de votre système. En d’autres termes, Firewalld agit comme une barrière de sécurité qui filtre les connexions réseau, autorisant uniquement celles qui sont autorisées et bloquant celles qui sont potentiellement dangereuses.

Pourquoi avez-vous besoin de Firewalld ?

La sécurité est une préoccupation majeure pour tout système connecté à un réseau, qu’il s’agisse d’un serveur Web, d’un ordinateur de bureau ou d’un ordinateur portable. Voici quelques raisons pour lesquelles vous avez besoin de Firewalld :

  • Protection contre les menaces en ligne : Internet est rempli de menaces, notamment les intrusions, les tentatives de piratage et les logiciels malveillants. Firewalld vous aide à bloquer ces menaces avant qu’elles n’atteignent votre système.
  • Contrôle de l’accès réseau : Vous pouvez utiliser Firewalld pour spécifier quelles connexions sont autorisées et lesquelles ne le sont pas. Cela vous permet de définir des règles de sécurité strictes.
  • Protection des services : Si votre système exécute des services tels qu’un serveur Web, vous pouvez utiliser Firewalld pour restreindre l’accès aux ports nécessaires uniquement, ce qui réduit la surface d’attaque.
  • Simplicité de gestion : Firewalld simplifie la gestion des règles de pare-feu en utilisant des zones et des services préconfigurés, ce qui le rend convivial même pour les débutants.

Comment fonctionne Firewalld ?

Firewalld utilise une approche basée sur des zones pour définir différents niveaux de sécurité. Voici comment cela fonctionne :

  • Zones : Chaque interface réseau de votre système est associée à une zone spécifique, telle que “public”, “internal”, “work”, etc. Chaque zone a ses propres règles de sécurité. Par exemple, la zone “public” peut être plus restrictive que la zone “internal”.
  • Services : Firewalld utilise des services préconfigurés (par exemple, “ssh”, “http”, “https”) pour simplifier la configuration. Vous pouvez attribuer des services à des zones, ce qui permet de spécifier quelles connexions sont autorisées pour chaque service.
  • Règles personnalisées : Si vous avez des besoins spécifiques, vous pouvez également créer des règles personnalisées pour définir des comportements de pare-feu précis.

Maintenant que vous avez une idée générale de ce qu’est Firewalld et pourquoi il est essentiel, passons à la pratique.

Installation de Firewalld

Maintenant que vous avez compris ce qu’est Firewalld et pourquoi il est essentiel pour renforcer la sécurité de votre système Linux, passons à l’étape suivante : l’installation de Firewalld sur votre distribution.

Installation de Firewalld sur Fedora

Si vous utilisez Fedora, vous êtes chanceux, car Firewalld est déjà préinstallé par défaut. Vous n’avez donc pas besoin de l’installer. Vous pouvez simplement passer à la configuration et à l’utilisation de Firewalld.

Installation de Firewalld sur Red Hat Enterprise Linux (RHEL) et CentOS

RHEL et CentOS sont également livrés avec Firewalld, mais vous pouvez vérifier s’il est installé avec la commande suivante :

Terminal window
sudo firewall-cmd --version
1.1.1

Si vous obtenez une sortie avec la version de Firewalld, cela signifie qu’il est déjà installé. Sinon, vous pouvez l’installer avec la commande :

Terminal window
sudo yum install firewalld

Ou, si vous utilisez CentOS 8 ou supérieur :

Terminal window
sudo dnf install firewalld

Installation de Firewalld sur openSUSE

Sur openSUSE, Firewalld n’est pas toujours activé par défaut, mais vous pouvez l’installer à l’aide de Zypper, l’outil de gestion de paquets :

Terminal window
sudo zypper install firewalld

Assurez-vous ensuite de démarrer le service et de l’activer au démarrage :

Terminal window
sudo systemctl start firewalld
sudo systemctl enable firewalld

Installation de Firewalld sur Debian et Ubuntu

Sur Debian et Ubuntu, Firewalld n’est pas inclus par défaut, mais vous pouvez l’installer à partir des dépôts officiels avec la commande suivante :

Terminal window
sudo apt-get update
sudo apt-get install firewalld

Assurez-vous également de démarrer le service et de l’activer au démarrage :

Terminal window
sudo systemctl start firewalld
sudo systemctl enable firewalld

Installation de Firewalld sur Arch Linux

Si vous utilisez Arch Linux, vous pouvez installer Firewalld depuis les dépôts officiels avec la commande :

Terminal window
sudo pacman -S firewalld

Ensuite, démarrez le service et activez-le au démarrage :

Terminal window
sudo systemctl start firewalld
sudo systemctl enable firewalld

Installation de Firewalld sur Gentoo

Pour Gentoo, vous pouvez installer Firewalld à l’aide de l’outil Portage :

Terminal window
sudo emerge firewalld

Une fois l’installation terminée, démarrez le service et activez-le au démarrage :

Terminal window
sudo systemctl start firewalld
sudo systemctl enable firewalld

Félicitations ! Vous avez maintenant installé Firewalld sur votre distribution Linux.

Configuration de Base de Firewalld

Maintenant que vous avez installé Firewalld sur votre système Linux, il est temps de passer à la configuration de base.

Comprendre les Zones

Firewalld utilise des zones pour définir différents niveaux de sécurité. Chaque interface réseau est associée à une zone spécifique et chaque zone a ses propres règles de sécurité. Voici quelques zones courantes :

  • public : Cette zone est généralement utilisée pour les réseaux non fiables, tels qu’Internet. Les règles de sécurité sont généralement strictes ici.
  • internal : Pour les réseaux internes et de confiance, où les règles peuvent être plus permissives.
  • work : Utilisée pour les réseaux de travail, où la sécurité est importante, mais une certaine flexibilité est autorisée.
  • home : Pour les réseaux domestiques, où la sécurité est plus souple.

Afficher les Zones Actuelles

Pour afficher les zones actuellement associées à vos interfaces réseau, utilisez la commande suivante :

Terminal window
sudo firewall-cmd --get-active-zones

Cela vous montrera quelles interfaces sont associées à quelles zones. Dans mon cas aucune.

Changer la Zone d’une Interface

Si vous souhaitez changer la zone associée à une interface spécifique, utilisez la commande --change-interface suivie du nom de l’interface et de la nouvelle zone. Par exemple, pour changer l’interface eth0 en zone work, utilisez :

Terminal window
sudo firewall-cmd --change-interface=eth0 --zone=work --permanet

Assurez-vous d’ajouter l’option --permanent pour que la zone soit persistante après le redémarrage

Créer une Nouvelle Zone

Vous pouvez également créer une nouvelle zone personnalisée avec des règles de sécurité spécifiques en utilisant la commande --new-zone. Par exemple, pour créer une zone custom :

Terminal window
sudo firewall-cmd --new-zone=custom --permanent

Assurez-vous d’ajouter l’option --permanent pour que la zone soit persistante après le redémarrage.

Associer une Interface à une Zone

Pour associer une interface à une zone spécifique, utilisez la commande --zone suivie du nom de la zone et de l’interface. Par exemple, pour associer l’interface eth1 à la zone custom, utilisez :

Terminal window
sudo firewall-cmd --zone=custom --add-interface=eth1 --permanent

Obtenir la liste de toutes les zones

Terminal window
sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

Définir la Zone par Défaut

Vous pouvez définir la zone par défaut pour vos interfaces réseau avec la commande suivante :

Terminal window
sudo firewall-cmd --set-default-zone=work

Assurez-vous de choisir la zone qui correspond le mieux à votre environnement.

Autoriser le Trafic Essentiel

Pour permettre le trafic essentiel, comme l’accès SSH ou HTTP, vous pouvez utiliser la commande --add-service. Par exemple, pour autoriser SSH, utilisez :

Terminal window
sudo firewall-cmd --zone=work --add-service=ssh --permanent

N’oubliez pas d’ajouter --permanent pour que la règle soit persistante après le redémarrage du pare-feu.

Ouvrir des Ports Spécifiques

Si vous avez besoin d’ouvrir des ports spécifiques, utilisez la commande --add-port. Par exemple, pour ouvrir le port 80 pour HTTP, faites ceci :

Terminal window
sudo firewall-cmd --zone=work --add-port=80/tcp --permanent

Supprimer des Règles

Si vous avez fait une erreur ou si vous avez besoin de supprimer une règle, utilisez la commande --remove-service ou --remove-port, suivi du nom du service ou du numéro de port.

Appliquer les Changements

Après avoir configuré vos règles, n’oubliez pas d’appliquer les changements avec la commande :

Terminal window
sudo firewall-cmd --reload

Cela mettra à jour les règles actives du pare-feu.

Félicitations, vous avez configuré avec succès les bases de Firewalld pour sécuriser votre système Linux.

Gestion des Services avec Firewalld

Comprendre comment gérer les services est essentiel pour contrôler le trafic réseau entrant et sortant de manière précise. Nous aborderons comment autoriser ou refuser l’accès à des services spécifiques, ce qui est indispensable pour la sécurité de votre système.

Comprendre les Services

Les services sont des applications ou des protocoles spécifiques qui écoutent sur des ports particuliers. Par exemple, SSH utilise le port 22, HTTP utilise le port 80 et HTTPS utilise le port Firewalld comprend de nombreux services préconfigurés pour simplifier la gestion des règles.

Liste des Services Disponibles

Pour afficher la liste des services disponibles, utilisez la commande suivante :

Terminal window
sudo firewall-cmd --get-services
RH-Satellite-6 RH-Satellite-6-capsule afp 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 collectd condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger foreman foreman-proxy freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp galera ganglia-client ganglia-master git grafana gre high-availability http http3 https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jellyfin jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell kube-api kube-apiserver kube-control-plane kube-controller-manager kube-scheduler kubelet-worker ldap ldaps libvirt libvirt-tls lightning-network llmnr llmnr-tcp llmnr-udp managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nbd netbios-ns 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 rquotad 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 tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wireguard ws-discovery ws-discovery-client ws-discovery-tcp ws-discovery-udp wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server zerotier

Cela vous montrera une liste de services que vous pouvez utiliser dans vos règles.

Autoriser un Service

Pour autoriser un service spécifique, utilisez la commande --add-service. Par exemple, si vous souhaitez autoriser le service SSH, utilisez la commande suivante :

Terminal window
sudo firewall-cmd --zone=work --add-service=ssh --permanent

N’oubliez pas d’ajouter l’option --permanent pour rendre la règle persistante.

Refuser un Service

Si vous souhaitez refuser l’accès à un service, utilisez la commande --remove-service. Par exemple, pour refuser le service Telnet, utilisez la commande suivante :

Terminal window
sudo firewall-cmd --zone=work --remove-service=telnet --permanent

Liste des Règles de Services

Pour afficher la liste des règles de services actuellement actives, exécutez la commande :

Terminal window
sudo firewall-cmd --zone=work --list-services

Cela vous montrera les services auxquels vous avez actuellement accès dans la zone spécifiée.

Personnaliser des Règles de Services

Si vous avez besoin de règles plus spécifiques pour un service, vous pouvez créer des règles personnalisées. Par exemple, vous pouvez autoriser l’accès à un port personnalisé en utilisant la commande --add-port. Assurez-vous de comprendre les besoins de votre système avant de créer des règles personnalisées.

Appliquer les Changements

Une fois que vous avez configuré vos règles de services, n’oubliez pas d’appliquer les changements avec la commande :

Terminal window
sudo firewall-cmd --reload

Cela mettra à jour les règles actives du pare-feu pour prendre en compte les autorisations ou les refus de services que vous avez définis.

Vous avez maintenant une compréhension solide de la gestion des services avec Firewalld. Cela vous permettra de contrôler précisément le trafic réseau sur votre système Linux.

Utilisation Avancée de Firewalld

Voyons comment configurer des règles personnalisées, masquer des ports, utiliser des modules complémentaires et bien plus encore pour optimiser la sécurité de votre système Linux.

Création de Règles Personnalisées

Les règles personnalisées vous permettent de définir des comportements de pare-feu précis en fonction de vos besoins. Vous pouvez créer des règles personnalisées en utilisant la commande --add-rule. Par exemple, pour autoriser le trafic entrant sur un port spécifique, vous pouvez utiliser :

Terminal window
sudo firewall-cmd --zone=work --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="8080" protocol="tcp" accept'

Cela permettrait d’autoriser le trafic TCP entrant sur le port 8080 depuis l’adresse IP source68.1.0/24.

Masquer des Ports

Pour masquer des ports et empêcher leur détection par des scanners de ports, vous pouvez utiliser la commande --add-rich-rule pour créer une règle de masquage. Par exemple :

Terminal window
sudo firewall-cmd --zone=work --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="8080" protocol="tcp" drop'

Cela masquera le port 8080 pour toutes les adresses IP.

Utilisation de Modules Complémentaires

Firewalld prend en charge divers modules complémentaires pour étendre ses fonctionnalités. Par exemple, le module conntrack permet de surveiller et de suivre les connexions réseau. Vous pouvez activer un module avec la commande --add-module. Par exemple :

Terminal window
sudo firewall-cmd --zone=work --add-module=conntrack

Supervision des Connexions Actives

Pour surveiller les connexions actives, vous pouvez utiliser la commande --list-connections. Cela affichera une liste des connexions actuellement gérées par Firewalld.

Journalisation des Événements

Firewalld peut journaliser les événements de pare-feu pour une analyse ultérieure. Vous pouvez activer la journalisation avec la commande --set-log-denied. Par exemple :

Terminal window
sudo firewall-cmd --set-log-denied=all

Cela enregistrera tous les événements de refus dans le journal.

Appliquer les Changements

Après avoir configuré des règles personnalisées, des masquages de ports, des modules complémentaires et d’autres fonctionnalités avancées, assurez-vous d’appliquer les changements avec la commande :

Terminal window
sudo firewall-cmd --reload

Cela mettra à jour les règles actives du pare-feu pour prendre en compte les configurations avancées.

Vous êtes maintenant prêt à exploiter pleinement les fonctionnalités avancées de Firewalld pour renforcer la sécurité de votre système Linux.

Dépannage et Astuces pour Firewalld

La gestion d’un pare-feu peut parfois être complexe, mais avec les bonnes astuces, vous pouvez assurer un fonctionnement fluide de votre pare-feu Firewalld.

Vérification de l’État de Firewalld

Pour vérifier si Firewalld est actif, utilisez la commande suivante :

Terminal window
sudo systemctl status firewalld

Assurez-vous que l’état est “active (running)”. Si ce n’est pas le cas, démarrez Firewalld avec :

Terminal window
sudo systemctl start firewalld

Vérification des Règles Actives

Pour afficher les règles actuellement actives, utilisez la commande :

Terminal window
sudo firewall-cmd --list-all

Cela vous montrera toutes les règles actuellement en vigueur, y compris les zones, les services autorisés, etc.

Vérification des Journaux de Firewalld

Les journaux de Firewalld sont utiles pour le dépannage. Vous pouvez les consulter avec la commande :

Terminal window
sudo journalctl -u firewalld

Cela affichera les journaux relatifs à Firewalld, ce qui peut aider à identifier les problèmes.

Tester la Connectivité

Pour tester si les règles de Firewalld fonctionnent correctement, utilisez des outils de test de connectivité tels que ping pour les connexions ICMP, nc pour les connexions TCP et curl pour les connexions HTTP/HTTPS.

Astuce : Ajouter des Commentaires

Lors de la configuration de règles complexes, il peut être utile d’ajouter des commentaires pour expliquer leur but. Vous pouvez le faire en ajoutant --comment suivi du commentaire dans la commande. Par exemple :

Terminal window
sudo firewall-cmd --zone=work --add-service=http --comment="Autoriser le trafic HTTP"

Astuce : Sauvegarder les Règles

Il est recommandé de sauvegarder régulièrement vos règles Firewalld pour éviter la perte accidentelle de configurations importantes. Vous pouvez le faire en copiant le dossier /etc/firewalld vers un emplacement sécurisé.

Résoudre les Problèmes de Connexion

Si vous rencontrez des problèmes de connexion après avoir configuré Firewalld, vérifiez les règles de pare-feu pour vous assurer que le trafic est autorisé sur les ports et les services nécessaires. Assurez-vous également que les zones de sécurité sont correctement configurées.

Appliquer les Changements

N’oubliez pas d’appliquer les changements après chaque modification de règles avec la commande :

Terminal window
sudo firewall-cmd --reload

Cela permettra de mettre à jour les règles actives du pare-feu.

Avec ces techniques de dépannage et astuces, vous pouvez résoudre efficacement les problèmes courants liés à Firewalld et assurer la sécurité de votre système Linux. Continuez à surveiller les journaux de Firewalld pour rester informé des événements de pare-feu.

Conclusion

Félicitations, vous avez maintenant une compréhension approfondie de Firewalld et de ses fonctionnalités. J’espére que ce guide vous a été utile pour apprendre à utiliser Firewalld. La sécurité de votre système Linux est entre vos mains, et Firewalld est un outil puissant pour renforcer cette sécurité. Utilisez-le judicieusement pour protéger votre système et vos données.