Préambule :
Cet article n’a pas vocation à être exhaustif ou « parfait ». Il s’agit simplement d’un aide mémoire que je partage ici afin de permettre à d’autre personnes rencontrant les mêmes problématiques que moi de les résoudre plus vite que je ne l’ai fait la première fois.
Toutes les contributions sont les bienvenues pour le faire évoluer. Les commentaires sont fait pour ça 😉
Présentation :
Fail2ban est un logiciel libre Linux permettant d’analyser les logs d’un serveur, et de déclencher des actions si ceux-ci révèlent des comportements suspects. Ses mécanismes de détections sont basées sur les expressions régulières, personnalisables comme nous le verrons, ce qui en fait un outil particulièrement puissant. Les actions à mener en cas de détection d’un comportement suspect peuvent aller de l’envoi d’un simple mail d’alerte à la mise en place d’un système de règles du firewall (Iptables dans l’exemple ci-dessous).
Très modulaire, Fail2Ban se base sur un système de prisons (jails). Une prison est un service auquel on applique des règles (filtres), et dans laquelle des adresses IP ne respectant pas ces règles vont être mises. On applique alors à cette prison une action pour contrer les IPs concernées, comme une interdiction de communiquer avec le serveur.
Installation de Fail2ban :
Si vous n’êtes pas root, n’oubliez pas de faire précéder cette commande de sudo 😉
Configuration minimale de Fail2ban :
Le fichier nous intéressant se trouve (sur une Debian) dans /etc/fail2ban/jail.conf . Ouvrez-le avec votre éditeur de texte favori :
Pour activer une prison (jail), il suffit de passer à true le paramètre enabled de la prison correspondante.
Par exemple, pour activer la prison SSH (et empêcher les tentative incessantes de script kiddies de hacker votre serveur, ce qui pollue quand même pas mal les logs) :
Comme vous le voyez, rien de plus simple.
Pour un serveur web, apache est généralement pas mal attaqué. Activer également les jails apache, apache-multiport et apache-noscript a donné d’excellent résultats chez moi, faisant économiser sensiblement les ressources serveur.
En début de fichier, la section [DEFAULT] peut aussi vous intéresser.
Pour recevoir des mails vous avertissant des IP ayant été bannies, mettez à jour le paramètre destemail (avec votre adresse mail évidemment). Modifier également le paramètre action :
Ces paramètres sont ceux par défaut, et peuvent bien sûr être redéfinis différemment dans chaque jail.
Il ne vous reste plus qu’à relancer Fail2ban :
Si vous avez activé l’envoi de mail, ceux-ci ne devraient pas tarder à arriver. Sinon, vous pouvez visualiser les règles mises à jour d’Iptables avec la commande suivante :
Créer votre propre règle pour stopper les attaques sur le fichier xmlrpc.php de WordPress :
Tout d’abord, nous devons créer le filtre qui sera appliqué à notre prison. Appelons-le apache-xmlrpc.conf, par exemple (le nom du fichier servira de définition au paramètre filter de notre jail), et plaçons le avec les autres filtres dans /etc/fail2ban/filter.d/.
Voici à quoi doit ressembler votre fichier :
La regex est minimale, adaptez-la à vos besoins si nécessaire. dans celle-ci, ^<HOST> correspond à l’adresse IP que vous trouvez normalement au début de chaque ligne d’un fichier de log.
Puis, ré-éditons le fichier etc/fail2ban/jail.conf pour rajouter la jail correspondant à ce nouveau filtre :
Pensez à bien adapter le paramètre logpath à votre configuration !
Puis, relancez Fail2ban afin qu’il prenne en compte votre nouvelle règle.