M81 : Détection d’intrusion
Travaux pratiques : IPS Fail2ban
Fail2ban
est un IDS hôte (HIDS) qui va lire les journaux de l’hôte
(sonde), pour y détecter des accès refusés répétés (analyse) et
bloquer le cas échéant les acteurs de la menace (action). Ce blocage
prévenant de nouvelles tentatives, on parle d’IPS.
Il sera installé sur la VM CentOS. Pour le déclencher sans vous
autobannir, tentez l’intrusion depuis une autre VM ou depuis localhost
(dans ce cas modifier la directive ignoreself
).
- Si nécessaire, installer les sources de paquetages EPEL (Extra
Packages for Enterprise Linux) :
sudo yum install epel-release
- Installer
fail2ban
en prenant soin d’examiner le nom des paquetages installés pour dépendance. - Lister le contenu du répertoire de configuration de Fail2ban. Expliquer la fonction de chacun des éléments (fichiers et dossiers).
- En partant de la section
[sshd]
dans le fichierjail.conf
, en utilisantgrep
de manière récursive dans le dossier, identifier le journal utilisé par l’IPS pour identifier les tentatives d’intrusion. - Activer le contrôle du processus sshd. Quelle directive avez-vous modifié/ajouté ?
- Configurer ce contrôle conformément à la modification du port d’écoute du service (22 -> 1337). Quelle directive avez-vous modifié/ajouté ?
- Positionner la durée de banissement à une heure. Quelle directive avez-vous modifié ? Quelle valeur avez-vous choisi ?
- Démarrer et activer le service afin qu’il soit démarré si le système redémarre. Quelle commande avez-vous utilisé ?
- Afficher en temps réel les modifications apportées (
tail -f
) aux fichiers/var/log/secure/
et/var/log/fail2ban.log
. - Déclencher la protection de l’IPS en échouant plusieurs fois à vous connecter au service SSH (mauvais nom d’utilisateur, mauvaise clé, mauvais mot de passe, …)
- Vérifier les règles
nft
. Que constatez-vous ? Justifiez. - Explorer les fonctionnalités de la commande
fail2ban-client
. Comment afficher l’état de l’IPS ? Quel est le résultat de cette commande ? - Ajouter l’adresse IP à la liste blanche. Quelle directive avez-vous modifié/ajouté ?
- Jouer avec les paramètres
findtime
etmaxretry
. Comment sont liés ces paramètres ? - Identifier la regex utilisée par
fail2ban
pour identifier les tentatives d’intrusion sur SSH (examiner les lignes de logs apparues à la question 9) . - Si le serveur SSH est configuré pour n’autoriser que les
connexions par clés, une tentative de connexion avec une clé
erronée sera du type :
Connection closed by authenticating user olm 194.199.112.169 port 43032 [preauth]
. Compléter lesregex
utilisées parfail2ban
pour détecter les tentatives d’intrusion sur SSH pour prendre en compte ce cas.