Il est important de savoir si des packages comportent des vulnérabilités sur son système.
Pour cela, FreeBSD met à disposition un outil appelé portaudit.
Couplé avec Xymon, voici ce que cela donne:
Lorsqu’il y a une alerte, la diode devient rouge et affiche le(s) package(s) présentant la faille de vulnérabilité remontée par portaudit:
Il arrive bien souvent d’avoir des jails sur un FreeBSD, et plutôt que d’installer portait sur chaque jail, il est possible de l’exécuter depuis la globale et d’analyser les jails.
Ce script s’appuie sur ce principe et reportera au nom des jails sur Xymon.
#!/bin/sh # HOBBIT - WATCH THE SECURITY # nlienard - 13-06-2006 ##################################################### # TEST="portaudit" VERSION="1.0" COLOR="red" PORTAUDIT="/usr/local/sbin/portaudit" echo > $BBTMP/.portaudit.report # Hostmaster Portaudit Check echo "Hostmaster check:" >> $BBTMP/.portaudit.report $PORTAUDIT -Fad >> $BBTMP/.portaudit.report cat $BBTMP/.portaudit.report | grep 'Affected' > /dev/null if [ $? -ne 0 ]; then COLOR="green" fi echo "" >> $BBTMP/.portaudit.report # FORMAT IT PROPERLY FOR BB... LINE="status+1560 $MACHINE.$TEST $COLOR `date` - portaudit looks $COLOR `echo ; cat $BBTMP/.portaudit.report`" $BB $BBDISP "$LINE" # SEND IT TO BBDISPLAY # Jails Portaudit Check cd $BBTMP for JAIL in `jls | grep -v JID | awk '{print $4}'`; do COLOR="red" JIP=`basename $JAIL` #JNAME=`jls | grep $JIP | awk '{print $3}' | cut -d"." -f1` JNAME=`jls | grep $JIP | awk '{print $3}'` ls -1 $JAIL/var/db/pkg > $BBTMP/$JIP.paf echo "Jail ($JNAME) detection:" > $BBTMP/.portaudit.report $PORTAUDIT -f $BBTMP/$JIP.paf >> $BBTMP/.portaudit.report cat $BBTMP/.portaudit.report | grep 'Affected' > /dev/null if [ $? -ne 0 ]; then COLOR="green" fi LINE="status+1560 $JNAME.$TEST $COLOR `date` - portaudit looks $COLOR `echo ; cat $BBTMP/.portaudit.report`" $BB $BBDISP "$LINE" # SEND IT TO BBDISPLAY rm $BBTMP/$JIP.paf echo "" done exit 0
Ce script s’installe dans ~xymon/client/ext/
Il s’active en insérant les lignes suivante dans ~xymon/client/etc/clientlaunch.cfg
[portaudit] ENVFILE $XYMONCLIENTHOME/etc/xymonclient.cfg CMD $XYMONCLIENTHOME/ext/portaudit.sh LOGFILE $XYMONCLIENTLOGS/portaudit.log INTERVAL 60m
Ne pas oublier de redémarrer Xymon pour un résultat immédiat.
Si jamais Xymon n’est pas executé en root, il faudra utiliser sudo pour l’exécution de portaudit.