LINUX:Tripwire

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour au menu de Rkhunter


But

Si vous avez installé Tripwire, il faut le configurer pour pouvoir l'utiliser et qu'il soit pris en compte par Rkhunter. Il est basé sur la prise de signature de fichiers importants du système que l'on juge à risque. A partir de cette base de données de signatures digitales, le processus les compare avec celui du fichier correspondant. Un rapport est émis en fin de traitement. Un site décrit le programme à cet URL: https://www.computersecuritystudent.com/UNIX/FEDORA/lesson14/index.html


Installation

Il faut installer le module principal:

dnf install tripwire


Configuration

Sa configuration est plus compliquée. Elle s'effectue en plusieurs étapes. Les fichiers de configuration se trouvent dans le répertoire "/etc/tripwire".


Modifier le fichier de configuration

Dans le fichier définissant les variables d'environnement "/etc/tripwire/twcfg.txt", on ajoute la ligne suivante pour définir l'adresse mail:

GLOBALEMAIL            =root

Dans ce cas, nous avons utilisé l'utilisateur "root". Modifiez le selon vos désirs. Cette variable est utilisée dans le travail demandé dans le CRON.


Modifier le fichier de la politique de traitement

Dans le fichier définissant la liste des fichiers dont la signature digitale sera relevée /etc/tripwire/twpol.txt", Il faut éliminer ou mettre en commentaire les fichiers inexistant sur la machine ou que nous ne voulons pas surveiller; de même, on peut ajouter les fichiers que l'on veut surveiller.

Si un fichier n'existe pas, il sera repris en erreur lors de la création de la base des signatures digitales et lors de la vérification comparative des signatures consignées dans la base et celles des fichiers. Un traitement automatisé décrit ci-après permettra de simplifier cette tâche.


Création des clés de cryptage

La première étape primordiale est la création de deux clés de cryptage; celles-ci serviront à crypter des deux fichiers de configuration et à crypter la base des signatures digitales.

Il faut lancer la commande suivante:

tripwire-setup-keyfiles

Elle va nous demander fournir deux "passphrases" qui vont créer deux fichiers de clé de cryptage:

  • "site.key": la clé de site
  • "serverdb.home.dom-local.key": la clé locale

qui se retrouvent dans le répertoire "/etc/tripwire". Retenez ces deux "passphrases"; il vous seront régulièrement demandés par la suite.


Cryptage des deux fichiers de configuration

Cette même commande cryptera ensuite dans la foulée de configuration de base suivant la clé de site:

  • "twcfg.txt" qui contient les variables d'environnement et qui devient le fichier crypté "tw.cfg",
  • "twpol.txt" qui contient la liste des fichiers dont on doit prendre la signature et qui devient le fichier crypté "tw.pol".

Les commandes suivantes permettent de les recrypter séparément:

  • pour le fichier "twcfg.txt":
twadmin --create-cfgfile -Q <passphrase_de_site> -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt
  • pour le fichier "twpol.txt":
twadmin --create-polfile -Q <passphrase_de_site> -S /etc/tripwire/site.key /etc/tripwire/twpol.txt

"<passphrase_de_site>" est à remplacer par le vôtre.

Si vous ne fournissez pas la passphrase, elle vous sera demandée interactivement.


Création de la base des signatures digitales

Enfin vient la création de la base des signatures digitales cryptée des fichiers à surveiller grâce à la commande suivante:

tripwire --init -P <passphrase_locale>

"<passphrase_locale>" est à remplacer par le vôtre.

Si vous ne fournissez pas la passphrase, elle vous sera demandée interactivement.


Traitement des erreurs

Lors de la création de la base des signatures digitales ou de la vérification croisée, une série d'erreurs peuvent apparaitre suite à la non existence de fichiers à traiter.


Script PERL

Pour éliminer ces erreurs, nous avons utilisé et modifié légèrement un programme PERL trouvé sur le site https://www.computersecuritystudent.com/UNIX/FEDORA/lesson14/index.html

Il est nécessaire que l'interpréteur PERL soit installé:

dnf install perl

Voici le code nommé "configure_twpol.pl":


