🧩 Présence d’un système de configuration résiduel (Puppet)

Lors de l’inspection finale, le fichier suivant a été découvert :

                /etc/nftables/puppet.nft

              

Ce fichier contient une directive flush ruleset suivie de plusieurs inclusions conditionnelles :

                flush ruleset
include "custom-*.nft"
include "inet-filter.nft"
include "ip-nat.nft"
include "ip6-nat.nft"

              

Il est mentionné comme destiné à être utilisé pour des déploiements Puppet :

“puppet.nft is real configuration that the nftables service uses. To process either the -I flag must be specified.”

🔍 Analyse :

  • Puppet est installé sur le système, mais n'est ni activé ni en cours d'exécution :

                        ● puppet.service - Puppet agent
         Loaded: loaded (/lib/systemd/system/puppet.service; disabled)
         Active: inactive (dead)
    
                      
  • Aucun mécanisme automatisé (cron ou systemd timer) ne semble déclencher Puppet de façon périodique.

  • Risque identifié : si Puppet venait à être redémarré manuellement ou par un autre mécanisme, le fichier puppet.nft pourrait écraser la configuration actuelle de nftables, entraînant une perte des règles en place.

✅ Action recommandée :

  • Laisser puppet.service désactivé tant qu’il n’est pas utilisé intentionnellement.

  • Documenter ou archiver les fichiers puppet.nft, inet-filter.nft, etc.

  • Supprimer Puppet s’il est confirmé qu’il n’est plus utilisé par l’organisation, afin d’éviter toute collision future dans la gestion du pare-feu.


Ce système a vraisemblablement utilisé Puppet pour gérer nftables à une certaine époque


📌 Indices concordants d’une gestion centralisée par Puppet :

  1. Nom explicite du fichier :

                        /etc/nftables/puppet.nft
    
                      

    → Il est courant dans les déploiements Puppet d’avoir des fichiers nommés ainsi pour distinguer les règles générées ou validées par l’agent de configuration.

  2. Commentaires typiques d’un usage Puppet :
    Le fichier contient :

                        # puppet-preflight.nft is only used by puppet for validating new configs
    # puppet.nft is real configuration that the nftables services uses.
    
                      

    → Ces commentaires sont manifestement rédigés pour un système Puppet actif qui applique la configuration automatiquement.

  3. Structure modulaire par includes :

                        include "custom-*.nft"
    include "inet-filter.nft"
    include "ip-nat.nft"
    include "ip6-nat.nft"
    
                      

    → Structure hautement modulaire, typique des configurations générées ou gérées par un moteur comme Puppet, qui assemble dynamiquement les règles selon des rôles ou des classes.

  4. Le service puppet est présent mais désactivé :

                        puppet.service; disabled; Active: inactive (dead)
    
                      

    → Tout laisse croire qu’il a été utilisé par le passé, puis désactivé, soit volontairement (changement de méthode de gestion), soit accidentellement (ex. : coupure d’un orchestrateur).

  5. nftables.service ne référence pas explicitement ce fichier Puppet :
    → Cela signifie que le fichier /etc/nftables/puppet.nft n’est plus automatiquement appliqué au démarrage, ce qui confirme l’abandon de Puppet sans nettoyage complet.


🎯 Conclusion :

Il est quasi certain que ce serveur utilisait Puppet pour gérer le pare-feu nftables, et que cette gestion a été abandonnée sans désinstaller proprement l’agent Puppet ni supprimer les fichiers de configuration associés.


🚨 Risque actuel :

  • Si quelqu’un exécute à nouveau un puppet agent --test ou réactive puppet.service, cela risque d’écraser toutes les règles actuelles de pare-feu avec un flush ruleset suivi de règles peut-être désuètes ou incomplètes.


✅ Recommandations :

  1. Faire un backup de tous les fichiers puppet*.nft et *.nft dans /etc/nftables.

  2. Supprimer le paquet Puppet (apt remove puppet) si sa présence est inutile.

  3. Documenter dans le rapport final cette source de conflit potentiel.