Utilisation de fail2ban pour protéger votre serveur

Tous services connectés à l’Internet risquent d’être attaqués par force brute: de nombreux robots et attaquants essaient des mots de passe/utilisateurs aléatoires pour se connecter à votre serveur. Le serveur OpenSSH et le client lui-même sont assez sécurisés, mais comme tout le reste, il peut être craqué avec des attaques par force brute. Pour protéger le serveur j’utilise fail2ban qui bloque l’adresse IP pendant un certain temps après un certain nombre d’échecs de connexions.

Installation fail2ban 

On va installer fail2ban  sur Ubuntu 20.04 64 Bit 

apt update && apt upgrade -y

sudo apt install fail2ban

Pour vérifier si il est bien installé on va vérifier status:

systemctl status fail2ban

Configuration de fail2ban

Le service fail2ban conserve ses fichiers de configuration dans /etc/fail2ban/jail.conf

Chaque fois que vous mettez à jour le programme, ce fichier sera remplacé, nous allons donc changer la copie de ce fichier et le nommer jail.local 

sudo cp /etc/fail2ban/jail.{conf,local}

On va ouvrir et configurer jail.local  :

nano /etc/fail2ban/jail.local

Il faut corriger paramètres situé dans la section [DEFAUT] les paramètres suivantes:

bantime – le paramètre définit l’intervalle de temps, le client sera banni.  Pour bannir définitivement une IP, utilisez un nombre négatif.

maxretry est le nombre d’échecs avant qu’une IP soit bannie. La valeur par défaut est 5, ce qui devrait convenir à la plupart des utilisateurs.

findtime est la durée entre le nombre d’échecs avant qu’une interdiction ne soit définie.

 Avec les paramètres par défaut, le service fail2ban bannit un client qui tente sans succès de se connecter 5 fois dans une fenêtre de 10 minutes.

Je configure:

  • bantime  = 120m
  • findtime  = 10m
  • maxretry = 5

Aussi vous pouvez ajouter adresses IP, plages d’adresses IP ou hôtes que vous souhaitez exclure de l’interdiction.

Décommenter la ligne commençant par ignoreip et ajoutez vos adresses IP séparées par un espace :

Par exemple:

Si vous changez votre port SSH en 222 (par example), vous remplacerez ssh par ce numéro:

[sshd]
# To use more aggressive sshd modes set filter parameter "mode" in jail.local:
# normal (default), ddos, extra or aggressive (combines all).
# See "tests/files/logs/sshd" or "filter.d/sshd.conf" for usage example and details.
#mode = normal
port = 222
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Chaque fois que vous modifiez le fichier de configuration, vous devez redémarrer le service fail2ban pour que les modifications prennent effet :

systemctl restart fail2ban

Pour afficher les IP bannie

fail2ban-client status sshd

 

Débloquer l’IP :

fail2ban-client set sshd unbanip 123.123.123.123

Bloquer l’IP :

fail2ban-client set sshd banip 123.123.123.123

 

Résolution des problèmes

Si le service Fail2ban ne démarre pas correctement ou ne fonctionne pas comme prévu, voici quelques étapes à suivre :

Vérifiez les logs de Fail2ban : Consultez les logs de Fail2ban pour identifier les erreurs possibles :

sudo journalctl -u fail2ban

ou

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

Vérifiez la syntaxe des fichiers de configuration : Assurez-vous qu’il n’y a pas d’erreurs de syntaxe dans les fichiers de configuration jail.local et fail2ban.conf :

sudo fail2ban-client -d

Backend incorrect : Si Fail2ban ne fonctionne pas avec le backend par défaut, essayez de définir explicitement le backend dans jail.local :

backend = systemd

ou

backend = auto

Port SSH personnalisé : Si vous avez changé le port SSH, vérifiez que le port est correctement configuré dans le fichier jail.local et que le pare-feu autorise ce port.

En suivant ces étapes, vous devriez être en mesure de résoudre la plupart des problèmes courants liés à Fail2ban.

Pour plus d’informations sur ce sujet et pour plus d’informations sur la configuration, visitez https://www.fail2ban.org/

Bonne chance!