Mis à jour le 25/06/2014
  • 1 heure
  • Facile
Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

Introduction du cours

Si comme moi vous êtes un peu (beaucoup) paranoïaque sur les bords et que la simple idée qu'une personne extérieure accède ou mette le souk sur votre serveur vous est insupportable, ce cours est fait pour vous !

En effet si votre machine contient toutes vos données ou vos sites web par exemple, une personne malveillante qui réussit à rentrer dessus peut vite provoquer un désastre, surtout si bêtement vous n'avez pas pris la peine d'effectuer des sauvegardes.

Et même sans accéder directement à la machine, on peut vite vous pourrir la vie si vous ne protégez pas votre machine.

Il convient par conséquent de s'assurer que n'importe qui ne fasse pas n'importe quoi chez vous :) .

Qu'est-ce que Fail2ban et à quoi ça sert ?

Bonne question ! Fail2ban est un service qui s'installe sur un serveur linux et qui permet de contrôler les tentatives de connexion de divers services sous linux (ssh, apache, mail etc).
Ainsi on peut limiter le nombre de tentatives consécutives d'une même personne et la bloquer pour un temps plus ou moins long.

Ce service est surtout destiné à limiter les effets des robots qui tentent de se connecter sur votre machine en testant des milliers voir des millions de combinaisons de mot de passe (le brute force) ou qui tente de flooder (surcharger) votre machine.

Alors on attaque ? :pirate:

ETAPE N°1 - Installation de Fail2ban

Je pars du principe que vous êtes connecté en tant que root sur votre machine, sinon il faudra rajouter sudo à toutes les commandes que je vais donner.

Lançons l'installation : 

aptitude install fail2ban

Laissez l'installation de dérouler.

Commençons par créer une copie du fichier de configuration en local. Cela a pour but de pouvoir personnaliser plus facilement la configuration de fail2ban sans toucher au coeur du service :

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

ETAPE N°2 - Configurer Fail2ban

Rentrons maintenant dans le vif du sujet. Ici je vais vous montrer comment surveiller les erreurs pour SSH et Apache, mais sachez que Fail2ban est très complet et permet de surveiller énormément de services du système. 
D'ailleurs ce n'est pas compliqué, la configuration de l'ensemble des services se fait de la même manière alors si vous avez compris à la fin du tutoriel pour ces deux-là, vous y arriverez pour tout le reste !

Allons voir maintenant à quoi ressemble notre fichier de configuration.

Le début du fichier n'est pas très intéressant mais il y a quand même un paramètre de configuration important :

ignoreip = 127.0.0.1/8
bantime = 600
maxretry = 3

Certes mais encore ?

Eh bien à moins que vous soyez aussi parfait que moi (:D), vous pourriez bien un jour vous tromper en tapant votre mot de passe lorsque vous vous connectez en SSH par exemple.

Le paramètre ignoreip permet donc d'ajouter une voir plusieurs IP à la liste blanche de Fail2ban et ainsi d'éviter aux plus étourdis de se bannir soi-même.

Maintenant que c'est fait, descendez jusqu'à la partie concernant les jails (prisons). Comme vous pouvez le constater, une prison est un bloc de 5 lignes concernant un service en particulier.

[ssh]

enabled  = false
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Ici donc nous allons gérer la prison SSH, c'est à dire l'authentification à votre serveur. Pour activer celle-ci, il suffit de passer le paramètre enabled à true. Vous pouvez aussi réduire le nombre de tentatives avant le blocage de l'IP de l'intrus avec le paramètre maxretry.

Ce qui nous donne une fois terminé notre configuration :

[ssh]

enabled  = true
port     = 4526
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 3

J'ai mis 4526 comme j'aurais pu mettre n'importe quel nombre, cela dépend du port que vous aurez défini.

Passons maintenant à Apache, il sufit de descendre un peu.

[apache]

enabled  = false
port     = http,https
filter   = apache-auth
logpath  = /var/log/apache*/*error.log
maxretry = 6

Là aussi il suffit de changer le paramètre enabled à true pour activer la prison. Pour le port, sauf si vous avez effectué une configuration particulière d'Apache, vous pouvez laisser tel quel.

M'sieur M'sieur j'ai une question, j'ai regardé un peu plus bas et je vois d'autre prison pour Apache, c'est quoiiiiii ?

Bonne question ! Fail2ban étant un service très bien conçu, il possède plusieurs prisons pour Apache comme apache-noscript et apache-overflows .

Elles permettent respectivement de se prémunir contre les scans d'url à la recherche de faille de sécurité et contre les attaques de type DDOS sur le service Apache.

Vous pouvez les activer et je vous conseille même de mettre maxretry = 1 pour apache-noscript, histoire de bétonner la chose.

Voilà, notre configuration est terminée !

Comme je l'ai expliqué plus haut, Fail2ban peut protéger d'autres services, comme un serveur mail ou FTP, n'hésitez pas à activer ces prisons si vous en avez besoin.

ETAPE N°3 - Tester la configuration

Commençons par redémarrer le service pour que notre configuration soit prise en compte :

fail2ban-client reload

Maintenant nous allons consulter le fichier log de fail2ban pour vérifier que tout est OK :

tail -n 300 /var/log/fail2ban.log

Vous devriez avoir quelque chose comme ça. Si vous n'avez les mêmes informations, vous avez sûrement raté quelque chose. Je vous invite alors à relire le tutoriel du début.

fail2ban.filter : INFO   Set maxRetry = 3
fail2ban.filter : INFO   Set findtime = 600
fail2ban.actions: INFO   Set banTime = 600
fail2ban.jail   : INFO   Jail 'ssh' started
fail2ban.jail   : INFO   Jail 'apache' started
fail2ban.actions: WARNING [ssh] Ban XXX.136.60.164
fail2ban.actions: WARNING [ssh] Unban XXX.136.60.164

Vous voilà protégé (en partie) contre les vilains méchants ! :zorro:

Je n'ai ici montré que la configuration de base de Fail2ban, par exemple vous pouvez modifier le chemin et le loglevel (le niveau d'erreur que le service enregistre) du fichier log dans le fichier /etc/fail2ban/fail2ban.conf

Voilà, j'espère que ce cours vous a plu et s'il manquait quelque chose ou si vous avez des questions, n'hésitez pas !

Exemple de certificat de réussite
Exemple de certificat de réussite