Outils personnels

RKHunter installation : Différence entre versions

De wikiGite

Ligne 54 : Ligne 54 :
 
         OUTFILE=`mktemp` || exit 1
 
         OUTFILE=`mktemp` || exit 1
 
         $RKHUNTER --cronjob --report-warnings-only --createlogfile /var/log/rkhunter.log > $OUTFILE
 
         $RKHUNTER --cronjob --report-warnings-only --createlogfile /var/log/rkhunter.log > $OUTFILE
−
         if [ $(stat -c %s $OUTFILE) -ne 0 ]; then
+
         if [ $(stat -c %s $OUTFILE) -ne 0 ]
−
          cat $OUTFILE | grep -v -e '^$' > /tmp/rkhunter.a1
+
        then
−
          while read LINE
+
          (
−
          do
+
            echo "Subject: [rkhunter] Daily run"
−
            cat /tmp/rkhunter.a1 | grep -v "$LINE" > /tmp/rkhunter.a2
+
            echo ""
−
            mv /tmp/rkhunter.a2 /tmp/rkhunter.a1
+
            cat $OUTFILE
−
          done < $EXCLUDE
+
          ) | /usr/sbin/sendmail $REPORT_EMAIL
−
          if [ -s /tmp/rkhunter.a1 ]
 
−
          then
 
−
            (
 
−
              echo "Subject: [rkhunter] Daily run"
 
−
              echo ""
 
−
              cat $OUTFILE
 
−
            ) | /usr/sbin/sendmail $REPORT_EMAIL
 
−
          fi
 
 
         fi
 
         fi
 
         rm -f $OUTFILE
 
         rm -f $OUTFILE
−
        rm -f /tmp/rkhunter.a1
 
 
         ;;
 
         ;;
 
       *)
 
       *)
Ligne 82 : Ligne 73 :
 
et
 
et
 
  ln -s /<REPERTOIRE DU SCRIPT>/rkhunter-daily.sh /etc/cron.daily/rkhunter_daily
 
  ln -s /<REPERTOIRE DU SCRIPT>/rkhunter-daily.sh /etc/cron.daily/rkhunter_daily
−
 
−
Le fichier EXCLUDE sert à supprimer des faux-positif sans toucher au script rkhunter. On met sur chaque ligne un mot/une phrase à filtrer.<br/>
 
−
Exemple : /etc/rkhunter/rkhunter.exclude
 
−
Warning: Package manager verification has failed:
 
−
File: /bin/grep
 
−
File: /usr/bin/less
 
−
Try running the command 'prelink
 
−
The file modification time has changed
 
−
The file hash value has changed
 
−
The file size has changed
 
−
One or more warnings have been found while checking the system.
 
−
Please check the log file (/var/log/rkhunter.log)
 
−
'''Note''' : Lister les "File:..." en fonction du résultat d'un premier lancement de /etc/cron.daily/rkhunter_daily, afin de bien coller aux faux-positifs de cette configuration, et être sûr qu'il avertisse si d'autres binaires étaient modifiés un jour (hack ou upgrade).
 
−
 
−
Si le script continue à envoyer le mail, vérifier les phrases qu'il ne filtre pas en commentant les deux lignes "rm -f /tmp/..." et en relançant le script. Voir /tmp/rkhunter.a1. Penser à décommenter après debug.
 
  
 
Vérifier une fois par semaine si le programme nécessite une mise à jour (envoi d'un message à l'administrateur), et/ou s'il y a de nouvelles bases de règles (/var/lib/rkhunter - mise à jour automatique).
 
Vérifier une fois par semaine si le programme nécessite une mise à jour (envoi d'un message à l'administrateur), et/ou s'il y a de nouvelles bases de règles (/var/lib/rkhunter - mise à jour automatique).

Version du 8 août 2013 à 09:17

Procédure validée sur CentOS

yum install --enablerepo=rpmforge rkhunter

Déplacer la config dans un sous-répertoire de /etc pour plus de clarté

mkdir /etc/rkhunter
mv /etc/rkhunter.conf /etc/rkhunter

Il faudra juste penser à appeler systématiquement rkhunter par "rkhunter --configfile /etc/rkhunter/rkhunter.conf".

CentOS: créer les scripts d'automatisation /etc/rkhunter/rkhunter-cron.conf (ATTENTION au REPORT_EMAIL) :

# Defaults for rkhunter cron jobs
# sourced by /etc/cron.*/rkhunter
#
# This is a POSIX shell fragment
#
# Set this to the email address where reports and run output should be sent
REPORT_EMAIL="<mail_admin>@example.net"
# Set this to yes to enable rkhunter weekly database updates
CRON_DB_UPDATE="y"
# Set this to yes to enable reports of weekly database updates
DB_UPDATE_EMAIL="y"
# Set this to yes to enable rkhunter daily runs
CRON_DAILY_RUN="y"

rkhunter-daily.sh (scan journalier) :

