abonnel-siteweb/data/pages/informatique/applications/fail2ban.txt

104 lines
5.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

====== 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 [[https://manpages.debian.org/jessie/fail2ban/jail.conf.10.en.html|Fail2Ban Configuration]]
===== Installer Fail2ban =====
La commande suivante permet d'installer **fail2ban** avec les systèmes **Debian** et dérivées :
<code BASH>
sudo apt install fail2ban
</code>
{{informatique:applications:pasted:20210125-213558.png|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** :
<code>
action.d/ fail2ban.d/ jail.conf paths-arch.conf paths-debian.conf
fail2ban.conf filter.d/ jail.d/ paths-common.conf paths-opensuse.conf
</code>
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 :
- jail.conf
- jail.d/*.conf (dans l'ordre alphabétique)
- jail.local
- jail.d/*.
- local (dans l'ordre alphabétique).
===== Modifications apportées à fail2ban =====
sudo nano /etc/fail2ban/jail.local
Pour ajouter les options suivantes :
<code>
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 600
maxretry = 2
destemail = root@localhost
action = %(action_mwl)s
[sshd]
enabled = true
</code>
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
<code>
[sshd]
enabled = true
port = 1234
[postfix]
port = smtp,submission
enabled = true
[dovecot]
port = imaps
enabled = true
</code>
N'oubliez pas de redémarrer le service ''sudo service fail2ban restart''