Comment utiliser Fail2ban pour sécuriser votre serveur Linux
L’amélioration de la sécurité de votre serveur devrait être l’une de vos principales priorités lorsqu’il s’agit de gérer un serveur linux. En examinant les journaux de votre serveur, vous pouvez souvent trouver différentes tentatives de connexion par force brute, d’inondations Web, de recherche d’exploits et bien d’autres.
Avec un logiciel de prévention des intrusions tel que fail2ban, vous pouvez examiner les journaux de votre serveur et ajouter des règles iptables supplémentaires pour bloquer les adresses IP problématiques.
Lire aussi : Comment installer Fail2Ban pour protéger SSH sur CentOS/RHEL 8
Ce tutoriel vous montrera comment installer fail2ban et configurer la configuration de base pour protéger votre système Linux contre les attaques par force brute.
Exigences
Fail2ban est écrit en python et la seule condition est d’avoir python installé :
- La branche 0.9.x de Fail2ban nécessite Python >=2.6 ou Python >=3.2
- La branche 0.8.x de Fail2ban nécessite Python >=2.4
- Accès root à votre système
- En option, iptables ou showewall et sendmail
Comment installer Fail2Ban dans les systèmes Linux
L’installation de fail2ban est relativement simple :
Installer Fail2Ban sur CentOS/RHEL
Tout d’abord, mettez à jour vos paquets, activez le dépôt Epel et installez fail2ban comme indiqué.
# yum update
yum install epel-release
yum install fail2ban
Installer Fail2Ban sur Debian/Ubuntu
Tout d’abord, mettez à jour vos packages et installez fail2ban comme indiqué.
# apt-get update && apt-get upgrade -y
apt-get install fail2ban
Si vous souhaitez activer la prise en charge de la messagerie (pour les notifications par e-mail), vous pouvez installer sendmail.
# yum install sendmail [On CentOS/RHEL]
apt-get install sendmail-bin sendmail [On Debian/Ubuntu]
Pour activer fail2ban et sendmail, utilisez les commandes suivantes :
# systemctl start fail2ban
systemctl enable fail2ban
systemctl start sendmail
systemctl enable sendmail
Comment configurer Fail2ban dans les systèmes Linux
Par défaut, fail2ban utilise les fichiers .conf situés dans /etc/fail2ban/ qui sont lus en premier. Toutefois, ceux-ci peuvent être remplacés par des fichiers .local situés dans le même répertoire.
Ainsi, le fichier .local n’a pas besoin d’inclure tous les paramètres du fichier .conf, mais seulement ceux que vous souhaitez remplacer. Les modifications doivent être faites dans les fichiers .local, pas dans le .conf. Cela évitera d’écraser les modifications lors de la mise à niveau du paquet fail2ban.
Pour les besoins de ce tutoriel, nous allons copier le fichier fail2ban.conf existant dans fail2ban.local.
# cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
Vous pouvez maintenant apporter les modifications dans le fichier .local à l’aide de votre éditeur de texte préféré. Les valeurs que vous pouvez modifier sont les suivantes :
loglevel – Il s’agit du niveau de détail à consigner. Les options possibles sont les suivantes :
- CRITIQUE
- ERREUR
- AVERTISSEMENT
- REMARQUER
- INFO
- DÉBOGUER
LogTarget – Consigne les actions dans un fichier spécifique. La valeur par défaut est /var/log/fail2ban.log. Vous pouvez toutefois modifier cela comme suit :
- STDOUT – sortie de n’importe quelle donnée
Configurer Fail2ban jail.local
L’un des fichiers les plus importants de fail2ban est jail.conf qui définit vos prisons. C’est ici que vous définissez les services pour lesquels fail2ban doit être activé.
Comme nous l’avons mentionné précédemment, les fichiers .conf peuvent être modifiés lors des mises à niveau, vous devez donc créer un fichier jail.local où vous pouvez appliquer vos modifications.
Une autre façon de le faire est de simplement copier le fichier .conf avec :
# cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Si vous utilisez CentOS ou Fedora, vous devrez changer le backend dans jail.local de « auto » à « systemd ».
Si vous utilisez Ubuntu/Debian, il n’est pas nécessaire de faire cette modification, même s’ils utilisent aussi systemd.
Le fichier jail activera SSH par défaut pour Debian et Ubuntu, mais pas sur CentOS. Si vous souhaitez l’activer, il vous suffit de modifier la ligne suivante dans /etc/fail2ban/jail.local :
[sshd]
enabled = true
Périodes de bannissement et de réessai
Vous pouvez configurer la circonstance après laquelle une adresse IP est bloquée. Pour ce faire, fail2ban utilise bantime, findtime et maxretry.
- bantime – il s’agit du nombre de secondes pendant lesquelles une adresse IP restera bannie (par défaut 10 min).
- findtime – le temps écoulé entre les tentatives de connexion, avant que l’hôte ne soit banni. (par défaut 10 min). En d’autres termes, si fail2ban est configuré pour bloquer une adresse IP après 3 tentatives de connexion infructueuses, ces 3 tentatives doivent être effectuées dans la période de temps de recherche (10 minutes).
- maxretry – nombre de tentatives à effectuer avant qu’un bannissement ne soit appliqué. (3 par défaut).
Adresse IP de la liste blanche
Bien sûr, vous voudrez mettre certaines adresses IP sur liste blanche. Pour configurer de telles adresses IP, ouvrez /etc/fail2ban/jail.local avec votre éditeur de texte préféré et décommentez la ligne suivante :
ignoreip = 127.0.0.1/8 ::1
Ensuite, vous pouvez mettre les adresses IP que vous souhaitez ignorer. Les adresses IP doivent être séparées de l’espace ou de la virgule.
Alertes par e-mail
Si vous souhaitez recevoir des alertes par e-mail lors de l’événement, vous devrez configurer les paramètres suivants dans /etc/fail2ban/jail.local :
- destemail – adresse e-mail, où vous recevrez la notification.
- Nom de l’expéditeur – l’expéditeur que vous verrez lors de la réception du message.
- Expéditeur – Adresse e-mail à partir de laquelle Fail2ban enverra les e-mails.
Le mta (mail transfer agent) par défaut est défini sur sendmail.
Afin de recevoir des notifications par e-mail, vous devrez également modifier le paramètre « action » de :
Action = %(action_)s
À l’un d’entre eux :
action = %(action_mw)s
action = %(action_mwl)s
- %(action_mw)s – bannira l’hôte et enverra un e-mail avec un rapport whois.
- %(action_mwl)s – bannira l’hôte, fournira les informations whois et toutes les informations pertinentes du fichier journal.
Configuration supplémentaire de la prison Fail2ban
Jusqu’à présent, nous avons examiné les options de configuration de base. Si vous souhaitez configurer une prison, vous devrez l’activer dans le fichier jail.local. La syntaxe est assez simple :
[jail_to_enable]
. . .
enabled = true
Où vous devez remplacer jail_to_enable par la prison réelle, par exemple, « sshd ». Dans le fichier jail.local, les valeurs suivantes seront prédéfinies pour le service ssh :
[sshd]
port = ssh
logpath = %(sshd_log)s
Vous pouvez activer le filtre qui vous aidera à identifier si une ligne du journal a échoué. La valeur du filtre est en fait une référence à un fichier dont le nom du service est suivi de .conf. Par exemple : /etc/fail2ban/filter.d/sshd.conf.
La syntaxe est la suivante :
filter = service
Par exemple:
filter = sshd
Vous pouvez consulter les filtres existants dans le répertoire suivant : /etc/fail2ban/filter.d/.
Utilisation de fail2ban-client
Fail2ban est livré avec un client qui peut être utilisé pour examiner et modifier la configuration actuelle. Comme il offre de nombreuses options, vous pouvez parcourir son manuel avec :
# man fail2ban-client
Vous verrez ici quelques-unes des commandes de base que vous pouvez utiliser. Pour consulter l’état actuel de fail2ban ou pour une prison spécifique, vous pouvez utiliser :
# fail2ban-client status
Le résultat ressemblera à ceci :
Pour une prison individuelle, vous pouvez exécuter :
# fail2ban-client status sshd
Dans la capture d’écran ci-dessous, vous verrez que j’ai volontairement échoué à plusieurs connexions afin que fail2ban puisse bloquer l’adresse IP à partir de laquelle j’essayais de me connecter :
Conclusion
Fail2ban est un excellent système de prévention des intrusions, bien documenté, qui offre une sécurité supplémentaire à votre système Linux. Il faut un certain temps pour s’habituer à sa configuration et à sa syntaxe, mais une fois que vous vous serez familiarisé avec lui, vous vous sentirez libre de modifier et d’étendre ses règles.


