Tripwire installation
De wikiGite
Sommaire
Tripwire sur Debian
Install
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
On édite ensuite twpol.cfg, et on ajoute "!" devant ces fichiers pour qu'il les oublie.
Voir en fin de paragraphe les autres modifs notées au fur et à mesure.
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.
Modifs du twpol.cfg
- 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
Spécifique ISPConfig :
- Ajout de -i pour /etc/group et /etc/gshadow (ISPConfig reecrit entierement les fichiers)
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.
Install
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
Modifs du twpol.cfg
- Changer le HOSTNAME (Note : je n'ai pas trouvé où il était initialisé sur Debian, mais il l'est automatiquement sans modif)
Spécifique BlueQuartz
- Ajout de (recurse=0) pour /tmp et /home
- Ajout de !/var/db
- sur / ajout de " -m (recurse=0)"
- ajout de !/usr/local/bfd;
- ajout de " -i" à /var/spool/mail