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 didacticiel 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 exigence est d'avoir python installé :
- La branche Fail2ban 0.9.x nécessite Python >=2.6 ou Python >=3.2
- La branche Fail2ban 0.8.x nécessite Python >=2.4
- Accès root à votre système
- En option, iptables ou showewall et sendmail
Comment installer Fail2Ban sur les systèmes Linux
L'installation de fail2ban est relativement simple :
Installez Fail2Ban sur CentOS/RHEL
Tout d'abord, mettez à jour vos packages, activez le référentiel Epel et installez fail2ban comme indiqué.
yum update
yum install epel-release
yum install fail2ban
Installez 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
En option, si vous souhaitez activer la prise en charge du courrier (pour les notifications par courrier), 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 sur les systèmes Linux
Par défaut, fail2ban utilise les fichiers .conf
situés dans /etc/fail2ban/ qui sont lus en premier. Cependant, 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 uniquement ceux que vous souhaitez remplacer. Les modifications doivent être apportées dans les fichiers .local
, pas dans le .conf
. Cela empêchera l'écrasement des modifications lors de la mise à niveau du paquet fail2ban.
Pour les besoins de ce didacticiel, nous copierons 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
en utilisant votre éditeur de texte préféré. Les valeurs que vous pouvez modifier sont :
loglevel : il s'agit du niveau de détail à enregistrer. Les options possibles sont :
- CRITIQUE
- ERREUR
- AVERTISSEMENT
- AVIS
- INFO
- DÉBOGUER
logtarget – enregistre les actions dans un fichier spécifique. La valeur par défaut est /var/log/fail2ban.log. Vous pouvez cependant modifier cela par :
- STDOUT – afficher toutes les données
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 dans lequel vous pourrez appliquer vos modifications.
Une autre façon de procéder consiste simplement à copier le fichier .conf avec :
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Si vous utilisez CentOS ou Fedora, vous devrez modifier le backend dans jail.local de « auto » à « systemd ».
Si vous utilisez Ubuntu/Debian, il n'est pas nécessaire d'effectuer cette modification, même s'ils utilisent également systemd.
Le fichier jail activera SSH par défaut pour Debian et Ubuntu, mais pas sur CentOS. Si vous souhaitez l'activer, modifiez simplement la ligne suivante dans /etc/fail2ban/jail.local :
[sshd]
enabled = true
Délais d'interdiction et de nouvelle tentative
Vous pouvez configurer les circonstances après lesquelles une adresse IP est bloquée. Pour cela, fail2ban utilise bantime, findtime et maxretry.
- bantime – il s'agit du nombre de secondes pendant lesquelles une adresse IP restera interdite (par défaut 10 min).
- findtime : la durée entre les tentatives de connexion, avant que l'hôte ne soit banni. (par défaut 10 minutes). 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 le délai de recherche (10< minutes).
- maxretry – nombre de tentatives à effectuer avant qu’une interdiction ne soit appliquée. (par défaut 3).
Adresse IP de la liste blanche
Bien sûr, vous souhaiterez 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 par un espace ou une virgule.
alertes courrier électronique
Si vous souhaitez recevoir des alertes par courrier électronique lors de l'événement, vous devrez configurer les paramètres suivants dans /etc/fail2ban/jail.local :
- destemail – adresse e-mail à laquelle 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 (agent de transfert de courrier) par défaut est défini sur sendmail.
Afin de recevoir des notifications par courrier électronique, vous devrez également modifier le paramètre « action » :
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 des 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 aidera à identifier si une ligne du journal est en échec. La valeur du filtre est en fait une référence à un fichier avec le nom du service suivi de .conf. Par exemple : /etc/fail2ban/filter.d/sshd.conf.
La syntaxe est :
filter = service
Par exemple:
filter = sshd
Vous pouvez consulter les filtres existants dans le répertoire suivant : /etc/fail2ban/filter.d/.
Utiliser le client fail2ban
Fail2ban est livré avec un client qui peut être utilisé pour revoir et modifier la configuration actuelle. Puisqu’il propose de nombreuses options, vous pouvez parcourir son manuel avec :
man fail2ban-client
Ici, vous verrez certaines des commandes de base que vous pouvez utiliser. Pour consulter l'état actuel de fail2ban ou d'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 y serez familiarisé, vous vous sentirez libre de modifier et d'étendre ses règles.