Installer Fail2ban dans le but de sécuriser son serveur

Posséder son propre serveur présente de nombreux avantages mais implique également de grandes responsabilités ainsi que des contrôles réguliers. Si vous ne voulez pas qu’un tiers accède à votre serveur sans votre autorisation, il vous faut alors prêter une attention particulière à sa sécurité. Les cybercriminels ont maintes raisons d’attaquer un serveur et chaque attaque réussie présente généralement un gros risque pour un administrateur.

Qu’est-ce que Fail2ban ?

Fail2ban, le logiciel libre de sécurité développé en langage Python (littéralement « un échec de tentative entraîne une interdiction » ) est un module de serveur Web que l’on peut utiliser sur les systèmes Linux et POSIX accompagnés soit de pare-feu soit de filtres de paquets. Fail2ban communique dans les fichiers de logs les adresses IP potentiellement suspectes : par exemple, au cas où ces adresses essayent à plusieurs reprises de s’identifier sur un compte email avec de mauvais identifiants. Un certain nombre de tentatives échouées entraîne ensuite automatiquement le blocage de l’adresse IP pendant une période préalablement programmée. Par ailleurs, l’administrateur a la possibilité de configurer Fail2ban de sorte que chaque adresse IP suspecte lui soit communiquée par email.

Par défaut, un Fail2ban contient toute une gamme de filtres tels que pour Apache, Postfix ou Courier Mail Server qui peuvent être reconnues grâce à une séquence particulière de caractères dans les fichiers de logs. Les filtres peuvent enclencher des actions : il s’agit de commandes paramétrées pour une période définie. La combinaison d’un filtre et d’une action, par exemple le blocage d’une adresse IP grâce à Fail2ban, est nommée prison (jail). Il est possible de programmer ces prisons avec Fail2ban via n’importe quel logiciel pouvant créer des fichiers de logs. Etant donné que Fail2ban est un framework open source bénéficiant de la licence GPL2 (Licence publique générale), il peut être utilisé et étendu gratuitement.

Fail2ban : installation et configuration

Avant d’installer et de configurer Fail2ban, il est important de s’assurer que vous disposiez d’au moins la version 2.4 2.4 de Python sur votre système d’exploitation. Nous vous recommandons les pare-feu suivants comme outils de configuration : iptables, Shorewall et TCP Wrappers. Vous trouverez ici des indications sur la configuration ainsi que sur l’utilisation de Fail2ban sur Debian et Ubuntu : 

  1. Commencez par l’installation de Fail2ban en saisissant la commande suivante :

    sudo apt-get install fail2ban

  2. Après avoir fini l’installation, vous trouverez le framework dans le répertoire /etc/fail2ban. Il est conseillé de copier par précaution le fichier de configuration jail.conf localement en tant que jail.local afin de protéger les réglages face aux mises à jour. Voici les deux saisies de commandes nécessaires :

    cd /etc/fail2ban</pre><pre>
    sudo cp jail.conf jail.local

  3. Démarrez Fail2ban avec la commande suivante :

    sudo service fail2ban start

  4. Dans le fichier de configuration, vous pouvez activer et désactiver les règles déjà formulées ainsi qu’adapter vos paramètres. Par ailleurs, il est possible d’ajouter des prisons personnalisées. Voici comment configurer les paramètres de ces prisons :

    Enabled : active (true) ou désactive (false) la règle
    Filter : nom du filtre provenant du fichier /etc/fail2ban/filter.d
    Port : donnée du port (ex : SSH, HTTP, HTTPS)
    Logpath : chemin d’accès vers le fichier de logs qui doit être trié
    Maxretry : nombre maximal de tentatives échouées
    Findtime : période en secondes pendant laquelle les IPs suspicieuses sont recherchées
    Bantime : période en secondes pendant laquelle une IP est bloquée

  5. Si vous avez procédé à des changements dans les paramètres, chargez Fail2ban à nouveau :

    sudo service fail2ban reload

  6. Les résultats de son évaluation enregistrent Fail2ban dans un fichier log séparé que vous pouvez charger de la façon suivante :

    tail -100f /var/log/fail2ban.log

  7. Afin de fermer le framework de sécurité, procédez à la saisie suivante :

    sudo service fail2ban stop

Efficace aussi contre les bots et les scripts

Il est possible de configurer Fail2ban partout où les fichiers de logs sont triés par des filtres, ce qui entraîne une pléthore de possibilités d’utilisation pour ce framework de sécurité. Pour illustrer notre propos, nous pouvons citer le plugin de WordPress Antispam Bee, qui permet d’identifier des commentaires spams dans les blogs de la plateforme. Vous pouvez cocher la case « marquer comme spam et ne pas supprimer » afin d’accompagner les publications des spammeurs du code d’erreur 403. Les adresses IP, les messages ainsi que les séquences d’erreurs apparaissent par la suite dans le fichier de logs de WordPress (access.log). Grâce à une prison (Jail) qui scanne une saisie du log dans le code d’erreur, vous avez la possibilité d’intercepter des spams sur le serveur.

En revanche, Fail2ban ne protège pas seulement WordPress des spams mais aussi des authentifications non autorisées. Par extension, le statut 403 peut être donné en réponse à plusieurs tentatives échouées d’authentification. Cela décourage directement les bots et les scripts afin qu’ils arrêtent tout de suite leurs activités. Par ailleurs, l’extension permet également, grâce à des règles programmées de Fail2ban, de choisir la technique de blocage.

Fail2ban : un framework de sécurité

En s’opposant aux bots, scripts et autres attaques de hackers, Fail2ban met à la disposition de l’administrateur du serveur une protection flexible et efficace. Ce framework permet non seulement de vérifier les fichiers de logs ainsi que les modèles suspicieux mais bloque aussi les adresses IP correspondantes de manières provisoire ou permanente. Le paramétrage de Fail2ban revient à l’utilisateur qui pourra ainsi décider des services à vérifier. Il lui appartient aussi de bloquer ou de débloquer une adresse IP de son choix.

S’il est bien configuré, Fail2ban constitue un complément important pour la sécurité d’un serveur. Cependant, il ne remplacera jamais à lui seul les mesures de protection traditionnelles telles que les logiciels antivirus, les structures de sauvegarde bien programmée ou les codages et les sécurisations de mots de passe. Ces outils se complètent et ne sont efficaces contre des attaques importantes et fréquentes que s’ils sont mis ensembles.