Fail2ban permet de protéger votre serveur contre les tentatives de connexion abusives, notamment les attaques par force brute sur SSH. Il analyse les fichiers de log et bannit automatiquement les IP suspectes.
Chez JSBCloud, l'installation de Fail2ban est fortement recommandée sur tous les VPS exposés à Internet.
Mettez à jour votre système et installez Fail2ban :
sudo apt update && sudo apt install fail2ban -y
Vérifiez que le service a bien été installé :
sudo systemctl status fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
[sshd]
et configurez-la comme suit :[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime = 3600
findtime = 600
maxretry
: nombre d’essais avant bannissement (ici 5)bantime
: durée du bannissement en secondes (ici 1h)findtime
: période de recherche des tentatives (ici 10 min)Pour appliquer la configuration :
sudo systemctl restart fail2ban
Vérifiez que la jail SSH est bien active :
sudo fail2ban-client status sshd
Depuis une autre machine (ou via un VPN), tentez plusieurs connexions SSH avec un mot de passe erroné. L’adresse IP sera bannie automatiquement après 5 échecs.
Vous pouvez vérifier les IP bannies avec :
sudo fail2ban-client status sshd
Et débannir une IP si besoin :
sudo fail2ban-client set sshd unbanip 1.2.3.4
/var/log/fail2ban.log
: journal de Fail2ban/var/log/auth.log
: journal des connexions SSHPour éviter de vous bannir vous-même (par exemple en cas d’erreur de mot de passe), vous pouvez ajouter votre propre IP à la whitelist Fail2ban.
sudo nano /etc/fail2ban/jail.local
ignoreip
au tout début du fichier (dans la section [DEFAULT]
). Exemple :[DEFAULT]
ignoreip = 127.0.0.1 ::1 123.123.123.123
Remplace
123.123.123.123
par votre vraie IP publique (celle de votre connexion personnelle ou VPN).
Vous pouvez ajouter plusieurs IPs, séparées par un espace.
sudo systemctl restart fail2ban
Depuis le VPS :
curl ifconfig.me
Ou depuis votre navigateur : https://whatismyipaddress.com
0.0.0.0/0
(toute Internet), ce serait contre-productif.PermitRootLogin no
)