CHKRootkit installation : Différence entre versions
De wikiGite
| Ligne 79 : | Ligne 79 : | ||
|   chkwtmp.c: In function ‘main’: |   chkwtmp.c: In function ‘main’: | ||
|   chkwtmp.c:95: warning: incompatible implicit declaration of built-in function ‘exit’ |   chkwtmp.c:95: warning: incompatible implicit declaration of built-in function ‘exit’ | ||
| + | mais chkrootkit fonctionne quand même | ||
| = Pour finir = | = Pour finir = | ||
Version du 7 juillet 2009 à 08:54
Sommaire
Sur DEBIAN
Procédure validée
apt-get install chkrootkit mkdir /etc/chkrootkit mv /etc/chkrootkit.conf /etc/chkrootkit
Editer /etc/chkrootkit/chkrootkit.conf (cf chkrootkit.conf)
Créer /etc/chkrootkit/exclude.list et y ajouter les phrases à exclure du mail d'alerte, exemple POUR DEBIAN :
The following suspicious files and directories were found: /lib/init/rw/.ramfs INFECTED (PORTS: 465) eth0: PACKET SNIFFER(/usr/sbin/snort
Editer /etc/cron.daily/chkrootkit (cf cron chkrootkit)
Pour finir
Lancer /etc/cron.daily/chkrootkit pour vérifier qu'il fonctionne et récupérer les messages.
(/var/cache/chkrootkit/log.old contient tous les messages, log.alert doit être vide si exclude.list est ok)
Sur CentOS4/BQ
Procédure validée
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar -xvzf chkrootkit.tar.gz cd chkrootkit-0.48/ make sense
Si gcc non trouvé :
yum install gcc
Dans le répertoire d'install courant, éditer le fichier "chkrootkit",
ajouter entre "unalias dirname > /dev/null 2>&1" et "# Workaround for recent GNU coreutils" la ligne :
cd /usr/lib/chkrootkit
Puis installer les binaires :
cp chkrootkit /usr/sbin mkdir /usr/lib/chkrootkit cp chkdirs /usr/lib/chkrootkit cp ifpromisc /usr/lib/chkrootkit cp chkwtmp /usr/lib/chkrootkit cp chklastlog /usr/lib/chkrootkit cp chkutmp /usr/lib/chkrootkit cp check_wtmpx /usr/lib/chkrootkit cp chkproc /usr/lib/chkrootkit cp strings-static /usr/lib/chkrootkit mkdir /var/cache/chkrootkit mkdir /etc/chkrootkit cd /etc/chkrootkit
Créer /etc/chkrootkit/chkrootkit.conf (cf chkrootkit.conf)
Créer /etc/chkrootkit/exclude.list et y ajouter les phrases à exclure du mail d'alerte, exemple POUR CENTOS :
Warning: '/' is not an ordinary file .packlist The tty of the following user process(es) were not found in /var/run/utmp RUID /sbin/mingetty redirectUrl: /base/vsite/vsiteList.php
Créer /etc/cron.daily/chkrootkit (cf cron chkrootkit)
NOTE : pour E-photo, ajouter une tache cron.daily pour éviter des faux-positifs dans /tmp
/etc/cron.daily/before-chkrootkit :
#!/bin/bash
# 05/2008 faux-positifs sur fichiers /tmp/php_writeexcel*
find /tmp -name "php_writeexcel*" -ctime +1 -exec rm {} \;
Sans oublier bien sûr
chmod 700 /etc/cron.daily/before-chkrootkit
Sur CentOS5/BlueOnyx
Erreur à la compilation :
chkwtmp.c: In function ‘main’: chkwtmp.c:95: warning: incompatible implicit declaration of built-in function ‘exit’
mais chkrootkit fonctionne quand même
Pour finir
Lancer /etc/cron.daily/chkrootkit pour vérifier qu'il fonctionne et récupérer les messages.
(/var/cache/chkrootkit/log.old contient tous les messages, log.alert doit être vide si exclude.list est ok)
SCRIPTS
chkrootkit
Editer /etc/cron.daily/chkrootkit, pour qu'il ressemble à ça :
#!/bin/bash
CHKROOTKIT=/usr/sbin/chkrootkit
CF=/etc/chkrootkit/chkrootkit.conf
EXCLUDEF=/etc/chkrootkit/exclude.list
MAIL=$(which mail)
LOG_DIR=/var/cache/chkrootkit
if [ ! -x $CHKROOTKIT ]; then
  exit 0
fi
if [ -f $CF ]; then
    . $CF
fi
if [ "$RUN_DAILY" = "true" ]; then
    if [ "$DIFF_MODE" = "true" ]; then
        $CHKROOTKIT $RUN_DAILY_OPTS > $LOG_DIR/log.old 2>&1
    else
        $CHKROOTKIT $RUN_DAILY_OPTS
    fi
fi
# Mail alert
# No future for empty lines
cat $LOG_DIR/log.old | grep -v -e '^$' > $LOG_DIR/log.alert
# We drop lines listed in $EXCLUDEF by suppress them line by line
while read LINE
do
   # unlike Debian, writing the cat output to the same file does'nt seem to work on CentOS
   # We use a temporary file a2
   cat $LOG_DIR/log.alert | grep -v "$LINE" > $LOG_DIR/log.a2
   mv $LOG_DIR/log.a2 $LOG_DIR/log.alert
done < /etc/chkrootkit/exclude.list
# If some alerts stay in file, we cry
if [ -s $LOG_DIR/log.alert ]
then
        (echo "CHKROOTKIT Alert :"
         cat $LOG_DIR/log.alert
        ) | $MAIL -s 'chkrootkit Daily Run' $REPORT_MAIL
fi
Ne pas oublier
chmod 700 /etc/cron.daily/chkrootkit
chkrootkit.conf
Editer /etc/chkrootkit/chkrootkit.conf, modifier :
RUN_DAILY="true" RUN_DAILY_OPTS="-q" # -q=quiet mode DIFF_MODE="true" # garde un /var/cache/chkrootkit/log.old pour comparer la prochaine fois
et y ajouter
REPORT_MAIL=<mail_admin>@example.net