#!/bin/sh
CONFDIR=/etc/rkhunter
RKHUNTER="/usr/bin/rkhunter --configfile $CONFDIR/rkhunter.conf"
EXCLUDE=$CONFDIR/rkhunter.exclude

# source our config
. $CONFDIR/rkhunter-cron.conf

case "$CRON_DAILY_RUN" in
    [Yy]*)
       OUTFILE=`mktemp` || exit 1
       $RKHUNTER --cronjob --report-warnings-only --createlogfile /var/log/rkhunter.log > $OUTFILE
       if [ $(stat -c %s $OUTFILE) -ne 0 ]
       then
          (
           echo "Subject: [rkhunter] Daily run"
           echo ""
           cat $OUTFILE
          ) | /usr/sbin/sendmail $REPORT_EMAIL
       fi
       rm -f $OUTFILE
       ;;
     *)
      exit 0
      ;;
esac

NE PAS OUBLIER

chmod 700 rkhunter-daily.sh

et

ln -s /<REPERTOIRE DU SCRIPT>/rkhunter-daily.sh /etc/cron.daily/rkhunter_daily

Vérifier une fois par semaine si le programme nécessite une mise à jour (envoi d'un message à l'administrateur), et/ou s'il y a de nouvelles bases de règles (/var/lib/rkhunter - mise à jour automatique). rkhunter-weekly.sh (update des bases) :

#!/bin/sh
CONFDIR=/etc/rkhunter
RKHUNTER="/usr/bin/rkhunter --configfile $CONFDIR/rkhunter.conf"

# source our config
. $CONFDIR/rkhunter-cron.conf

case "$CRON_DB_UPDATE" in
     [Yy]*)
        OUTFILE=`mktemp` || exit 1
        if [ "$DB_UPDATE_EMAIL" = "no" ]
        then
            $RKHUNTER --nocolors --versioncheck 1>/dev/null 2>$OUTFILE
            if [ $? -eq 2 ]
            then
                echo "Une nouvelle version de RKHUNTER est disponible !" >> $OUTFILE
            fi
            $RKHUNTER --nocolors --update 1>/dev/null 2>>$OUTFILE
            if [ $? -eq 2 ]
            then
                echo "Une nouvelle version des bases de RKHUNTER a été installée." >> $OUTFILE
            fi
        else
            (
          echo "Subject: [rkhunter] Weekly database update"
          echo ""
          $RKHUNTER --nocolors --versioncheck 2>&1
          $RKHUNTER --nocolors --update 2>&1
            ) | /usr/sbin/sendmail $REPORT_EMAIL
        fi
        if [ $(stat -c %s $OUTFILE) -ne 0 ]; then
          (
            echo "Subject: [rkhunter] Weekly database update"
            echo ""
            cat $OUTFILE
          ) | /usr/sbin/sendmail $REPORT_EMAIL
        fi
        rm -f $OUTFILE
        ;;
      *)
       exit 0
       ;;
esac

NE PAS OUBLIER

chmod 700 rkhunter-weekly.sh

et

ln -s /<REPERTOIRE DU SCRIPT>/rkhunter-weekly.sh /etc/cron.weekly/rkhunter_weekly

Editer /etc/rkhunter/rkhunter.conf :

# MAIL-ON-WARNING=<mail_admin>@example.net # Pas nécessaire si on utilise le script /etc/cron.daily/rkhunter
# ALLOW_SSH_ROOT_USER DOIT ETRE à la même valeur que PermitRootLogin de sshd_config
ALLOW_SSH_ROOT_USER=without-password
PKGMGR=DPKG # (ou RPM)
ALLOWHIDDENDIR=/dev/.udev
ALLOWHIDDENDIR=/dev/.static
ALLOWHIDDENDIR=/dev/.initramfs
ALLOWHIDDENDIR=/dev/.initramfs-tools

ALLOWHIDDENFILE=/usr/share/man/man1/..1.gz
ALLOWHIDDENFILE=/etc/.pwd.lock

En plus sur CentOS :

SCRIPTWHITELIST=/sbin/ifup
SCRIPTWHITELIST=/sbin/ifdown
SCRIPTWHITELIST=/usr/bin/groups

XINETD_ALLOWED_SVC=/etc/xinetd.d/proftpd
UID0_ACCOUNTS="root-admin"

Et si certaines version de logiciels ne sont pas à jour :

APP_WHITELIST="openssl:0.9.7a php:4.3.9"

Pour initialiser la base, lancer une première fois :

su -
rkhunter --propupd

Et relancer cette commande à chaque fois que nécessaire (fichiers ajoutés ou supprimés, par exemple).

Lancer /etc/cron.daily/rkhunter_daily sur la ligne de commande pour voir les faux-positifs et ajuster la configuration (résultat dans /var/log/rkhunter.log, chercher "Warning", et par mail)

SUSPSCAN

rkhunter peut scanner des répertoire pour des "suspicious contents". Suspscan est gourmand en CPU, il est désactivé par défaut dans rkhunter.conf (DISABLE_TESTS).

suspscan désactivé 14/03/08 : vraiment trop gourmand... Et trop de faux positifs.