Ceci est une ancienne révision du document !
Protection anti bruteforce
Retour à la liste des tutoriels
Présentation
Un pare-feu (iptables) est installé sur votre serveur. Fail2ban va permettre d'ajouter des règles de filtrage visant à filtrer les hôtes indésirables.
Je ne vais pas m'attarder sur la parade des attaques Apache / web, mais sur les tentatives de connexion en ssh (port 22).
Rappel : le ssh permet d'ouvrir une console de gestion du serveur à distance.
Toutefois, ceci peut vous empêcher de vous connecter à votre serveur depuis des réseaux académiques ou professionnels qui sont fortement filtrés.
Log SSH
SSH enregistre toutes les tentatives de connexion (réussies ou non) dans le fichier journal /var/log/auth.log .
Exemple : connexion échouée
Jun 26 05:56:31 vm sshd[30103]: Invalid user Aurdaneta from 200.69.248.161 Jun 26 05:56:31 vm sshd[30103]: pam_unix(sshd:auth): check pass; user unknown Jun 26 05:56:31 vm sshd[30103]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=h248-161.decidir.net Jun 26 05:56:32 vm sshd[30103]: Failed password for invalid user Aurdaneta from 200.69.248.161 port 52101 ssh2
Exemple : connexion réussie
Jun 26 02:00:16 vm sshd[29793]: Accepted password for user-web from 88.191.122.115 port 1986 ssh2 Jun 26 02:00:16 vm sshd[29793]: pam_unix(sshd:session): session opened for user user-ssh by (uid=0)
Fonctionnement de fail2ban
Fail2ban sera un daemon sur le serveur, c'est à dire qu'il sera exécuté en permanence, et lira les logs indiqués afin de les analyser et prendre les mesures requises en cas d'abus / tentative de hack de la part d'une personne.
Fail2ban est capable d'analyser différents types de logs (SSH, web, FTP, …). Toutefois attention aux ressources consommées par un processus tournant en permanence et analysant des logs !
Installation
apt-get install fail2ban
Configuration
Toute la configuration de fail2ban s'effectue dans le fichier /etc/fail2ban/jail.conf .
ignoreip
Liste des ip à ignorer dans le scan des logs.
Par défaut 127.0.0.1 .
- Séparer les valeurs par une virgule.
- Indication avec un masque réseau possible (10.0.0.0/16 → couvre de 10.0.0.0 à 10.0.255.255)
bantime
Durée du ban, en secondes. Par défaut 600.
Cette valeur peut-être laissée telle qu'elle (une attaque bruteforce automatisée s'arrêtera immédiatement s'il ne reçoit plus de réponses de la part du serveur).
destemail
Fail2ban peut prévenir par mail à chaque ip bannie / débannie.
maxretry
Nombre de tentatives maximales au bout duquel l'adresse IP est bloquée.
Cette valeur peut-être redéfinie dans chaque module de type de logs.
SSH
Voici la partie dans laquelle j'indique de vérifier les connexions SSH.
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
Le module SSH de fail2ban est activé.
La valeur de maxretry peut-être minorée à 3 ou 4 (nombre maximal de tentatives échouées avant ban)
Suite
Il faut recharger la configuration de fail2ban :
service fail2ban reload
Commandes utiles
Liste des bans actuels
iptables -L
fail2ban est apparu dans la liste !
Log de fail2ban
tail /var/log/fail2ban.log
Enlever un ban
iptables -D fail2ban-ssh -s @IP -j DROP
Où @IP est l'adresse IP à débloquer.