La version dynamique du pare-feu firewalld 1.0 a été publiée, mise en œuvre sous la forme d'un wrapper au-dessus des filtres de paquets nftables et iptables. Firewalld fonctionne comme un processus en arrière-plan, permettant de modifier dynamiquement les règles du filtre de paquets via D-Bus, sans avoir besoin de redémarrer les règles du filtre de paquets et sans interrompre les connexions établies. Le projet est déjà utilisé dans de nombreuses distributions Linux, y compris RHEL 7+, Fedora 18+ et SUSE/openSUSE 15+. Le code de firewalld est écrit en Python et distribué sous la licence GPLv2.
Pour gérer le pare-feu, on utilise l'outil firewall-cmd, qui, lors de la création de règles, se base non pas sur adresses IP, des interfaces réseau et des numéros de ports, ainsi qu'en fonction des noms de services (par exemple, pour ouvrir l'accès SSH, il faut exécuter « firewall-cmd —add —service=ssh », et pour fermer SSH — « firewall-cmd —remove —service=ssh »). Pour modifier la configuration du pare-feu, il est également possible d'utiliser l'interface graphique firewall-config (GTK) et l'applet firewall-applet (Qt). La prise en charge de la gestion du pare-feu via l'API D-BUS de firewalld est disponible dans des projets tels que NetworkManager, libvirt, podman, docker et fail2ban.
Le changement significatif du numéro de version est dû à des modifications qui rompent la compatibilité descendante et modifient le comportement de la gestion des zones. Tous les paramètres de filtrage définis dans une zone s'appliquent désormais uniquement au trafic destiné à l'hôte sur lequel firewalld est exécuté, tandis que pour le filtrage du trafic transit, des politiques doivent être configurées. Les changements les plus notables sont :
- Le backend permettant de fonctionner au-dessus d'iptables est déclaré obsolète. Le support d'iptables sera maintenu dans un avenir proche, mais ce backend ne sera plus développé.
- Le mode intra-zone-forwarding est activé par défaut pour toutes les nouvelles zones, permettant la libre circulation des paquets entre les interfaces réseau ou les sources de trafic au sein d'une même zone (public, bloque, de confiance, interne, etc.). Pour revenir au comportement précédent et interdire le transfert de paquets au sein d'une même zone, la commande « firewall-cmd —permanent —zone public —remove-forward » peut être utilisée.
- Les règles liées à la traduction d'adresses (NAT) ont été déplacées dans la famille de protocoles « inet » (elles étaient auparavant ajoutées dans les familles « ip » et « ip6 », ce qui entraînait la nécessité de dupliquer les règles pour IPv4 et IPv6). Ce changement a permis d'éliminer les doublons lors de l'utilisation d'ipset — au lieu de trois copies d'enregistrements ipset, une seule est désormais utilisée.
- L'action «default», indiquée dans le paramètre «—set-target», est maintenant équivalente à «reject», c'est-à-dire que tous les paquets ne correspondant pas à certaines règles dans la zone seront par défaut bloqués. Une exception est faite pour les paquets ICMP, qui continuent d'être autorisés. Pour retrouver le comportement ancien pour la zone publique «trusted», vous pouvez utiliser les règles : firewall-cmd —permanent —new-policy allowForward firewall-cmd —permanent —policy allowForward —set-target ACCEPT firewall-cmd —permanent —policy allowForward —add-ingress-zone public firewall-cmd —permanent —policy allowForward —add-egress-zone trusted firewall-cmd —reload
- Les politiques avec une priorité positive sont désormais exécutées juste avant l'application de la règle «—set-target catch-all», c'est-à-dire au moment précédant l'ajout des règles finales drop, reject ou accept, y compris pour les zones utilisant «—set-target drop|reject|accept».
- Le blocage ICMP est maintenant appliqué uniquement aux paquets entrants adressés au hôte actuel (input) et n'affecte pas les paquets redirigés entre les zones (forward).
- Le service tftp-client, destiné à suivre les connexions pour le protocole TFTP, a été supprimé car il était inutilisable.
- L'interface «direct», permettant d'insérer directement des règles prêtes pour le filtrage des paquets, est déclarée obsolète. Ce besoin a disparu avec l'ajout de la possibilité de filtrage des paquets redirigés et sortants.
- Ajouté le paramètre CleanupModulesOnExit, qui est désormais par défaut sur «no». Avec ce paramètre, vous pouvez gérer le déchargement des modules du noyau après la fin de firewalld.
- L'utilisation d'ipset est autorisée lors de la définition du système cible (destination).
- Ajoutées les définitions des services WireGuard, Kubernetes et netbios-ns.
- Des règles d'auto-complétion pour zsh ont été mises en œuvre.
- Le support de Python 2 a été arrêté.
- La liste des dépendances a été réduite. Pour faire fonctionner firewalld, à part le noyau Linux, seules les bibliothèques python dbus, gobject et nftables sont désormais nécessaires, tandis que les paquets ebtables, ipset et iptables sont classés comme optionnels. Les bibliothèques python decorator et slip ont été supprimées des dépendances.
Source : opennet.ru
