Xymon – Monitorer portaudit sur un Freebsd & ses Jails

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.

Leave a Reply

Your email address will not be published. Required fields are marked *


+ seven = 8