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.
-
/etc/tripwire/tw.cfg
-
/etc/tripwire/tw.pol
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 :
-
twcfg.txt
-
twpol.txt
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



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