Scellement de fichiers avec Tripwire

Pour la surveillance d’un système, il est vital de savoir quand des fichiers sont modifiés, supprimés ou ajoutés. C’est une base indispensable pour s’assurer de l’intégrité d’une machine.
Tripwire
est un outil de scellement de fichiers, il crée une référence du système  de fichiers et est capable de générer des rapports sur tout ce qui a bougé. Comme sous Unix/Linux tout est fichier, si quelque chose change, tripwire le voit !

La suite de l’article est issue d’une documentation co-écrite par ma collègue Françoise, initialement pour un usage interne.

1 – Installation

Sous Debian :

# aptitude install tripwire

Deux passphrases sont demandées pour la génération de deux certificats (site et local).

2 – Configuration

2.1 – Fonctionnement des fichiers de config

Les fichiers de configuration et de règles de tripwire sont sous forme binaire et signés par le certificat local.

Ces fichiers ne sont pas éditables directement. Il faut passer par leur version texte qui ne doit, bien entendu pas être stockée sur la machine surveillée :

Une fois le fichier texte édité, la commande suivante permet de générer le fichier binaire et de les signer (la passphrase est demandée).

# tripwire --update-policy -Z low fichier.txt

2.2 – Le fichier de règles (policy) : tw.pol / twpol.txt

Ce fichier permet de définir les répertoires à analyser et leur degré d’importance. Des alertes seront générées en fonction de la sensibilité des fichiers.