#!/usr/bin/perl
# ADB
$manager_path = "/manager/tripwire";
#Path to tripwire policy backup file
# ADB
#$policy_file = "/etc/tripwire/twpol.txt.BKP";
$policy_file = "${manager_path}/twpol.txt.bck";
#Put tripwire policy file into an array
@CONTENT = `cat $policy_file`;
#False Positive Entries we want to ignore
# ADB
#@IGNORE_LIST = `awk '{print \$2}' /var/tmp/firstrun.txt`;
@IGNORE_LIST = `awk '{print \$3}' ${manager_path}/log/filename.log`;
#Open a new file called twpol.txt
# ADB
#open(NEWFILE,">/etc/tripwire/twpol.txt");
open(NEWFILE,">${manager_path}/twpol.txt");
#Go through each line in the twpol.txt.BKP file
foreach my $line (@CONTENT)
{
       #Chop off the hard return at the end of each line
       chomp($line);
       #Reset IGNORE_FLAG before each check
       my $IGNORE_FLAG = "F";
       #Then check the line against the ignore list
       foreach my $entry (@IGNORE_LIST)
       {
               #Chop off the hard return at the end of each line
               chomp($entry);
               #Compare tripwire line against each ignore list line
               if(($line =~ m/\s$entry\s/)&&($line =~ m/-\> \$/))
               {
                       #Setting the FLAG to true means a match was found
                       $IGNORE_FLAG = "T";
                       print "[Ignoring]: $line\n";
# ADB
                       print NEWFILE "#Ignore#$line\n";
               }
       }
       if($IGNORE_FLAG eq "F")
       {
               #Write policy entry to file, if not found in the ignore list
               print NEWFILE "$line\n";
       }
}
close(NEWFILE);

Les endroits modifiés sont signalés par le commentaire "# ADB". La ligne originale est gardée en commentaire.

Son principe est de rediriger les lignes affichées par le programme de création de la base des signatures digitales vers un fichier. Les messages d'erreurs commencent par le mot "Filename" et sont suivies du nom du fichier inexistant. Ces lignes sont mises de côté dans un fichier. Cette sélection sera traité par le programme PERL. Il repère ces lignes dans le fichier des polices de traitement et les met en commentaire.

Tout ce traitement se fait dans le répertoire "/manager/tripwire" et les fichiers journaux et temporaires sont mis dans le répertoire "/manager/tripwire/log". Le fichier des politiques de traitement y est mis aussi sous le nom "twpol.txt.bck" comme base de traitement. Le résultat du traitement s'y retrouvera aussi sous le nom "twpol.txt". Ceci afin de ne pas modifier intempestivement la configuration d'origine. Au final, si le fichier résultant vous convient, il faut le recopier dans le répertoire "/etc/tripwire" et donc écraser le fichier d'origine.


Script BASH

Il est évident que comme ce fichier a été modifié et pour qu'il soit effectif, il faut le recrypter et refaire la base des signatures digitales.

Le script suivant automatise la première phase. Après écrasement éventuelle du fichier "twpol.txt", on relance cette même procédure pour recrypter les fichiers de configuration et recréer la base des signatures digitales. On peut lui donner le nom "creationdb.bat" et le placer également dans le répertoire "/manager/tripwire":


#!/bin/bash
# cryptage des fichiers de configuration,
# création de la base des signatures digitales,
# élimination des fichiers à traiter mais inexistants
##########################################################################
#
# variables à adapter
#
MANAGER=/manager/tripwire
P_PASSPHRASE=<passphrase_locale>
Q_PASSPHRASE=<passphrase_de_site>
##########################################################################
cd $MANAGER
# récupération du fichier des politiques de traitement
#if [ ! -f twpol.txt.bck ]; then
 /usr/bin/cp /etc/tripwire/twpol.txt twpol.txt.bck
#fi
# cryptage des fichiers de configuration
/usr/sbin/twadmin --create-polfile -Q ${Q_PASSPHRASE} -S /etc/tripwire/site.key /etc/tripwire/twpol.txt
/usr/sbin/twadmin --create-cfgfile -Q ${Q_PASSPHRASE} -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt
# création de la base de la base des signatures digitales
/usr/bin/stripwire --init -P ${P_PASSPHRASE} &> log/initdb.log
# isolation des fichiers inexistants
/usr/bin/grep Filename log/initdb.log > log/filename.log
# élimination des fichiers inexistants
if [ -s log/filename.log ]; then
 /usr/bin/perl configure_twpol.pl
fi

Il faut y remplacer les deux "passphrases" par les vôtres.

Cette procédure peut être utilisées dès que les clés de cryptage sont créés comme décrit ci-dessus dans la rubrique "Configuration". Elle recouvre le reste de cette rubrique.


Utilisation

La commande suivante permet d'effectuer la vérification des fichiers surveillés en comparant les signatures digitales contenues dans la base avec celles des fichiers.

tripwire --check

Chaque jour, cette procédure est lancée via le CRON. Cette action est effectuée par la procédure "/etc/cron.daily/tripwire-check". Le résultat vous est envoyé par mail.




retour au menu de Rkhunter