Recherche de site Web

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
    • STDERR – afficher toutes les erreurs
    • SYSLOG – journalisation basée sur les messages
    • Fichier – sortie dans un fichier
  • socket – répertoire dans lequel le fichier socket sera placé.
  • pidfile – emplacement du fichier pid.

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.