Détection d'intrusion Linux avec AIDE et fail2ban
Détectez les compromissions tôt grâce au contrôle d'intégrité (AIDE), à la protection anti-bruteforce (fail2ban) et aux scanners de rootkits.
Une bonne prévention réduit votre surface d'attaque, mais ne l'annule jamais. Les identifiants fuitent, les logiciels ont des zero-days, et une seule erreur de configuration peut ouvrir une porte. La détection d'intrusion est la couche qui vous signale l'échec de la prévention, idéalement avant qu'un attaquant n'établisse une persistance. Cet article couvre trois outils complémentaires : AIDE pour le contrôle d'intégrité des fichiers, fail2ban pour la protection anti-bruteforce, et les scanners de rootkits pour repérer les compromissions connues.
Pourquoi la détection compte dans la défense en profondeur
Les efforts de durcissement comme des permissions de fichiers strictes et des règles de pare-feu serrées rendent une compromission plus difficile, mais un attaquant déterminé n'a besoin que d'une seule faille. La détection suppose que cette faille existe. Elle déplace la question de « peuvent-ils entrer ? » vers « le saurai-je quand ils entreront ? ». Plus vous détectez vite, plus le rayon d'impact est réduit. Associez la détection à une journalisation et un audit centralisés pour que les alertes atteignent un humain ou un SIEM plutôt que de mourir sur l'hôte compromis.
Contrôle d'intégrité des fichiers avec AIDE
AIDE (Advanced Intrusion Detection Environment) enregistre les empreintes cryptographiques et les métadonnées des fichiers critiques, puis compare le système en cours d'exécution à cette base de référence pour signaler toute altération.
sudo apt update
sudo apt install aide aide-common
# Construire la base de référence initiale
sudo aideinit
# Sur les systèmes non Debian :
# sudo aide --init
aideinit écrit une nouvelle base, généralement dans /var/lib/aide/aide.db.new. Activez-la en la mettant en place :
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Point crucial : un attaquant ayant les droits root peut réécrire cette base pour que les contrôles futurs réussissent toujours. Copiez la base de référence sur un support hors ligne ou en lecture seule et vérifiez contre cette copie :
# Copier sur un support en lecture seule / externe après chaque mise à jour légitime
sudo cp /var/lib/aide/aide.db /mnt/readonly/aide.db
Lancez les contrôles de façon planifiée. Un timer systemd ou une entrée cron automatise le tout :
# /etc/cron.daily/aide-check
sudo aide --check
Pour la lecture du rapport, AIDE liste les entrées ajoutées, supprimées et modifiées avec les attributs qui diffèrent (empreinte, taille, mtime, permissions). Après des changements légitimes comme une mise à jour de paquet, rafraîchissez la base pour que les rapports futurs restent pertinents :
sudo aide --update
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
Protection anti-bruteforce avec fail2ban
fail2ban analyse les journaux des services et bannit les adresses IP qui dépassent un seuil d'échecs, contrant les attaques par force brute sur SSH et d'autres services.
sudo apt install fail2ban
Ne modifiez jamais le jail.conf fourni ; créez /etc/fail2ban/jail.local :
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
[sshd]
enabled = true
maxretry échecs dans l'intervalle findtime déclenchent un bannissement d'une durée bantime. ignoreip met en liste blanche les réseaux de confiance pour ne jamais vous verrouiller dehors. Rechargez et inspectez :
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
Pour libérer une IP bannie par erreur :
sudo fail2ban-client set sshd unbanip 203.0.113.10
fail2ban complète votre pare-feu réseau et votre durcissement de l'accès et de l'authentification SSH ; il réagit à des comportements abusifs que les règles statiques ne peuvent anticiper.
Scanners de rootkits
Les scanners de rootkits recherchent les portes dérobées connues, les binaires altérés et les modules noyau suspects. Lancez rkhunter :
sudo apt install rkhunter
sudo rkhunter --update
sudo rkhunter --propupd # valider les propriétés actuelles comme références saines
sudo rkhunter --check
N'exécutez --propupd que sur un système que vous savez sain, sinon vous validez une compromission. chkrootkit fournit un second avis :
sudo apt install chkrootkit
sudo chkrootkit
Attendez-vous à des faux positifs avec les deux outils ; investiguez les avertissements en les confrontant à l'état des paquets et à l'activité d'administration récente avant de conclure à une compromission.
Intégration au système d'alerte
La détection n'est utile que si quelqu'un en lit la sortie. Transmettez les rapports AIDE, les actions de fail2ban et les résultats des scanners à auditd et à la journalisation centralisée afin que les alertes déclenchent des notifications par e-mail ou vers un SIEM. Un rapport d'intégrité quotidien que personne ne lit ne vaut pas mieux que pas de rapport du tout.
Vérifier votre configuration
# La base de référence AIDE existe et un contrôle s'exécute proprement
sudo aide --check && echo "AIDE OK"
# fail2ban est actif et la jail sshd est activée
sudo fail2ban-client status sshd
# Les scanners de rootkits sont installés
rkhunter --version && chkrootkit -V
Si AIDE ne signale que des changements attendus, que la jail sshd accumule des IP bannies et que vos scanners s'exécutent sans alertes inexpliquées, votre couche de détection fonctionne.