Debian11, Serveur, RKHunter pour tracker les malwares et corruptions
Installation et configuration de RKHunter pour chercher les modifications des fichiers critiques grâce à des empreintes prises régulièrement et chercher la présence de rootkits/malwares connus. Il vérifie aussi les processus ayant des fichiers supprimés ouverts, les binaires qui sont des scripts, … Cet outil aide à détecter la compromission d’un système.
- Présentation de RKHunter
- Pré-requis
- Installation de RKHunter
- Configuration
- Tests
- Supports et liens
- Notes de bas de page
Présentation de RKHunter
rkhunter
signifie Root Kit Hunter. Un Rootkit est un ensemble de programmes
installés par des pirates lorsqu’ils parviennent à pénétrer un système. Il peut aussi être
installé par des virus. Ces programmes ont pour but d’envoyer des informations depuis le
système infecté vers les machines du pirate ou d’exécuter des commandes arbitraires au nom
du propriétaire. RKHunter dispose d’une base de données des malwares connus et recherche
leurs traces dans le système. Il prend aussi une empreinte des fichiers systèmes critiques
pour détecter d’éventuelles modifications. La prise d’empreinte est automatisée avec apt
lors de l’installation, la mise à jour ou la suppression de paquetages. Il envoie des
notifications aux administrateurs par courriel lorsque quelquechose a été détecté.
J’utilise RKHunter principalement pour la base de rootkits, j’installerai dans le prochain
article un autre outil, tripwire
pour la détection des modifications de fichier.
Pré-requis
Cet article ne dépend que de la série d’articles que la préparation générique d’une machine.
Installation de RKHunter
Je commence par donner à debconf
les réponses aux questions qui seront posées par le
paquetage lors de son installation. Je souhaite que rkhunter
soit exécuté tous les jours
pour vérifier mon système, je souhaite aussi qu’il mette à jour sa base de vulnérabilités
automatiquement. Enfin, je veux qu’il soit exécuté automatiquement lors de l’installation, la
suppression ou la mise à jour de paquetages afin de prendre une empreinte des fichiers
supposés propres. Cette dernière étape est potentiellement dangereuse si vous utilisez
apt
, il déclenchera automatiquement une nouvelle photo des fichiers et légitimera les
fichiers présents sur le disque. C’est mon choix, pour mon architecture, et je sais ce que
je fais sur mes serveur en connaissance des risques. Assurez-vous de bien comprendre les
conséquences avant de le faire vous-même.
echo 'rkhunter rkhunter/cron_daily_run boolean true' | debconf-set-selections
echo 'rkhunter rkhunter/cron_db_update boolean true' | debconf-set-selections
echo 'rkhunter rkhunter/apt_autogen boolean true' | debconf-set-selections
apt-get install -y rkhunter
Configuration
Notifications par courriel
RKHunter va envoyer une notification par courriel lorsque quelquechose se passe mal durant la vérification du système ou la mise à jour de la base de vulnérabilités. Ainsi, il faut configurer l’adresse électronique et la commande à utiliser pour envoyer ces messages. Dans tous les cas, il envoie aussi le détail par courriel dans un autre message.
sed -i 's/#\?MAIL-ON-WARNING=.*/#MAIL-ON-WARNING=root@localhost/' /etc/rkhunter.conf
sed -i 's/#\?MAIL_CMD=.*"/MAIL_CMD=mail -s "[rkhunter] Warnings found for \${HOST_NAME}"/' /etc/rkhunter.conf
Mise à jour de la base
RKHunter a besoin de maintenir sa base de connaissances à jour de temps en temps. J’ai configuré l’outil de téléchargement à utiliser, l’activation des notifications et j’ai activé la recherche de mises à jour.
sed -i 's/#\?WEB_CMD=.*/WEB_CMD=wget/' /etc/rkhunter.conf
sed -i 's/DB_UPDATE_EMAIL=".*"/DB_UPDATE_EMAIL="true"/' /etc/default/rkhunter
sed -i 's/#\?UPDATE_MIRRORS=.*/UPDATE_MIRRORS=1/' /etc/rkhunter.conf
sed -i 's/#\?MIRRORS_MODE=.*/MIRRORS_MODE=0/' /etc/rkhunter.conf
Filtrage des faux positifs
Après quelques temps de test en environnement sécurisé, j’ai pu lister les alertes
relative à une activité normale. J’ajuste la configuration pour indiquer à rkhunter
que ces alertes sont normales et ne doivent pas déclencher d’avertissements.
La dernière ligne s’explique car j’accepte les connexions directe au compte root, ce que
vous ne faites peut-être pas.
echo 'ALLOWPROCDELFILE=/usr/sbin/cron' >> /etc/rkhunter.conf
echo 'ALLOWPROCDELFILE=/usr/bin/dash' >> /etc/rkhunter.conf
echo 'ALLOWPROCDELFILE=/usr/bin/run-parts' >> /etc/rkhunter.conf
echo 'SCRIPTWHITELIST=/usr/bin/egrep' >> /etc/rkhunter.conf
echo 'SCRIPTWHITELIST=/usr/bin/fgrep' >> /etc/rkhunter.conf
echo 'SCRIPTWHITELIST=/usr/bin/which' >> /etc/rkhunter.conf
echo 'PORT_PATH_WHITELIST=/usr/sbin/portsentry' >> /etc/rkhunter.conf
echo 'ALLOW_SSH_ROOT_USER=prohibit-password' >> /etc/rkhunter.conf
Divers
J’ai aussi décommenté la ligne concernant dhclient
car j’utilise cet outil dans certains
cas, mais cela dépend de votre configuration, gardez-la commentée si vous n’utilisez pas
dhclient
. J’active la suite de tests complète et la vérification de la version du
protocole SSH : la v1 doit être désactivée et le rester.
sed -i 's~#\?ALLOWPROCLISTEN=/sbin/dhclient~ALLOWPROCLISTEN=/sbin/dhclient~' /etc/rkhunter.conf
sed -i 's/^DISABLE_TESTS/#&/' /etc/rkhunter.conf
sed -i 's/^#\?PKGMGR=.*/PKGMGR=DPKG/' /etc/rkhunter.conf
sed -i 's/^#\?\(ALLOW_SSH_PROT_V1\)=.*/\1=0/' /etc/rkhunter.conf
Flux IPTables pour les mises à jour
RKHunter a besoin de mettre sa base de connaissances à jour. Nous avons configuré une vérification et il a besoin de pouvoir télécharger des fichiers depuis Internet. IPTables bloque tout le traffic sortant par défaut, s’il n’est pas explicitement autorisé. Il faut donc créer une nouvelle chaine pour lister les adresses IP des dépôts de RKHunter et l’inclure dans la chaine de validation du traffic sortant WAN_output.
sed -i 's/^-N WAN_input$/-N RKHunterRepositories\n-A RKHunterRepositories -d 216.105.38.10 -j ACCEPT\n\n&/' /etc/iptables/rules.v4
sed -i 's/^-N WAN_output$/&\n-A WAN_output -p tcp --dport 80 --tcp-flags FIN,SYN,RST,ACK SYN -j RKHunterRepositories/' /etc/iptables/rules.v4
systemctl restart netfilter-persistent
Mise à jour de la base
Il est maintenant temps d’initier la première mise à jour de la base manuellement pour tester la configuration des règles du pare-feu et s’assurer que les recherches de mise à jour fonctionneront.
rkhunter --update
Prise d’empreinte du système
Il faut aussi prendre un instantané des fichiers critiques du système. RKHunter va
calculer des empreintes (hash) pour chacun de ces fichiers et les enregistrer. Il
est configuré pour exécuter cette prise d’empreinte après chaque installation, mise à jour
ou suppression de paquetage demandée à apt
. Il maintient sa base d’empreinte à jour. La
recherche de modification des fichiers est exécutée tous les jours. Quoiqu’il en soit,
j’installerai aussi tripwire
pour cette tâche spécifique, dans le prochain article.
rkhunter --propupd
Tests
Vérification complète
Exécutons un test complet du système, avec une sortie colorée en temps réel !
rkhunter -c --enable all --disable none --skip-keypress
Notifications par courriel
Exécuton un test plus rapide, avec une notification par courriel, pour vérifier que les notifications fonctionnent bien.
/etc/cron.daily/rkhunter