Outils personnels

Tripwire installation

De wikiGite

Tripwire sur Debian

apt-get install tripwire répondre OK pour le mot de passe des clés de site et locale et en donner un.

Première chose à faire : chattr +i /usr/sbin/tripwire

Le fichier de config twpol.txt est à adapter au système. Le plus simple est de générer la base (voir ci-dessous) et de voir quels fichiers il cherche et ne trouve pas. Log sur Etch :

    Filename: /etc/rc.boot
    Filename: /root/mail
    Filename: /root/Mail
    Filename: /root/.xsession-errors
    Filename: /root/.xauth
    Filename: /root/.tcshrc
    Filename: /root/.sawfish
    Filename: /root/.pinerc
    Filename: /root/.mc
    Filename: /root/.gnome_private
    Filename: /root/.gnome-desktop
    Filename: /root/.gnome
    Filename: /root/.esd_auth
    Filename: /root/.elm
    Filename: /root/.cshrc
    Filename: /root/.bash_profile
    Filename: /root/.bash_logout
    Filename: /root/.amandahosts
    Filename: /root/.addressbook.lu
    Filename: /root/.addressbook
    Filename: /root/.Xresources
    Filename: /root/.Xauthority
    Filename: /root/.ICEauthority

A voir : le problème de /proc qui bouge sans arrêt :
Pour l'instant on enlève /proc aussi de la liste des scans

  • enlever /root. Par contre on laisse /root/.bashrc
  • enlever /var/run ?
  • enlever /var/log car ça réagit à chaque logrotate...
  • mettre /etc et les fichiers modifiés par les interfaces ISP en SEC_CONFIG

Initialisation du fichier de policy :

twadmin -m P /etc/tripwire/twpol.txt (demande la passphrase) -> crée /etc/tripwire/tw.pol

Initialisation de la database :

tripwire -m i (demande aussi la passphrase)

Check régulier :

tripwire -m c (ou --check)

ça génère une sortie à l'écran (récupérable et mailable) et dans un log /var/lib/tripwire/report/*

Lancement en cron : cron.hourly/tripwire

#!/bin/bash
# Le fichier /root/tripwire.log est lisible
# le rapport /var/lib/tripwire/report/ ne l'est pas mais necessaire pour
# reconstruire la base
/usr/sbin/tripwire --check > /root/tripwire.log
while read LINE
do
  echo "$LINE" | grep "Total violations found" > /dev/null
  if [ $? -eq 0 ]
  then
     TRIP=$(echo "$LINE" | awk 'BEGIN { FS = ":" }{ print $2 }')
     if [ $TRIP -gt 0 ]
     then
        cat /root/tripwire.log | mail -s 'Tripwire hourly report' fsoyer@systea.net
     fi
  fi
done < /root/tripwire.log
find /var/lib/tripwire/report/ -ctime 1 -exec rm {} \;

Si des fichiers ont changés, il faut mettre à jour la base :

  • repérer le dernier fichier /var/lib/tripwire/report/* (qui contient les infos à jour), puis
tripwire --update -r /var/lib/tripwire/report/xxxxxxxxxxxxxx.twr

Plus simple : créer un script /root/bin/tripwire-update-db :

#!/bin/bash
# update database Tripwire after file changes
# Just verify in the editor if the files modified are marqued with a [x]
# then quit. The tripwire site key passphrase is required.
LAST=$(find /var/lib/tripwire/report/ -amin -60 -exec basename {} \; | grep -v report)
# LC_ALL=C avoid an error on report file format
LC_ALL=C tripwire --update -r /var/lib/tripwire/report/$LAST

Dans l'éditeur qui se lance, vérifier que les infos de fichiers à mettre à jour sont précédés d'un [x].
Quitter (avec sauvegarde si vous avez enlevé des "x" pour qu'il continue à alerter sur certains fichiers).
Donner la passphrase.

Tripwire sur CentOS

Il n'y a pas de paquet rpm pour tripwire. D'ailleurs, l'outils a clairement été développé pour Debian, le fichier de police est beaucoup moins adapté à une RedHat like.

Charger les sources sur http://sourceforge.net/projects/tripwire/, décomprésser :

tar -xvjf tripwire-2.4.1.2-src.tar.bz2
cd tripwire-2.4.1.2-src

NOTE : g++ doit être installé (yum install gcc-c++)

sed -i -e 's@TWDB="${prefix}@TWDB="/var@' install/install.cfg

remplace {prefix} (/usr par défaut) par /var pour l'emplacement de la database

./configure --prefix=/usr --sysconfdir=/etc/tripwire
make
make install

Entrer les mots de passe local et site

/etc/tripwire/twpol.txt, fichier par défaut, est le fichier de policy pour RedHat. D'autres pour d'autres unix sont dispos dans tripwire-2.4.1.2-src/policy.

LOG sur CentOS4/BlueQuartz :

The object: "/selinux" is on a different file system...ignoring.
The object: "/sys" is on a different file system...ignoring.
The object: "/var/named/chroot/proc" is on a different file system...ignoring.

### Filename: /usr/local/doc
### Filename: /usr/local/sysinfo
### Filename: /var/lost+found
### Filename: /etc/aliases.db
### Filename: /etc/mail/statistics
### Filename: /cdrom
### Filename: /floppy
### Filename: /home/lost+found

sur une autre BQ il ne trouve pas :

### Filename: /usr/local/man

Enlever (avec !...):

 !/usr/sausalito;
 !/var/lib/php/session;
 !/var/cache; #(du coup commenter /var/cache/man/whatis)
 !/var/lib/munin;
 !/var/lib/ntp;
 !/var/lock;
 !/var/spool;
 !/var/www;
 !/var/state;
 !/var/log;
 !/opt/ossec/logs;
 !/opt/ossec/stats;
 !/home/.sites;
 !/home/solarspeed;
 !/home/.tmp;
 !/home/mysql;

A partir de là se reporter à la procédure APT

La génération de la première base est EXTREMEMENT longue sur BQ !
Les suivantes, avec juste la mise à jour des fichiers marqués, sont plus raisonnables.

Par contre il y a ENORMEMENT de faux-positifs ! A tel point que le cron de tripwire doit être mis dans cron.daily, pas possible dans hourly... L'adaptation du twpol.cfg devra être faite petit à petit. Les modifs sont listées ici au fur et à mesure :

  1. Changer le HOSTNAME
  2. Ajout de (recurse=0) pour /tmp et /home
  3. Ajout de !/var/db
  4. sur / ajout de " -m (recurse=0)"
  5. ajout de  !/usr/local/bfd;
  6. ajout de " -i" à /var/spool/mail