Fail2ban est un système de prévention des intrusions gratuit et open-source écrit en Python. Il est utilisé pour protéger votre système contre les attaques par force brute. Il surveille en permanence les fichiers journaux SSH (et autres) pour les tentatives d'authentification, après un nombre spécifié de tentatives de mot de passe incorrectes, l'adresse IP du client est interdite par Fail2Ban. Il peut être utilisé pour sécuriser plusieurs services, notamment SSH, vsftpd, Apache et Webmin.
Dans ce tutoriel, je vais vous montrer comment installer le pare-feu Fail2Ban sur Alma Linux 8.
Prérequis
- Un serveur exécutant Alma Linux 8.
- Un mot de passe root est configuré sur le serveur.
Vérifier l'installation du pare-feu
Par défaut, le package Firewalld est préinstallé sur Alma Linux 8. Tout d'abord, vous devrez vérifier s'il est en cours d'exécution ou non. Vous pouvez le vérifier avec la commande suivante :
systemctl status firewalld
Si firewalld n'est pas en cours d'exécution, vous obtiendrez le résultat suivant :
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: inactive (dead) Docs: man:firewalld(1)
Maintenant, démarrez le service firewalld avec la commande suivante :
systemctl start firewalld
Vous pouvez vérifier l'état du pare-feu à l'aide de la commande suivante :
systemctl status firewalld
Vous devriez voir le résultat suivant :
? firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled) Active: active (running) since Sat 2022-02-19 08:57:14 UTC; 40s ago Docs: man:firewalld(1) Main PID: 7214 (firewalld) Tasks: 2 (limit: 23696) Memory: 27.9M CGroup: /system.slice/firewalld.service ??7214 /usr/libexec/platform-python -s /usr/sbin/firewalld --nofork --nopid Feb 19 08:57:14 linux systemd[1]: Starting firewalld - dynamic firewall daemon... Feb 19 08:57:14 linux systemd[1]: Started firewalld - dynamic firewall daemon.
Maintenant, répertoriez tous les services configurés par firewalld à l'aide de la commande suivante :
firewall-cmd --list-all
Vous devriez voir le résultat suivant :
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
Installer Fail2Ban
Par défaut, le package Fail2Ban n'est pas disponible dans le référentiel par défaut d'Alma Linux. Vous devrez donc l'installer à partir du référentiel EPEL. Vous pouvez installer le référentiel EPEL avec la commande suivante :
dnf install epel-release -y
Une fois le dépôt EPEL installé, vous pouvez installer le pare-feu Fail2Ban avec la commande suivante :
dnf install fail2ban fail2ban-firewalld -y
Une fois l'installation terminée, démarrez et activez le service Fail2Ban avec la commande suivante :
systemctl start fail2ban
systemctl enable fail2ban
Vous pouvez vérifier l'état du service fail2ban en exécutant la commande :
systemctl status fail2ban
Vous devriez voir le résultat suivant :
? fail2ban.service - Fail2Ban Service Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; disabled; vendor preset: disabled) Active: active (running) since Sat 2022-02-19 08:58:34 UTC; 6s ago Docs: man:fail2ban(1) Process: 7838 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS) Main PID: 7840 (fail2ban-server) Tasks: 3 (limit: 23696) Memory: 10.8M CGroup: /system.slice/fail2ban.service ??7840 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start Feb 19 08:58:34 linux systemd[1]: Starting Fail2Ban Service... Feb 19 08:58:34 linux systemd[1]: Started Fail2Ban Service. Feb 19 08:58:35 linux fail2ban-server[7840]: Server ready
Configurer Fail2Ban
Le fichier de configuration principal de Fail2Ban se trouve dans /etc/fail2ban/jail.conf . C'est une bonne idée de créer une copie du fichier de configuration principal. Vous pouvez le créer avec la commande suivante :
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Par défaut, Fail2Ban utilise le pare-feu Iptables. Pour activer la prise en charge de firewalld, exécutez la commande suivante :
mv /etc/fail2ban/jail.d/00-firewalld.conf /etc/fail2ban/jail.d/00-firewalld.local
Ensuite, redémarrez le service Fail2Ban pour appliquer les modifications :
systemctl restart fail2ban
Sécuriser SSH avec Fail2Ban
Par défaut, Fail2Ban n'est pas configuré pour bloquer les adresses IP distantes. Vous devrez configurer le fichier de configuration de la prison Fail2Ban pour chaque service que vous souhaitez protéger.
Pour protéger le service SSH, créez un fichier de configuration jail pour SSH avec la commande suivante :
nano /etc/fail2ban/jail.d/sshd.local
Ajoutez les lignes suivantes :
# This configuration will block the remote host for 2 hours after 3 failed SSH login attempts. [sshd] enabled = true bantime = 2h maxretry = 3
Enregistrez et fermez le fichier lorsque vous avez terminé, puis redémarrez le service SSH pour appliquer les modifications :
systemctl restart fail2ban
Vous pouvez maintenant vérifier la configuration de la prison avec la commande suivante :
fail2ban-client status
Vous obtiendrez la prison configurée dans la sortie suivante :
Status |- Number of jail: 1 `- Jail list: sshd
Pour vérifier la prison SSH pour toute adresse IP interdite, exécutez la commande suivante :
fail2ban-client status sshd
Vous obtiendrez toutes les listes d'adresses IP interdites dans la sortie suivante :
Status for the jail: sshd |- Filter | |- Currently failed: 6 | |- Total failed: 15 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 2 |- Total banned: 2 `- Banned IP list: 96.9.67.48 43.154.142.8
Si vous souhaitez débannir l'adresse IP manuellement, exécutez la commande suivante :
fail2ban-client unban remote-ip-address
Conclusion
Dans le guide ci-dessus, nous avons expliqué comment installer Fail2Ban sur Alma Linux 8. Nous avons également expliqué comment utiliser Fail2Ban pour sécuriser le service SSH. Vous pouvez désormais implémenter Fail2Ban dans l'environnement de production pour protéger votre système contre les attaques par force brute.