Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
140-pare-feu-fail2ban:10-install-fail2ban [le 20/06/2025 à 15:17] – prof | 140-pare-feu-fail2ban:10-install-fail2ban [le 06/07/2025 à 15:50] (Version actuelle) – prof | ||
---|---|---|---|
Ligne 12: | Ligne 12: | ||
Il sait utiliser nftables, sait lire les journaux créés par «systemd», | Il sait utiliser nftables, sait lire les journaux créés par «systemd», | ||
+ | ===== Installation et visite ===== | ||
+ | La partie facile: | ||
+ | apt install fail2ban | ||
+ | La visite, c'est autre chose...\\ Dans ''/ | ||
+ | < | ||
+ | drwxr-xr-x 2 root root 4096 20 juin 17:02 jail.d | ||
+ | drwxr-xr-x 3 root root 4096 20 juin 17:02 filter.d | ||
+ | drwxr-xr-x 2 root root 4096 20 juin 17:02 action.d | ||
+ | drwxr-xr-x 2 root root 4096 9 mai 12:19 fail2ban.d | ||
+ | <span class=" | ||
+ | -rw-r--r-- 1 root root 3017 25 avril 2024 fail2ban.conf</ | ||
+ | -rw-r--r-- 1 root root 25847 25 avril 2024 jail.conf | ||
+ | -rw-r--r-- 1 root root 645 25 avril 2024 paths-arch.conf | ||
+ | -rw-r--r-- 1 root root 2727 25 avril 2024 paths-common.conf | ||
+ | -rw-r--r-- 1 root root 738 25 avril 2024 paths-opensuse.conf | ||
+ | </ | ||
+ | Plusieurs sous-répertoires qu'il faudra visiter par la suite. | ||
+ | ==== fail2ban.conf ==== | ||
+ | |||
+ | Dans '' | ||
+ | < | ||
+ | [DEFAULT] | ||
+ | loglevel = INFO | ||
+ | logtarget = / | ||
+ | syslogsocket = auto | ||
+ | <span class=" | ||
+ | pidfile = / | ||
+ | <span class=" | ||
+ | dbpurgeage = 1d | ||
+ | dbmaxmatches = 10 | ||
+ | [Definition] | ||
+ | [Thread] | ||
+ | </ | ||
+ | Il y a un socket UNIX. Nous verrons qu'un client '' | ||
+ | |||
+ | Un fichier au format sqlite va conserver les adresses interceptées, | ||
+ | |||
+ | Les autres paramètres, | ||
+ | ==== paths-debian.conf ==== | ||
+ | < | ||
+ | [INCLUDES] | ||
+ | before = paths-common.conf | ||
+ | after = paths-overrides.local | ||
+ | [DEFAULT] | ||
+ | syslog_mail = / | ||
+ | syslog_mail_warn = %(syslog_mail)s | ||
+ | syslog_user | ||
+ | syslog_ftp = / | ||
+ | syslog_daemon = / | ||
+ | exim_main_log = / | ||
+ | proftpd_log = / | ||
+ | roundcube_errors_log = / | ||
+ | <span class=" | ||
+ | sshd_backend = systemd | ||
+ | dropbear_backend = systemd | ||
+ | proftpd_backend = systemd | ||
+ | pureftpd_backend = systemd | ||
+ | wuftpd_backend = systemd | ||
+ | postfix_backend = systemd | ||
+ | dovecot_backend = systemd</ | ||
+ | </ | ||
+ | Retenons pour l' | ||
+ | |||
+ | ==== jail.conf ==== | ||
+ | «jail» voulant dire: «prison». Ce fichier est le point de départ de la définition du comportement de fail2ban. | ||
+ | |||
+ | Ce très volumineux fichier contient essentiellement deux parties: | ||
+ | < | ||
+ | < | ||
+ | before = paths-debian.conf | ||
+ | [DEFAULT]</ | ||
+ | <span class=" | ||
+ | < | ||
+ | findtime | ||
+ | maxretry = 5 | ||
+ | maxmatches = %(maxretry)s | ||
+ | backend = auto</ | ||
+ | usedns = warn | ||
+ | logencoding = auto | ||
+ | enabled = false | ||
+ | mode = normal | ||
+ | < | ||
+ | destemail = root@localhost | ||
+ | sender = root@& | ||
+ | mta = sendmail | ||
+ | protocol = tcp | ||
+ | chain = < | ||
+ | port = 0:65535 | ||
+ | fail2ban_agent = Fail2Ban/ | ||
+ | < | ||
+ | banaction_allports = iptables-allports</ | ||
+ | <span class=" | ||
+ | action_mw = %(action_)s | ||
+ | %(mta)s-whois[sender=" | ||
+ | action_mwl = %(action_)s | ||
+ | | ||
+ | action_xarf = %(action_)s | ||
+ | | ||
+ | action_cf_mwl = cloudflare[cfuser=" | ||
+ | %(mta)s-whois-lines[sender=" | ||
+ | action_blocklist_de | ||
+ | action_abuseipdb = abuseipdb | ||
+ | < | ||
+ | </ | ||
+ | Le surlignage jaune indique les paramètres qui seront pris par défaut pour un filtre donné. Nous verrons dans un exemple ce que ceci implique. Les parties en gras étant les plus remarquables en première approche: | ||
+ | * **bantime | ||
+ | * **findtime | ||
+ | * **maxretry = 5**\\ le nombre d' | ||
+ | * **maxmatches = %(maxretry)s**\\ le nombre de fois que l'IP a exécuté une opération frauduleuse durant le «findtime», | ||
+ | * **backend = auto**\\ La source d' | ||
+ | |||
+ | <note important> | ||
+ | Le surlignage orange décrit les actions possibles lorsqu' | ||
+ | * **action_**\\ action la plus simple, elle ne déclenche qu'un simple bannissement. | ||
+ | * **action_mw**\\ en plus du bannissement, | ||
+ | * **action_mwl**\\ e-mail avec rapport «whois» et les lignes de log qui ont déclenché l' | ||
+ | * **action_xarf**\\ Complètement inutile, dans la mesure où en plus du bannissement, | ||
+ | * **action_cf_mwl**\\ concerne les abonnés à [[https:// | ||
+ | * **action_blocklist_de**\\ hors de propos en première approche. | ||
+ | * **action_abuseipdb**\\ hors de propos en première approche. | ||
+ | * **action = %(action_)s**\\ L' | ||
+ | Pour approfondir la question, il est utile de lire les commentaires inscrits dans '' | ||
+ | |||
+ | <note important> | ||
+ | |||
+ | La seconde partie définit justement des «prisons» que l'on veut activer pour différents services. Aucune n'est active par défaut puisque le paramètre «enabled» est justement positionné par défaut sur «faux». | ||
+ | |||
+ | Ce qui est inscrit dans cette seconde partie ne devrait servir que de modèle et **en aucun cas** être activé dans ce fichier. C'est ce que l'on va inscrire dans le répertoire '' | ||
+ | ==== action.d ==== | ||
+ | Ce répertoire contient une collection d' | ||
+ | |||
+ | En premier lieu: | ||
+ | nftables-allports.conf | ||
+ | nftables.conf | ||
+ | nftables-multiport.conf | ||
+ | qui vont devoir remplacer les: | ||
+ | iptables-allports.conf | ||
+ | iptables.conf | ||
+ | iptables-multiport.conf | ||
+ | Nous allons voir comment opérer proprement. | ||
+ | |||
+ | D' | ||
+ | ==== filter.d ==== | ||
+ | Ce répertoire contient les filtres spécifiques à chaque service que fail2ban sait surveiller. Nous y trouvons par exemple: | ||
+ | sshd.conf | ||
+ | dovecot.conf | ||
+ | postfix.conf | ||
+ | Mais également une série de filtres concernant apache, nginx etc. | ||
+ | |||
+ | Ce sont des [[https:// | ||
+ | ==== jail.d ==== | ||
+ | Celui dans lequel nous allons intervenir pour activer les filtres qui nous intéressent, | ||
+ | < | ||
+ | # Changes: | ||
+ | # file, but provide customizations in jail.local file, | ||
+ | # or separate .conf files under jail.d/ directory, e.g.: | ||
+ | # | ||
+ | # HOW TO ACTIVATE JAILS: | ||
+ | # | ||
+ | # YOU SHOULD NOT MODIFY THIS FILE. | ||
+ | # | ||
+ | # It will probably be overwritten or improved in a distribution update. | ||
+ | # | ||
+ | # Provide customizations in a jail.local file or a jail.d/ | ||
+ | # For example to change the default bantime for all jails and to enable the | ||
+ | # ssh-iptables jail the following (uncommented) would appear in the .local file. | ||
+ | # See man 5 jail.conf for details. | ||
+ | </ | ||
+ | Les divers fichiers contenus dans ce répertoire seront lus par ordre alphabétique et leur contenu écrasera éventuellement ce qui a pu être défini précédemment. | ||
+ | |||
+ |
Mise en œuvre: Dernière modification le: 20/06/2025 à 15:17 par prof