« LINUX:Tripwire » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
(2 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 21 : | Ligne 21 : | ||
Dans le fichier définissant les variables d'environnement "'''/etc/tripwire/twcfg.txt'''", on ajoute la ligne suivante pour définir l'adresse mail: | 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 | GLOBALEMAIL =root | ||
Dans ce cas, nous avons utilisé l'utilisateur "root". Modifiez le selon vos désirs. | 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. | ||
Ligne 30 : | Ligne 30 : | ||
==Création | ==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. | 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. | ||
Ligne 50 : | Ligne 50 : | ||
* pour le fichier "twpol.txt": | * pour le fichier "twpol.txt": | ||
twadmin --create-polfile -Q <passphrase_de_site> -S /etc/tripwire/site.key /etc/tripwire/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. | Si vous ne fournissez pas la passphrase, elle vous sera demandée interactivement. | ||
Ligne 56 : | Ligne 58 : | ||
Enfin vient la création de la base des signatures digitales cryptée des fichiers à surveiller grâce à la commande suivante: | 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> | 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. | 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 <nowiki>https://www.computersecuritystudent.com/UNIX/FEDORA/lesson14/index.html</nowiki> | |||
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. | |||