Outils personnels

RKHunter installation : Différence entre versions

De wikiGite

Ligne 1 : Ligne 1 :
 
<span style="color:green">Procédure validée sur CentOS</span><br>
 
<span style="color:green">Procédure validée sur CentOS</span><br>
<!--
+
 
 +
<!-- # ARCHIVE
 
'''NOTE''' : Le paquet .deb est trop ancien (1.2.9). La 1.3.0 apporte beaucoup de chose (notamment suspscan)
 
'''NOTE''' : Le paquet .deb est trop ancien (1.2.9). La 1.3.0 apporte beaucoup de chose (notamment suspscan)
  
Ligne 19 : Ligne 20 :
  
 
Reconnecter root (ou "su -" pour les tests).
 
Reconnecter root (ou "su -" pour les tests).
-->
+
# END ARCHIVE -->
 +
 
 
  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é
 +
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 /opt/rkhunter.conf (ATTENTION au '''REPORT_EMAIL''') :
+
'''CentOS''': créer les scripts d'automatisation /etc/rkhunter/rkhunter-cron.conf (ATTENTION au '''REPORT_EMAIL''') :
 
  # Defaults for rkhunter cron jobs
 
  # Defaults for rkhunter cron jobs
 
  # sourced by /etc/cron.*/rkhunter
 
  # sourced by /etc/cron.*/rkhunter
Ligne 31 : Ligne 37 :
 
  REPORT_EMAIL="<mail_admin>@example.net"
 
  REPORT_EMAIL="<mail_admin>@example.net"
 
  # Set this to yes to enable rkhunter weekly database updates
 
  # Set this to yes to enable rkhunter weekly database updates
  CRON_DB_UPDATE="yes"
+
  CRON_DB_UPDATE="y"
 
  # Set this to yes to enable reports of weekly database updates
 
  # Set this to yes to enable reports of weekly database updates
  DB_UPDATE_EMAIL="yes"
+
  DB_UPDATE_EMAIL="y"
 
  # Set this to yes to enable rkhunter daily runs
 
  # Set this to yes to enable rkhunter daily runs
  CRON_DAILY_RUN="yes"
+
  CRON_DAILY_RUN="y"
  
/opt/rkhunter-daily.sh (scan journalier) :
+
rkhunter-daily.sh (scan journalier) :
 
  #!/bin/sh
 
  #!/bin/sh
  RKHUNTER=/usr/bin/rkhunter
+
  RKHUNTER="/usr/bin/rkhunter --configfile /etc/rkhunter/rkhunter.conf"
SCRIPTDIR=$(dirname $0)
+
  EXCLUDE=/etc/rkhunter/rkhunter.exclude
  EXCLUDE=$SCRIPTDIR/rkhunter.exclude
 
 
   
 
   
 
  # source our config
 
  # source our config
  . $SCRIPTDIR/rkhunter-cron.conf
+
  . /etc/rkhunter/rkhunter-cron.conf
 
   
 
   
 
  if [ ! -x $RKHUNTER ]; then
 
  if [ ! -x $RKHUNTER ]; then
Ligne 78 : Ligne 83 :
  
 
NE PAS OUBLIER
 
NE PAS OUBLIER
  chmod 700 /opt/rkhunter-daily.sh
+
  chmod 700 rkhunter-daily.sh
 
et
 
et
  ln -s /opt/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/>
 
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 : /opt/rkhunter.exclude
+
Exemple : /etc/rkhunter/rkhunter.exclude
 
  Warning: Package manager verification has failed:
 
  Warning: Package manager verification has failed:
 
  File: /bin/grep
 
  File: /bin/grep
Ligne 93 : Ligne 98 :
 
  One or more warnings have been found while checking the system.
 
  One or more warnings have been found while checking the system.
 
  Please check the log file (/var/log/rkhunter.log)
 
  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, 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).
+
'''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.
 
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.
  
/opt/rkhunter-weekly.sh (update des bases) :
+
rkhunter-weekly.sh (update des bases) :
 
  #!/bin/sh
 
  #!/bin/sh
  RKHUNTER=/usr/bin/rkhunter
+
  RKHUNTER="/usr/bin/rkhunter --configfile /etc/rkhunter/rkhunter.conf"
SCRIPTDIR=$(dirname $0)
 
 
   
 
   
 
  # source our config
 
  # source our config
  . $SCRIPTDIR/rkhunter-cron.conf
+
  . /etc/rkhunter/rkhunter-cron.conf
 
   
 
   
 
  case "$CRON_DB_UPDATE" in
 
  case "$CRON_DB_UPDATE" in
Ligne 135 : Ligne 139 :
  
 
NE PAS OUBLIER
 
NE PAS OUBLIER
  chmod 700 /opt/rkhunter-weekly.sh
+
  chmod 700 rkhunter-weekly.sh
 
et
 
et
  ln -s /opt/rkhunter-weekly.sh /etc/cron.weekly/rkhunter-weekly
+
  ln -s /<REPERTOIRE DU SCRIPT>/rkhunter-weekly.sh /etc/cron.weekly/rkhunter_weekly
  
Editer /etc/rkhunter.conf :
+
Editer /etc/rkhunter/rkhunter.conf :
 
  # MAIL-ON-WARNING=<mail_admin>@example.net # Pas nécessaire si on utilise le script /etc/cron.daily/rkhunter
 
  # 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 DOIT ETRE à la même valeur que PermitRootLogin de sshd_config
Ligne 166 : Ligne 170 :
 
  rkhunter --propupd
 
  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)
+
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 ===
 
=== SUSPSCAN ===
Ligne 173 : Ligne 177 :
 
suspscan désactivé 14/03/08 : vraiment trop gourmand... Et trop de faux positifs.
 
suspscan désactivé 14/03/08 : vraiment trop gourmand... Et trop de faux positifs.
  
<!--
+
<!-- # ARCHIVE
 
--------------------------------------------
 
--------------------------------------------
 
Pour mémoire, première install par apt-get -> version 1.2.9
 
Pour mémoire, première install par apt-get -> version 1.2.9
Ligne 189 : Ligne 193 :
 
  "723:Debian 4.0 (i386):/usr/bin/md5sum:/bin:"
 
  "723:Debian 4.0 (i386):/usr/bin/md5sum:/bin:"
 
pour éviter des mails intempestifs sur "OS non supporté".
 
pour éviter des mails intempestifs sur "OS non supporté".
-->
+
# END ARCHIVE -->

Version du 8 août 2013 à 08:18

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
RKHUNTER="/usr/bin/rkhunter --configfile /etc/rkhunter/rkhunter.conf"
EXCLUDE=/etc/rkhunter/rkhunter.exclude

# source our config
. /etc/rkhunter/rkhunter-cron.conf

if [ ! -x $RKHUNTER ]; then
  exit 0
fi
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

NE PAS OUBLIER

chmod 700 rkhunter-daily.sh

et

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

rkhunter-weekly.sh (update des bases) :

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

# source our config
. /etc/rkhunter/rkhunter-cron.conf

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

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.