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''': | + | = 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 | + | == rkhunter.sh == |
| − | #!/bin/ | + | 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" | + | case $0 in |
| − | + | *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 | |
| − | + | ;; | |
| − | + | *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 "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 | ) | /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 | esac | ||
NE PAS OUBLIER | NE PAS OUBLIER | ||
| − | chmod 700 rkhunter | + | chmod 700 rkhunter.sh |
et | et | ||
| − | ln -s /<REPERTOIRE DU SCRIPT>/rkhunter | + | 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 : | 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/ | + | 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). | 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
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 :
# 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.
- 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.
