Fiche fail2ban : protection des services ssh, ftp et apache sous Debian

Pour les étudiants en BTS CIEL ou SIO, sécuriser un serveur passe par la surveillance des logs et le blocage automatique des comportements malveillants.

Fail2ban permet :

  • d’analyser les logs système
  • de détecter les tentatives d’attaque
  • de bannir automatiquement les adresses IP

Cette fiche couvre la protection de :

  • SSH
  • Apache
  • FTP (vsftpd)
    avec exploitation des logs.

Configuration complète fail2ban

# =========================================================
# INSTALLATION
# =========================================================

apt update && apt install fail2ban -y

# =========================================================
# DEMARRAGE
# =========================================================

systemctl enable fail2ban
systemctl start fail2ban

# =========================================================
# CONFIGURATION PRINCIPALE
# =========================================================

nano /etc/fail2ban/jail.local

[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
backend = systemd

# =========================================================
# SSH
# =========================================================

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5

# =========================================================
# APACHE
# =========================================================

[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 5

# =========================================================
# FTP (VSFTPD)
# =========================================================

[vsftpd]
enabled = true
port = ftp
filter = vsftpd
logpath = /var/log/vsftpd.log
maxretry = 5

# =========================================================
# REDEMARRAGE
# =========================================================

systemctl restart fail2ban

# =========================================================
# VERIFICATION
# =========================================================

fail2ban-client status
fail2ban-client status sshd
fail2ban-client status apache-auth
fail2ban-client status vsftpd

Explication détaillée

Principe de fonctionnement

Fail2ban analyse les logs :

  • SSH → /var/log/auth.log
  • Apache → /var/log/apache2/error.log
  • FTP → /var/log/vsftpd.log

Lorsqu’un nombre d’échecs dépasse maxretry dans findtime, l’IP est bannie pendant bantime.


Analyse des logs utilisés

Logs SSH

tail -f /var/log/auth.log

Exemple :

May  1 11:50:12 debian sshd[1122]: Failed password for invalid user admin from 192.168.1.60 port 53322 ssh2

Logs Apache

tail -f /var/log/apache2/error.log

Exemple :

[Wed May 01 10:20:01] [error] [client 192.168.1.60] user admin: authentication failure

Logs FTP (vsftpd)

tail -f /var/log/vsftpd.log

Exemple :

Tue May 01 10:15:10 2026 [pid 1234] [ftpuser] FAIL LOGIN: Client "192.168.1.60"

Recherche dans les logs

Tentatives SSH échouées :

grep "Failed password" /var/log/auth.log

Top des IP attaquantes :

grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

Tentatives Apache :

grep -i "authentication failure" /var/log/apache2/error.log

Tentatives FTP :

grep "FAIL LOGIN" /var/log/vsftpd.log

Commandes utiles fail2ban

Voir le statut global :

fail2ban-client status

Voir les IP bannies :

fail2ban-client status sshd

Débannir une IP :

fail2ban-client set sshd unbanip 192.168.1.60

Recharger la configuration :

fail2ban-client reload

Bonnes pratiques

  • adapter maxretry pour éviter les faux positifs
  • surveiller régulièrement les logs
  • utiliser des mots de passe forts
  • désactiver l’authentification root SSH
  • limiter l’exposition des services FTP
  • combiner avec un pare-feu

Récapitulatif des fichiers importants

FichierRôle
/etc/fail2ban/jail.confconfiguration par défaut
/etc/fail2ban/jail.localconfiguration personnalisée
/etc/fail2ban/filter.d/sshd.conffiltre SSH
/etc/fail2ban/filter.d/apache-auth.conffiltre Apache
/etc/fail2ban/filter.d/vsftpd.conffiltre FTP
/var/log/auth.loglogs SSH
/var/log/apache2/error.loglogs Apache
/var/log/vsftpd.loglogs FTP
/var/log/fail2ban.loglogs fail2ban

Conclusion

Fail2ban permet de sécuriser efficacement un serveur en s’appuyant sur l’analyse des logs.
Avec la protection combinée de SSH, Apache et FTP, il constitue une première ligne de défense contre les attaques automatisées.

C’est un outil essentiel pour toute infrastructure exp

Retour en haut