RKHunter installation : Différence entre versions
De wikiGite
(30 révisions intermédiaires par 2 utilisateurs non affichées) | |||
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) | ||
− | => install à partir des sources sur Debian | + | => install à partir des sources sur Debian |
Vérifier la dernière version à l'adresse http://sourceforge.net/project/showfiles.php?group_id=155034 | 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. | + | wget http://downloads.sourceforge.net/rkhunter/rkhunter-1.3.6.tar.gz |
− | |||
− | |||
− | tar -xvzf rkhunter- | + | tar -xvzf rkhunter-*.tar.gz |
− | cd rkhunter- | + | cd rkhunter-* |
mkdir -p /opt/rkhunter | mkdir -p /opt/rkhunter | ||
./installer.sh --layout custom /opt/rkhunter --install | ./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. | '''NOTE''' : Pour une MISE A JOUR, appliquer la même procédure, l'installateur détecte l'ancienne install. | ||
− | |||
− | |||
Editer /etc/profile, ajouter /opt/rkhunter/bin dans le PATH root (id 0)<br> | Editer /etc/profile, ajouter /opt/rkhunter/bin dans le PATH root (id 0)<br> | ||
Ligne 24 : | Ligne 19 : | ||
Reconnecter root (ou "su -" pour les tests). | Reconnecter root (ou "su -" pour les tests). | ||
+ | # END ARCHIVE --> | ||
+ | = 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 | # Defaults for rkhunter cron jobs | ||
# sourced by /etc/cron.*/rkhunter | # sourced by /etc/cron.*/rkhunter | ||
Ligne 32 : | Ligne 98 : | ||
# | # | ||
# Set this to the email address where reports and run output should be sent | # Set this to the email address where reports and run output should be sent | ||
− | REPORT_EMAIL=" | + | 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=" | + | 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=" | + | 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=" | + | 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 | |
− | #!/bin/ | + | CONFDIR=/etc/rkhunter |
− | + | RKHUNTER="/usr/bin/rkhunter --configfile $CONFDIR/rkhunter.conf" | |
− | + | ||
− | |||
− | |||
# source our config | # source our config | ||
− | . | + | . $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 | ||
+ | $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 | ) | /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 "Subject: [rkhunter] Weekly database update" | ||
echo "" | echo "" | ||
− | $RKHUNTER --versioncheck | + | $RKHUNTER --nocolors --versioncheck 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 | + | 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 : | Pour initialiser la base, lancer une première fois : | ||
+ | su - | ||
rkhunter --propupd | rkhunter --propupd | ||
+ | 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). | ||
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 162 : | Ligne 211 : | ||
"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 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.