Surveiller l'intégrité des fichiers avec Tripwire

LinuxBeginner
Pratiquer maintenant

Introduction

Dans cet atelier, vous allez apprendre à utiliser Tripwire, un puissant système de détection d'intrusion basé sur l'hôte (HIDS), pour surveiller l'intégrité de vos fichiers. Tripwire fonctionne en créant une base de données de référence des fichiers de votre système, puis en les analysant périodiquement pour détecter tout ajout, suppression ou modification. Ce processus est essentiel pour identifier les changements non autorisés et maintenir la sécurité du système.

Vous passerez en revue l'ensemble du processus, de la configuration initiale des clés de sécurité à la personnalisation des politiques de surveillance, en passant par la création d'une base de référence, la détection des changements et l'examen des rapports.

Configurer les clés Tripwire

Bienvenue dans cet atelier. Le paquet tripwire a été pré-installé dans votre environnement pour gagner du temps. Votre première tâche consiste à configurer les clés cryptographiques que Tripwire utilise pour protéger sa base de données et ses fichiers de configuration. Ces clés garantissent qu'un attaquant ne peut pas falsifier les propres fichiers de Tripwire pour effacer ses traces.

  1. Tout d'abord, vérifiez que Tripwire est installé en contrôlant sa version.

    tripwire --version
    

    Vous devriez voir une sortie affichant la version installée de Tripwire.

    Tripwire(R) 2.4.3.7
    (i686-pc-linux-gnu)
    ...
    
  2. Ensuite, générez manuellement les clés cryptographiques à l'aide de twadmin. Vous devez créer une clé de site (site key) et une clé locale (local key). La clé de site protège les fichiers de politique et de configuration, tandis que la clé locale protège la base de données sur la machine locale.

    Commencez par générer la clé de site :

    sudo twadmin --generate-keys --site-keyfile /etc/tripwire/site.key
    

    Si le fichier de clé existe déjà, le système vous demandera si vous souhaitez l'écraser. Tapez y et appuyez sur Entrée pour confirmer.

    Lorsqu'on vous demande la phrase de passe (passphrase) de la clé de site, saisissez labex-password et appuyez sur Entrée. Confirmez ensuite la phrase de passe en la saisissant à nouveau.

    Note : La saisie de la phrase de passe est masquée pour des raisons de sécurité - vous ne verrez aucun caractère s'afficher pendant la frappe, mais le système reçoit bien votre saisie.

  3. Ensuite, générez la clé locale :

    sudo twadmin --generate-keys --local-keyfile /etc/tripwire/$(hostname)-local.key
    

    De même, si l'on vous propose d'écraser un fichier de clé existant, tapez y et appuyez sur Entrée.

    Lorsqu'on vous demande la phrase de passe de la clé locale, saisissez labex-password et appuyez sur Entrée. Confirmez la phrase de passe. N'oubliez pas que la saisie est masquée.

    Une fois les phrases de passe saisies, les deux clés seront générées et enregistrées dans le répertoire /etc/tripwire/. Le processus de génération des clés peut prendre plusieurs minutes.

Personnaliser la politique de surveillance

Avant de créer la base de données initiale (la référence), vous devez configurer les fichiers et répertoires que Tripwire doit surveiller. En raison de problèmes de compatibilité avec le fichier de politique par défaut qui pourraient provoquer des erreurs de segmentation lors de l'initialisation, vous allez créer une politique simplifiée axée sur les fichiers système essentiels et votre répertoire de projet.

  1. Tout d'abord, créez une sauvegarde du fichier de politique d'origine.

    sudo cp /etc/tripwire/twpol.txt /etc/tripwire/twpol.txt.bak
    
  2. Créez un nouveau fichier de politique simplifié qui évite les systèmes de fichiers virtuels problématiques.

    sudo nano /etc/tripwire/twpol-simple.txt
    
  3. Ajoutez le contenu suivant au fichier. Cette politique simplifiée surveille les fichiers système essentiels et votre répertoire de projet tout en évitant les chemins susceptibles de provoquer des erreurs d'initialisation :

    #
    ## Simplified Tripwire Policy File for Lab Environment
    #
    
    @@section GLOBAL
    TWBIN = /usr/sbin;
    TWETC = /etc/tripwire;
    TWVAR = /var/lib/tripwire;
    
    @@section FS
    
    SEC_CRIT      = $(IgnoreNone)-SHa ;
    SEC_BIN       = $(ReadOnly) ;
    SEC_CONFIG    = $(Dynamic) ;
    SEC_LOG       = $(Growing) ;
    SEC_INVARIANT = +tpug ;
    SIG_LOW       = 33 ;
    SIG_MED       = 66 ;
    SIG_HI        = 100 ;
    
    (
      rulename = "Tripwire Binaries",
      severity = $(SIG_HI)
    )
    {
        $(TWBIN)/siggen         -> $(SEC_BIN) ;
        $(TWBIN)/tripwire       -> $(SEC_BIN) ;
        $(TWBIN)/twadmin        -> $(SEC_BIN) ;
        $(TWBIN)/twprint        -> $(SEC_BIN) ;
    }
    
    (
      rulename = "Tripwire Data Files",
      severity = $(SIG_HI)
    )
    {
        $(TWVAR)/$(HOSTNAME).twd    -> $(SEC_CONFIG) -i ;
        $(TWETC)/tw.pol             -> $(SEC_BIN) -i ;
        $(TWETC)/tw.cfg             -> $(SEC_BIN) -i ;
        $(TWETC)/$(HOSTNAME)-local.key  -> $(SEC_BIN) ;
        $(TWETC)/site.key           -> $(SEC_BIN) ;
        $(TWVAR)/report             -> $(SEC_CONFIG) (recurse=0) ;
    }
    
    (
      rulename = "Critical system files",
      severity = $(SIG_HI)
    )
    {
        /bin            -> $(SEC_BIN) ;
        /sbin           -> $(SEC_BIN) ;
        /etc/passwd     -> $(SEC_CONFIG) ;
        /etc/shadow     -> $(SEC_CONFIG) ;
    }
    
    (
      rulename = "Lab Project Files",
      severity = $(SIG_HI)
    )
    {
      /home/labex/project        -> $(SEC_BIN) ;
    }
    
  4. Enregistrez le fichier et quittez nano en appuyant sur Ctrl + O, puis Entrée, et enfin Ctrl + X.

  5. Remplacez le fichier de politique d'origine par votre version simplifiée.

    sudo cp /etc/tripwire/twpol-simple.txt /etc/tripwire/twpol.txt
    

