Outils personnels

RKHunter installation

De wikiGite

Procédure validée sur CentOS
A valider sur Debian

NOTE : Le paquet .deb est trop ancien (1.2.9). La 1.3.0 apporte beaucoup de chose (notamment suspscan)

=> install à partir des sources sur Debian et CentOS

Vérifier la dernière version à l'adresse http://sourceforge.net/project/showfiles.php?group_id=155034

wget http://downloads.sourceforge.net/rkhunter/rkhunter-1.3.2.tar.gz

Eventuellement regarder ici :

wget http://garr.dl.sourceforge.net/sourceforge/rkhunter/rkhunter-1.3.0.tar.gz
tar -xvzf rkhunter-1.3.2.tar.gz
cd rkhunter-1.3.2
mkdir -p /opt/rkhunter
./installer.sh --layout custom /opt/rkhunter --install

NOTE : Pour une MISE A JOUR, appliquer la même procédure, l'installateur détecte l'ancienne install.

1.3.0 : Copier la version modifiée du script (systeap1:/home/fsoyer/Documents/Documents divers - logiciels/Sécurité/RKHunter/rkhunter_modifié_bug_suspscan) vers /opt/rkhunter/bin/rkhunter.

Editer /etc/profile, ajouter /opt/rkhunter/bin dans le PATH root (id 0)
(sur CentOS : ligne supplémentaire pathmunge dans le bloc "# Path manipulation" sur CentOS.)

Reconnecter root (ou "su -" pour les tests).

CentOS: créer les scripts d'automatisation (inclus au .deb sur Debian) /etc/default/rkhunter :

# 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="fsoyer@systea.net" #Note : REPORT_MAIL ne sert a rien si on utilise le script cron.daily/rkhunter
# Set this to yes to enable rkhunter weekly database updates
CRON_DB_UPDATE="yes"
# Set this to yes to enable reports of weekly database updates
DB_UPDATE_EMAIL="yes"
# Set this to yes to enable rkhunter daily runs
CRON_DAILY_RUN="yes"

/etc/cron.daily/rkhunter (scan journalier) :

#!/bin/sh
RKHUNTER=/opt/rkhunter/bin/rkhunter
EXCLUDE=/opt/rkhunter/bin/rkhunter.exclude
if [ ! -x $RKHUNTER ]; then
  exit 0
fi
# source our config
. /etc/default/rkhunter
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
         cat $OUTFILE | grep -v -e '^$' > /tmp/rkhunter.a1
         while read LINE
         do
            cat /tmp/rkhunter.a1 | grep -v "$LINE" > /tmp/rkhunter.a2
            mv /tmp/rkhunter.a2 /tmp/rkhunter.a1
         done < $EXCLUDE
         if [ -s /tmp/rkhunter.a1 ]
         then
            (
              echo "Subject: [rkhunter] Daily run"
              echo ""
              cat $OUTFILE
            ) | /usr/sbin/sendmail $REPORT_EMAIL
          fi
       fi
       rm -f $OUTFILE
       rm -f /tmp/rkhunter.a1
       ;;
     *)
      exit 0
      ;;
esac

Le fichier EXCLUDE sert à supprimer des faux-positif sans toucher au script rkhunter. On met sur chaque ligne un mot/une phrase à filtrer.
Exemple : /opt/rkhunter/bin/rkhunter.exclude

Warning: Package manager verification has failed:
File:
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)

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.

NE PAS OUBLIER

chmod 700 /etc/cron.daily/rkhunter

/etc/cron.weekly/rkhunter (update des bases) :

#!/bin/sh
RKHUNTER=/opt/rkhunter/bin/rkhunter
if [ ! -x $RKHUNTER ]; then
  exit 0
fi
# source our config
. /etc/default/rkhunter
case "$CRON_DB_UPDATE" in
     [Yy]*)
        OUTFILE=`mktemp` || exit 1
        if [ "$DB_UPDATE_EMAIL" = "no" ]
        then
            $RKHUNTER --versioncheck 1>/dev/null 2>$OUTFILE
            $RKHUNTER --update 1>/dev/null 2>$OUTFILE
        else
            (
          echo "Subject: [rkhunter] Weekly database update"
          echo ""
          $RKHUNTER --versioncheck 
              $RKHUNTER --update
            ) | /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 /etc/cron.weekly/rkhunter

Editer /opt/rkhunter/etc/rkhunter.conf :

MAIL-ON-WARNING=fsoyer@systea.net
# 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"

Toujours sur CentOS :
Enlever /sbin/ifup de PROP_FILE_LIST (fonction set_file_prop_dirs_files() dans /opt/rkhunter/bin/rkhunter), même s'il est dans la SCRIPTWHITELIST il met une erreur de vérif PKGMGR
Selon les version de CentOS, on peut aussi avoir à enlever "grep" de PROP_FILE_LIST
S'il y a trop d'erreurs de ce type mettre PKGMGR à NONE.

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

rkhunter --propupd

Lancer /etc/cron.daily/rkhunter 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.


Pour mémoire, première install par apt-get -> version 1.2.9

apt-get install rkhunter

Lancer rkhunter une fois pour vérifier le système, et repérer les faux positifs.

S'il y en a, éditer /etc/rkhunter.conf. Exemple, décommenter :

ALLOWHIDDENDIR=/dev/.udev
ALLOWHIDDENDIR=/dev/.static
ALLOWHIDDENDIR=/dev/.initramfs

Editer /etc/default/rkhunter si nécessaire, notamment pour donner une adresse mail valide dans REPORT_EMAIL.

Sur une Etch, éditer /var/lib/rkhunter/db/os.dat. Si "Debian 4.0" n'est pas dans la liste, ajouter :

"723:Debian 4.0 (i386):/usr/bin/md5sum:/bin:"

pour éviter des mails intempestifs sur "OS non supporté".