Outils personnels

RKHunter installation : Différence entre versions

De wikiGite

Ligne 20 : Ligne 20 :
 
Reconnecter root (ou "su -" pour les tests).
 
Reconnecter root (ou "su -" pour les tests).
 
# END ARCHIVE -->
 
# END ARCHIVE -->
 +
= Installation =
 
  yum install --enablerepo=rpmforge rkhunter
 
  yum install --enablerepo=rpmforge rkhunter
 
Déplacer la config dans un sous-répertoire de /etc pour plus de clarté
 
Déplacer la config dans un sous-répertoire de /etc pour plus de clarté
Ligne 26 : Ligne 27 :
 
Il faudra juste penser à appeler systématiquement rkhunter par "rkhunter --configfile /etc/rkhunter/rkhunter.conf".
 
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''') :
+
= Configuration =
 +
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"
 +
 
 +
 
 +
= Scripts d'automatisation =
 +
== rkhunter-cron.conf ==
 +
D'abord un fichier /etc/rkhunter/rkhunter-cron.conf (ATTENTION au '''REPORT_EMAIL''') qui permettra de piloter le fonctionnement de rkhunter lancé par cron :
 
  # Defaults for rkhunter cron jobs
 
  # Defaults for rkhunter cron jobs
 
  # sourced by /etc/cron.*/rkhunter
 
  # sourced by /etc/cron.*/rkhunter
Ligne 41 : Ligne 69 :
 
  CRON_DAILY_RUN="y"
 
  CRON_DAILY_RUN="y"
  
rkhunter-daily.sh (scan journalier) :
+
== rkhunter.sh ==
  #!/bin/sh
+
Le script principal effectue des tâches différentes selon le nom qu'on lui donne.
 +
 
 +
# Pour le scan journalier, créer un lien symbolique /etc/cron.daily/rkhunter_'''scan'''.
 +
 
 +
# Pour 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), créer un lien symbolique /etc/cron.daily/rkhunter_'''update'''.
 +
 
 +
  #!/bin/bash
 
  CONFDIR=/etc/rkhunter
 
  CONFDIR=/etc/rkhunter
 
  RKHUNTER="/usr/bin/rkhunter --configfile $CONFDIR/rkhunter.conf"
 
  RKHUNTER="/usr/bin/rkhunter --configfile $CONFDIR/rkhunter.conf"
Ligne 49 : Ligne 83 :
 
  . $CONFDIR/rkhunter-cron.conf
 
  . $CONFDIR/rkhunter-cron.conf
 
   
 
   
  case "$CRON_DAILY_RUN" in
+
  case $0 in
    [Yy]*)
+
  *scan)
 +
      if [ "$CRON_DAILY_RUN" == "y" -o "$CRON_DAILY_RUN" == "Y" ]
 +
      then
 
         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
Ligne 62 : Ligne 98 :
 
         fi
 
         fi
 
         rm -f $OUTFILE
 
         rm -f $OUTFILE
        ;;
+
      fi
       *)
+
       ;;
      exit 0
+
  *update)
      ;;
+
      if [ "$CRON_DB_UPDATE" == "y" -o "$CRON_DAILY_RUN" == "Y" ]
esac
+
       then
 
+
        OUTFILE=`mktemp` || exit 1
NE PAS OUBLIER
+
        if [ "$DB_UPDATE_EMAIL" = "y" -o "$DB_UPDATE_EMAIL" = "Y" ]
chmod 700 rkhunter-daily.sh
+
        then
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 "Subject: [rkhunter] Weekly database update"
 
           echo ""
 
           echo ""
 
           $RKHUNTER --nocolors --versioncheck 2>&1
 
           $RKHUNTER --nocolors --versioncheck 2>&1
 
           $RKHUNTER --nocolors --update 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
 
           ) | /usr/sbin/sendmail $REPORT_EMAIL
        fi
+
        else
        rm -f $OUTFILE
+
          $RKHUNTER --nocolors --versioncheck 1>/dev/null 2>$OUTFILE
        ;;
+
          if [ $? -eq 2 ]
      *)
+
          then
        exit 0
+
              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
 +
        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
 +
      fi
 +
      ;;
 +
  *)
 +
      exit 0
 +
      ;;
 
  esac
 
  esac
  
 
NE PAS OUBLIER
 
NE PAS OUBLIER
  chmod 700 rkhunter-weekly.sh
+
  chmod 700 rkhunter.sh
 
et
 
et
  ln -s /<REPERTOIRE DU SCRIPT>/rkhunter-weekly.sh /etc/cron.weekly/rkhunter_weekly
+
  ln -s /<REPERTOIRE DU SCRIPT>/rkhunter.sh /etc/cron.daily/rkhunter_scan
 
+
  ln -s /<REPERTOIRE DU SCRIPT>/rkhunter.sh /etc/cron.weekly/rkhunter_update
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"
 
  
 +
= Initialisation =
 
Pour initialiser la base, lancer une première fois :
 
Pour initialiser la base, lancer une première fois :
 
  su -
 
  su -
Ligne 152 : Ligne 151 :
 
Et relancer cette commande à chaque fois que nécessaire (fichiers ajoutés ou supprimés, par exemple).
 
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)
+
Lancer /etc/cron.daily/rkhunter_scan 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 ===
+
= 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).
 
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).
  

Version du 8 août 2013 à 10:01

Procédure validée sur CentOS

Installation

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".

Configuration

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"


Scripts d'automatisation

rkhunter-cron.conf

D'abord un fichier /etc/rkhunter/rkhunter-cron.conf (ATTENTION au REPORT_EMAIL) qui permettra de piloter le fonctionnement de rkhunter lancé par cron :

# 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.sh

Le script principal effectue des tâches différentes selon le nom qu'on lui donne.

  1. Pour le scan journalier, créer un lien symbolique /etc/cron.daily/rkhunter_scan.
  1. Pour 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), créer un lien symbolique /etc/cron.daily/rkhunter_update.
#!/bin/bash
CONFDIR=/etc/rkhunter
RKHUNTER="/usr/bin/rkhunter --configfile $CONFDIR/rkhunter.conf"

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

case $0 in
  *scan)
     if [ "$CRON_DAILY_RUN" == "y" -o "$CRON_DAILY_RUN" == "Y" ]
     then
       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
     fi
     ;;
  *update)
     if [ "$CRON_DB_UPDATE" == "y" -o "$CRON_DAILY_RUN" == "Y" ]
     then
       OUTFILE=`mktemp` || exit 1
       if [ "$DB_UPDATE_EMAIL" = "y" -o "$DB_UPDATE_EMAIL" = "Y" ]
       then
         (
          echo "Subject: [rkhunter] Weekly database update"
          echo ""
          $RKHUNTER --nocolors --versioncheck 2>&1
          $RKHUNTER --nocolors --update 2>&1
          ) | /usr/sbin/sendmail $REPORT_EMAIL
       else
         $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
       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
     fi
     ;;
  *)
     exit 0
     ;;
esac

NE PAS OUBLIER

chmod 700 rkhunter.sh

et

ln -s /<REPERTOIRE DU SCRIPT>/rkhunter.sh /etc/cron.daily/rkhunter_scan
ln -s /<REPERTOIRE DU SCRIPT>/rkhunter.sh /etc/cron.weekly/rkhunter_update

Initialisation

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_scan 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.