Vous avez maintenant créé une politique de surveillance simplifiée qui fonctionnera de manière fiable dans cet environnement d'expérimentation. Dans l'étape suivante, vous utiliserez cette politique pour créer la base de données initiale.

Initialiser la base de données Tripwire

Une fois votre politique simplifiée en place, vous êtes prêt à créer la base de données Tripwire. Cette base de données sert d'instantané de référence "sain" de votre système. Tripwire comparera l'état actuel de vos fichiers à cette référence pour détecter tout changement.

  1. Tout d'abord, recréez le fichier de configuration avec votre nouvelle clé de site pour garantir la compatibilité.

    sudo twadmin --create-cfgfile --site-keyfile /etc/tripwire/site.key /etc/tripwire/twcfg.txt
    

    La phrase de passe de votre clé de site vous sera demandée. Saisissez labex-password et appuyez sur Entrée.

  2. Convertissez le fichier de politique simplifié au format binaire signé utilisé par Tripwire.

    sudo twadmin --create-polfile /etc/tripwire/twpol.txt
    

    À nouveau, saisissez la phrase de passe de votre clé de site (labex-password) lorsque vous y êtes invité.

  3. Initialisez la base de données. Cette commande analyse tous les fichiers et répertoires spécifiés dans votre politique et enregistre leurs signatures cryptographiques et leurs attributs.

    sudo tripwire --init
    

    La phrase de passe de votre clé locale vous sera demandée. Saisissez labex-password et appuyez sur Entrée.

  4. Pendant l'initialisation, vous pourriez voir un avertissement indiquant que le fichier de base de données n'existe pas encore :

    #### Warning: File system error.
    #### Filename: /var/lib/tripwire/68b1139d06fc790d9895e107.twd
    #### No such file or directory
    #### Continuing...
    

    Ceci est normal et attendu lors de la première initialisation. Le processus se poursuivra et créera le fichier de base de données.

  5. Une fois le processus terminé, vérifiez que le fichier de base de données a bien été créé.

    ls -l /var/lib/tripwire/
    

    Vous devriez voir un fichier nommé d'après le nom d'hôte de votre machine avec une extension .twd (par exemple, 68b1139d06fc790d9895e107.twd). La présence de ce fichier confirme que votre base de données de référence a été établie avec succès.

    total 8
    -rw-r--r-- 1 root root 4164 Aug 29 11:00 68b1139d06fc790d9895e107.twd
    drwxr-xr-x 2 root root    6 Nov 11  2021 report
    

Votre système Tripwire est maintenant correctement initialisé avec une base de données de référence. Toute modification future des fichiers surveillés sera détectée lors de l'exécution des vérifications d'intégrité.

Détecter et signaler les modifications de fichiers