La structure et la syntaxe d’un fichier source (txt) de stratégie n’est pas très complexe… Le répertoire : /usr/share/doc/tripwire/examples/ contient des exemples bien détaillés. Il est possible de partir de ces fichiers et de les adapter. La mise en commentaire (#) permet d’annuler certaines vérifications, le « ! » permet d’empêcher explicitement la vérification de certaines arborescences.

Une fois la politique définit, il faut que tripwire la prenne en compte :

# tripwire --update-policy -Z low /etc/tripwire/twpol.txt
  Parsing    policy file: /etc/tripwire/twpol.txt
  Please enter your local passphrase:
  Please enter your site passphrase:
  ...

3 – Initialisation

L’initialisation permet de construire la base de référence du système, elle se fait par la commande :

# tripwire --init
  Please enter your local passphrase:
  Generating the database...
  *** Processing Unix File System ***
  ...

4 – La vérification du système et la mise à jour

4.1 – Vérification

Par défaut, Tripwire ajoute un script de lancement au répertoire /etc/cron.daily/. Le cron déclenchera ainsi une vérification d’intégrité journalière. Il est possible exécuter une vérification d’intégrité à tout moment grâce à la commande suivante:

# tripwire --check

Lors d’une vérification d’intégrité, Tripwire analyse les objets actuels du système de fichiers et leurs propriétés, grâce aux informations stockées dans la base de références. Les violations sont imprimées à l’écran et une copie cryptée et signée du rapport est créée dans /var/lib/tripwire/report/.

 # tripwire --check
  Parsing policy file: /etc/tripwire/tw.pol
  *** Processing Unix File System ***
  Performing integrity check...
  Wrote report file: /var/lib/tripwire/report/sd-xxxx-20071127-191046.twr

  Tripwire(R) 2.3.0 Integrity Check Report

  Report generated by:          root
  Report created on:            mar 27 nov 2007 19:10:46 CET
  Database last updated on:     Never

===============================================================================
Report Summary:
===============================================================================

Host name:                    sd-xxxx
Host IP address:              xxx.xxx.xxx.xxx
Host ID:                      None
Policy file used:             /etc/tripwire/tw.pol
Configuration file used:      /etc/tripwire/tw.cfg
Database file used:           /var/lib/tripwire/sd-xxxx.twd
Command line used:            tripwire --check

===============================================================================
Rule Summary:
===============================================================================

-------------------------------------------------------------------------------
  Section: Unix File System
-------------------------------------------------------------------------------

  Rule Name                       Severity Level    Added    Removed  Modified
  ---------                       --------------    -----    -------  --------
  Invariant Directories           66                0        0        0
  Tripwire Data Files             100               0        0        0
  Other binaries                  66                0        0        0
  Tripwire Binaries               100               0        0        0
  Other libraries                 66                0        0        0
  Root file-system executables    100               0        0        0
  System boot changes             100               0        0        0
  Root file-system libraries      100               0        0        0
  (/lib)
  Critical system boot files      100               0        0        0
* Other configuration files       66                0        0        1
  (/etc)
  Boot Scripts                    100               0        0        0
* Security Control                66                0        0        1
* Root config files               100               0        0        0
  Devices & Kernel information    100               0        0        0
  (/dev)

Total objects scanned:  19373
Total violations found:  2

===============================================================================
Object Summary:
===============================================================================

-------------------------------------------------------------------------------
# Section: Unix File System
-------------------------------------------------------------------------------

-------------------------------------------------------------------------------
Rule Name: Other configuration files (/etc)
Severity Level: 66
-------------------------------------------------------------------------------

Modified:
"/etc"

-------------------------------------------------------------------------------
Rule Name: Security Control (/etc/passwd)
Severity Level: 66
-------------------------------------------------------------------------------

Modified:
"/etc/passwd"

===============================================================================
Error Report:
===============================================================================

No Errors

-------------------------------------------------------------------------------
*** End of report ***

Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered
trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY;
for details use --version. This is free software which may be redistributed
or modified only under certain conditions; see COPYING for details.
All rights reserved.
Integrity check complete.

Dans l’exemple, le fichier /etc/passwd a été modifié.

4.2 – Affichage des rapports

La commande twprint est utilisée pour consulter les rapports et les bases de données cryptés de Tripwire. Exemple pour imprimer un rapport :

# twprint -m r --twrfile /var/lib/tripwire/report/francoiseD-20081123-204116.twr

L’option -m r de cette commande indique à twprint de décoder un rapport Tripwire.

L’option –twrfile indique à twprint d’utiliser un fichier rapport spécifique. Les rapports sont disponibles dans le répertoire /var/lib/tripwire/report.

On peut également utiliser twprint pour visualiser la base de données complète ou les informations sur un fichiers en particulier.
C’est très pratique pour avoir une idée de la quantité d’informations contrôlées par Tripwire sur le système.

Pour visualiser la base de données complète, entrez cette commande:

twprint -m d –print-dbfile | less

Pour avoir des renseignements sur un fichier en particulier, tel que /etc/hosts, la commande est la suivante :

  twprint -m d --print-dbfile /etc/hosts

4.3 – La mise à jour

Si la ou les modifications détectées sont légitimes, il faut remettre à jour la base. C’est l’option –update qui permet de le faire, en s’appuyant sur un fichier rapport.

# tripwire –update -Z low –twrfile /var/lib/tripwire/report/sd-xxxx-20071127-191046.twr

Tripwire ouvrira le rapport au moyen de l’éditeur de texte par défaut. (La configuration de l’éditeur peut être modifié dans le fichier twcfg.txt).  A ce moment, vous avez la possibilité de dé-sélectionner les fichiers que vous ne désirez pas inclure dans la mise à jour de la base de données. Les mises à jour proposées commencent par un [x] , avant le nom du fichier.

Added:
[x] "/usr/sbin/longrun"
Modified:
[x] "/usr/sbin"
[x] "/usr/sbin/cpqarrayd"

Si vous voulez spécifiquement exclure une violation valide afin qu’elle ne fasse pas partie de la mise à jour de la base de données, enlevez le x.

tripwire --update -Z low --twrfile /var/lib/tripwire/report/francoiseD-20081123-204116.twr
Please enter your local passphrase:
Wrote database file: /var/lib/tripwire/francoiseD.twd

5 – Maintenance

5.1 – Régénérer la Passphrase locale

twadmin -m G -L francoiseD-local.key -P nouvellepassphrase
The local key file: "/etc/tripwire/francoiseD-local.key" exists. Overwrite (Y/N)? y
Generating key (this may take several minutes)...
Key generation complete.

5.2 – Régénérer la Passphrase site

twadmin -m G -S site.key -Q NouvellepassPhrase
The site key file: "/etc/tripwire/site.key" exists. Overwrite (Y/N)? y
Generating key (this may take several minutes)...
Key generation complete.

5.3 – Signer et encrypter

twadmin --create-cfgfile -S site.key /etc/tripwire/twcfg.txt
Please enter your site passphrase:   NouvellepassPhrase
Wrote configuration file: /etc/tripwire/tw.cfg  

twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt
Please enter your site passphrase: NouvellepassPhrase
Wrote policy file: /etc/tripwire/tw.pol

5.4 – Réinitialiser la base

tripwire –init

Liens utilisés pour la rédaction de cet article :

http://www.tu-chemnitz.de/docs/lindocs/RH9/RH-DOCS/rhl-rg-fr-9/s1-tripwire-install-rpm.html

http://www.linux-kheops.com/doc/redhat72/rhl-rg-fr-7.2/ch-tripwire.html

http://www.linux-kheops.com/doc/cours/jgourdin/outils-tcp-ip/Linux-tripwire.html

Laissez votre message après le bip...Biiiiip

Commentaires

[…] Sceller des fichiers sous GNU/Linux avec Tripwire. […]

Laisser un commentaire

(requis)

(requis)