RKHunter installation : Différence entre versions
De wikiGite
| Ligne 28 : | Ligne 28 : | ||
= Configuration = | = Configuration = | ||
| − | Editer /etc/rkhunter/rkhunter.conf : | + | Editer /etc/rkhunter/rkhunter.conf. Fichier standard pour une CentOS (uniquement les lignes décommentées) : |
| − | + | ROTATE_MIRRORS=1 | |
| − | + | UPDATE_MIRRORS=1 | |
| + | MIRRORS_MODE=0 | ||
| + | MAIL-ON-WARNING="" | ||
| + | MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}" | ||
| + | UPDATE_LANG="" | ||
| + | LOGFILE=/var/log/rkhunter.log | ||
| + | APPEND_LOG=0 | ||
| + | COPY_LOG_ON_ERROR=0 | ||
| + | COLOR_SET2=0 | ||
| + | AUTO_X_DETECT=1 | ||
| + | WHITELISTED_IS_WHITE=0 | ||
ALLOW_SSH_ROOT_USER=without-password | ALLOW_SSH_ROOT_USER=without-password | ||
| − | + | ALLOW_SSH_PROT_V1=0 | |
| − | + | ENABLE_TESTS="all" | |
| − | + | DISABLE_TESTS="suspscan hidden_ports hidden_procs deleted_files packet_cap_apps" | |
| − | |||
| − | |||
| − | + | SCRIPTWHITELIST="/sbin/ifup /sbin/ifdown" | |
| − | + | SCRIPTWHITELIST="/usr/bin/groups" | |
| − | + | SCRIPTWHITELIST="/usr/bin/GET" | |
| − | + | SCRIPTWHITELIST="/usr/bin/ldd" | |
| − | SCRIPTWHITELIST=/ | + | SCRIPTWHITELIST="/usr/bin/whatis" |
| − | SCRIPTWHITELIST=/ | ||
| − | SCRIPTWHITELIST=/usr/bin/ | ||
| − | XINETD_ALLOWED_SVC=/etc/xinetd.d/proftpd | + | IMMUTABLE_SET=0 |
| − | UID0_ACCOUNTS="root-admin" | + | |
| − | + | ALLOWHIDDENDIR="/etc/.java" | |
| − | APP_WHITELIST="openssl | + | ALLOWHIDDENDIR="/dev/.udev /dev/.udevdb /dev/.udev.tdb" |
| − | + | ALLOWHIDDENDIR="/dev/.static" | |
| + | ALLOWHIDDENDIR="/dev/.initramfs" | ||
| + | ALLOWHIDDENDIR="/dev/.SRC-unix" | ||
| + | ALLOWHIDDENDIR="/dev/.mdadm" | ||
| + | ALLOWHIDDENFILE="/usr/share/man/man1/..1.gz" | ||
| + | ALLOWHIDDENFILE="/etc/.pwd.lock" | ||
| + | ALLOWHIDDENFILE="/etc/.passwd.pre-uid-fix" | ||
| + | ALLOWHIDDENFILE="/usr/bin/.fipscheck.hmac" | ||
| + | ALLOWHIDDENFILE="/usr/bin/.ssh.hmac" | ||
| + | ALLOWHIDDENFILE="/usr/sbin/.sshd.hmac" | ||
| + | |||
| + | PHALANX2_DIRTEST=0 | ||
| + | |||
| + | ALLOWDEVFILE="/dev/.udev/db/*" | ||
| + | ALLOWDEVFILE="/dev/.udev/uevent_seqnum" | ||
| + | |||
| + | '''XINETD_ALLOWED_SVC=/etc/xinetd.d/proftpd''' | ||
| + | '''UID0_ACCOUNTS="root-admin"''' | ||
| + | ALLOW_SYSLOG_REMOTE_LOGGING=0 | ||
| + | '''APP_WHITELIST="httpd openssl sshd"''' | ||
| + | |||
| + | SUSPSCAN_TEMP=/dev/shm | ||
| + | SUSPSCAN_MAXSIZE=10240000 | ||
| + | SUSPSCAN_THRESH=200 | ||
| + | USE_LOCKING=0 | ||
| + | LOCK_TIMEOUT=300 | ||
| + | SHOW_LOCK_MSGS=1 | ||
| + | INSTALLDIR=/usr | ||
| + | DBDIR=/var/lib/rkhunter/db | ||
| + | SCRIPTDIR=/usr/lib64/rkhunter/scripts | ||
| + | TMPDIR=/var/lib/rkhunter/tmp | ||
| + | USER_FILEPROP_FILES_DIRS=/etc/rkhunter/rkhunter.conf | ||
= Scripts d'automatisation = | = Scripts d'automatisation = | ||
Version actuelle datée du 8 août 2013 à 10:06
Procédure validée sur CentOS
Sommaire
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. Fichier standard pour une CentOS (uniquement les lignes décommentées) :
ROTATE_MIRRORS=1
UPDATE_MIRRORS=1
MIRRORS_MODE=0
MAIL-ON-WARNING=""
MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"
UPDATE_LANG=""
LOGFILE=/var/log/rkhunter.log
APPEND_LOG=0
COPY_LOG_ON_ERROR=0
COLOR_SET2=0
AUTO_X_DETECT=1
WHITELISTED_IS_WHITE=0
ALLOW_SSH_ROOT_USER=without-password
ALLOW_SSH_PROT_V1=0
ENABLE_TESTS="all"
DISABLE_TESTS="suspscan hidden_ports hidden_procs deleted_files packet_cap_apps"
SCRIPTWHITELIST="/sbin/ifup /sbin/ifdown"
SCRIPTWHITELIST="/usr/bin/groups"
SCRIPTWHITELIST="/usr/bin/GET"
SCRIPTWHITELIST="/usr/bin/ldd"
SCRIPTWHITELIST="/usr/bin/whatis"
IMMUTABLE_SET=0
ALLOWHIDDENDIR="/etc/.java"
ALLOWHIDDENDIR="/dev/.udev /dev/.udevdb /dev/.udev.tdb"
ALLOWHIDDENDIR="/dev/.static"
ALLOWHIDDENDIR="/dev/.initramfs"
ALLOWHIDDENDIR="/dev/.SRC-unix"
ALLOWHIDDENDIR="/dev/.mdadm"
ALLOWHIDDENFILE="/usr/share/man/man1/..1.gz"
ALLOWHIDDENFILE="/etc/.pwd.lock"
ALLOWHIDDENFILE="/etc/.passwd.pre-uid-fix"
ALLOWHIDDENFILE="/usr/bin/.fipscheck.hmac"
ALLOWHIDDENFILE="/usr/bin/.ssh.hmac"
ALLOWHIDDENFILE="/usr/sbin/.sshd.hmac"
PHALANX2_DIRTEST=0
ALLOWDEVFILE="/dev/.udev/db/*"
ALLOWDEVFILE="/dev/.udev/uevent_seqnum"
XINETD_ALLOWED_SVC=/etc/xinetd.d/proftpd
UID0_ACCOUNTS="root-admin"
ALLOW_SYSLOG_REMOTE_LOGGING=0
APP_WHITELIST="httpd openssl sshd"
SUSPSCAN_TEMP=/dev/shm
SUSPSCAN_MAXSIZE=10240000
SUSPSCAN_THRESH=200
USE_LOCKING=0
LOCK_TIMEOUT=300
SHOW_LOCK_MSGS=1
INSTALLDIR=/usr
DBDIR=/var/lib/rkhunter/db
SCRIPTDIR=/usr/lib64/rkhunter/scripts
TMPDIR=/var/lib/rkhunter/tmp
USER_FILEPROP_FILES_DIRS=/etc/rkhunter/rkhunter.conf
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.
- 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
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.