Maintenant que Tripwire dispose d'une base de référence, vous pouvez tester sa capacité à détecter les changements. Vous allez créer un nouveau fichier dans votre répertoire de projet pour voir comment Tripwire détecte les modifications dans les zones surveillées.

  1. Tout d'abord, créez un nouveau fichier dans le répertoire project. C'est un répertoire que vous avez explicitement ajouté à la politique de surveillance.

    touch ~/project/test_file.txt
    
  2. Une fois la modification effectuée, lancez une vérification d'intégrité. Tripwire va scanner le système et le comparer à la base de données de référence.

    sudo tripwire --check
    

    La phrase de passe de votre clé locale vous sera demandée. Saisissez labex-password et appuyez sur Entrée.

  3. Une fois l'analyse terminée, Tripwire générera un rapport et affichera un résumé dans la console. Le résumé mettra en évidence les objets qui ont été ajoutés ou modifiés. Vous devriez voir une sortie similaire à celle-ci :

    ===============================================================================
    Rule Summary:
    ===============================================================================
    
      Rule Name                       Severity Level    Added    Removed  Modified
      ---------                       --------------    -----    -------  --------
      Tripwire Binaries               100               0        0        0
      Critical system files           100               0        0        0
    * Tripwire Data Files             100               1        0        0
    * Lab Project Files               100               1        0        1
      (/home/labex/project)
    
    Total objects scanned:  16
    Total violations found:  3
    
    ===============================================================================
    Object Summary:
    ===============================================================================
    
    -------------------------------------------------------------------------------
    Rule Name: Lab Project Files (/home/labex/project)
    Severity Level: 100
    -------------------------------------------------------------------------------
    
    Added:
    "/home/labex/project/test_file.txt"
    
    Modified:
    "/home/labex/project"
    
  4. Le rapport montre que Tripwire a détecté :

    • Added (Ajouté) : Le nouveau fichier test_file.txt dans votre répertoire de projet.
    • Modified (Modifié) : Le répertoire /home/labex/project lui-même (car son contenu a changé).
    • Tripwire Data Files : Le fichier de base de données a également été marqué comme "ajouté" car il s'agit de la première vérification depuis l'initialisation.

Ce résultat confirme que Tripwire a détecté avec succès les modifications que vous avez apportées au système de fichiers.

Examiner le rapport d'intégrité

Le résumé de la commande --check fournit une bonne vue d'ensemble, mais pour une analyse approfondie, vous pouvez consulter le fichier de rapport complet. Ces rapports sont stockés dans un format binaire et doivent être lus à l'aide de l'utilitaire twprint.

  1. Tout d'abord, listez le contenu du répertoire des rapports pour trouver le nom du rapport le plus récent. Les rapports incluent un horodatage dans leur nom de fichier.

    sudo ls -lt /var/lib/tripwire/report/
    

    La sortie listera les fichiers de rapport, le plus récent étant en haut. Notez son nom de fichier, qui suit généralement le format hostname-YYYYMMDD-HHMMSS.twr.

    total 4
    -rw------- 1 root root 3456 Aug 29 11:02 68b1139d06fc790d9895e107-20250829-110252.twr
    
  2. Utilisez la commande twprint pour afficher le rapport dans un format lisible par l'homme. Remplacez [REPORT_FILENAME] par le nom de fichier réel que vous avez noté précédemment.

    sudo twprint --print-report --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]
    

    Par exemple :

    sudo twprint --print-report --twrfile /var/lib/tripwire/report/68b1139d06fc790d9895e107-20250829-110252.twr
    
  3. Le rapport détaillé affiche les mêmes informations que le résumé, mais avec des métadonnées supplémentaires :

    Report created on:            Fri Aug 29 11:02:52 2025
    Database last updated on:     Never
    
    Host name:                    68b1139d06fc790d9895e107
    Host IP address:              172.18.0.8
    Policy file used:             /etc/tripwire/tw.pol
    Configuration file used:      /etc/tripwire/tw.cfg
    Database file used:           /var/lib/tripwire/68b1139d06fc790d9895e107.twd
    Command line used:            tripwire --check
    

    Le rapport fournit des détails complets sur chaque changement, y compris les horodatages, les propriétés des fichiers et les sommes de contrôle (checksums). Ce niveau de détail est crucial pour l'analyse forensique afin de comprendre exactement quelles modifications ont eu lieu sur votre système.

  4. Vous pouvez également afficher une version plus détaillée avec les attributs de fichiers en utilisant l'option --verbose :

    sudo twprint --print-report --verbose --twrfile /var/lib/tripwire/report/[REPORT_FILENAME]
    

    Cela affichera des informations supplémentaires telles que les permissions des fichiers, le propriétaire, la taille et divers hachages cryptographiques pour chaque changement détecté.

Savoir lire ces rapports est essentiel pour les administrateurs système afin d'enquêter sur d'éventuels incidents de sécurité et de maintenir l'intégrité du système.

Résumé

Dans cet atelier, vous avez appris les bases de l'utilisation de Tripwire pour la surveillance de l'intégrité des fichiers. Vous avez configuré avec succès les clés de sécurité de Tripwire, personnalisé sa politique de surveillance pour inclure un répertoire de projet spécifique et établi une base de données de référence de l'état des fichiers de votre système.

De plus, vous avez pratiqué le flux de travail type d'un administrateur système en modifiant intentionnellement des fichiers, en exécutant une vérification d'intégrité pour détecter ces changements et en analysant le rapport détaillé pour comprendre ce qui a été altéré. Ces compétences sont fondamentales pour assurer la sécurité du système et détecter toute activité non autorisée.