Files
abonnel-www/7d8fcf3f-b9ef-4bfa-9c3f-5c55c5d63cc9/index.md
T
2026-05-15 09:29:56 +02:00

5.5 KiB
Raw Blame History

Fail2ban contre les attaques brutes-force

Si vous être propriétaire dun serveur quelconque connecté à Internet, vous n’êtes pas sans savoir quil est exposé à de nombreuses attaques. Parmi elles, le brute-force. Cette attaque consiste à trouver votre mot de passe SSH en les essayant tous les uns à la suite des autres ou en utilisant des dictionnaires (ce sont des listes contenant les mots de passe les plus utilisés comme admin, 123456, etc…). Ces attaques sont généralement menées par des robots qui visent des dizaines de serveurs en même temps. Il se connectent sans cesse à votre serveur grâce à votre port SSH et essayent beaucoup de combinaisons de mot de passe jusqu’à trouver le bon (généralement, une tentative est menée toutes les 2 à 3 secondes).

Enfin, fois que les pirates ont accès à un serveur, ils peuvent par exemple sen approprier pour exécuter dautres attaques brute-force contre dautres serveurs, ou bien utiliser votre serveur pour spammer des gens (par mail, par exemple). De plus, le responsable, si il y a une plainte car des attaques ont été menées depuis votre serveur, cest vous (à moins que vous ne démontriez que vous avez vous-même été victime dattaque et que vous navez plus le contrôle sur votre serveur, doù limportance de conserver vos logs).

Il existe beaucoup de solutions, celle que je vais vous présenter aujourdhui, cest Fail2ban (dautres méthodes seront proposés dans de futurs articles). Fail2ban est un programme qui analyse vos logs système afin de détecter les attaques brute-force et ainsi bloquer ladresse IP attaquante.

Vous pouvez consulter la manuel en anglais Fail2Ban Configuration

Installer Fail2ban

La commande suivante permet d'installer fail2ban avec les systèmes Debian et dérivées :

sudo apt install fail2ban

Exemple d'installation de fail2ban sous Raspbian 10

Configurer fail2ban

Éditons le fichier /etc/fail2ban/jail.local

Liste des fichiers et dossier de configuration par défaut de fail2ban sous Raspbian 10 :

action.d/            fail2ban.d/          jail.conf            paths-arch.conf      paths-debian.conf
fail2ban.conf        filter.d/            jail.d/              paths-common.conf    paths-opensuse.conf

Il y a deux fichiers principaux de configuration pour fail2ban : /etc/fail2ban/fail2ban.conf et /etc/fail2ban/jail.conf. D'autres fichiers complémentaires peuvent être dans /etc/fail2ban/filter.d/*.conf et /etc/fail2ban/action.d/*.conf

/etc/fail2ban/fail2ban.conf est le fichier de configuration pour le paramétrage du démon fail2ban. Il s'agit des paramètres loglevel, fichier log, port, socket et pid.

/etc/fail2ban/jail.conf est le fichier des recettes avec des filtres et des actions. Il permet de définir les règles de bannissements.

Les filtres qui spécifient les règles de détections d'échec d'identification sont à ajouter au dossier filter.d

Les actions qui définissent les règles de bannissement ou non des adresses IP sont à ajouter au dossier filter.d

Il est vivement conseillé d'apporter des modifications de configuration dans des fichiers nommés fail2ban.local et jail.local. Ou ajoutez des fichiers aux dossiers fail2ban.d/ et jail.d/.

L'ordre de chargement des fichiers de configuration est le suivant :

  1. jail.conf
  2. jail.d/*.conf (dans l'ordre alphabétique)
  3. jail.local
  4. jail.d/*.
  5. local (dans l'ordre alphabétique).

Modifications apportées à fail2ban

sudo nano /etc/fail2ban/jail.local

Pour ajouter les options suivantes :

[DEFAULT]
ignoreip = 127.0.0.1/8 
bantime  = 600
maxretry = 2
destemail = root@localhost
action = %(action_mwl)s

[sshd]
enabled  = true

Avec ignoreip, les IPs qui seront spécifiées sur cette ligne ne seront par bloquées. Je vous conseille de laisser ladresse actuelle (qui doit être 127.0.0.1/8), dy ajouter un espace afin de la séparer et dy mettre votre adresse (ainsi que celles de toutes les personnes qui sont susceptibles daccéder à votre serveur sans pour autant lattaquer)

bantime est le nombre de secondes quune adresse va être bloquée si elle attaque votre serveur. 10 minutes est très peu suffisant, un rapide calcul vous permet den être sûr. Admettons que vous êtes attaqué par 20 machines différentes, toutes à 1 mot de passe toutes les 2 secondes. Vous avez donc 10 tentatives par seconde. Si fail2ban bloque au bout de 6 tentatives par IP, 120 mots de passe sont essayés toutes les 10 minutes, soit 16 800 par jour. Donc, 10 minutes ne représentent pas grand chose face au nombre de machines qui vous attaquent.

maxretry est le nombre de tentatives auxquelles a le droit un utilisateur avant de se faire bloquer.

destemail est ladresse mail à laquelle seront envoyés les mails de notification (quand une adresse sera bloquée)

action permet d'effectuer des actions.\ action = %(action_mw)s permet de bannir et d'envoyer un mail avec le pays ou lemail dabuse concernant lIP qui a été bannie.\ action = %(action_mwl)s ajoute les lignes de logs ou apparaissent lIP correspondante

Ajouter les règles spécifiques

[sshd]
enabled = true
port = 1234

[postfix]
port = smtp,submission
enabled = true

[dovecot]
port = imaps
enabled = true

N'oubliez pas de redémarrer le service sudo service fail2ban restart