{{indexmenu_n>15}} ## Empêcher les bruteforce SSH Sur toutes les machines, il convient d'installer le paquet `fail2ban`. Ce genre d'opération peut s'effectuer sur l'ensemble des machines, d'un seul coup, [[technique:tips:broadcast|en utilisant cette astuce]]. En pratique, comme l'authentification par mot de passe est désactivée, on ne risque pas de se faire bruteforce une clé SSH. Ceci étant, ce bannissement permet d'alléger les requêtes faites au serveur et les potentiels autres actes malveillants provenant de la même IP. Cet outil permet d'analyser les logs de différents services et de bannir temporairement une IP en cas d'abus détecté. `fail2ban` supporte une grande variété de services (SSH, nginx, Postfix...). `fail2ban` n'interagit pas du tout avec les services concernés ; il se contente de *parser* leurs journaux et de récupérer les IP provoquant une erreur (exemple : trop de 404 pour un serveur HTTP). Dans notre cas, la configuration est un peu modifiée afin d'être intégrée à la [[technique:adminsys:monitoring:log|centralisation des logs]], quelques extraits : `/etc/fail2ban/fail2ban.conf` : ``` loglevel = INFO logtarget = SYSOUT ``` On retrouve donc les logs de ban/unban dans `journalctl` (`sudo journalctl -u fail2ban`) ou dans [[technique:adminsys:monitoring:log:query|Grafana]]. `/etc/fail2ban/jail.d/defaults-debian.conf` : ``` [sshd] enabled = true ``` Seul les logs SSH sont analysés par défaut lors de l'installation. Au bout de quelques essais ratés, l'IP concernée est bannie pour 10 minutes par défaut. Ce délai est configurable via l'option `bantime`. Il est ensuite possible de faire des statistiques sur les IP bannies avec la commande : ``` sudo zgrep -h "Ban " /var/log/fail2ban.log* | awk '{print $NF}' | sort | uniq -c | sort -n ```