Sécuriser SSH avec Fail2Ban

Dans l’univers de la gestion des serveurs Linux, sécuriser l’accès SSH (Secure Shell) est une priorité absolue pour tout administrateur système. SSH est souvent la porte d’entrée principale pour l’administration serveur, ce qui le rend également une cible privilégiée pour les attaques de force brute. Une des méthodes les plus efficaces pour protéger SSH est l’utilisation de Fail2Ban, un outil de prévention des intrusions qui automatise la protection de votre serveur contre les tentatives d’accès malveillantes.

Qu’est-ce que Fail2Ban?

Fail2Ban est un logiciel de sécurité qui surveille les fichiers journaux (logs) de votre serveur pour détecter les modèles d’échecs de connexion et d’autres signaux d’alerte. Lorsqu’il détecte plusieurs tentatives de connexion infructueuses en peu de temps, il bannit l’adresse IP source à l’aide des règles de pare-feu, empêchant ainsi les attaquants potentiels de nuire à votre système.

Installation de Fail2Ban

Fail2Ban est disponible dans les dépôts officiels de la plupart des distributions Linux. Voici comment vous pouvez l’installer sur les distributions les plus courantes:

  • Debian/Ubuntu: sudo apt update && sudo apt install fail2ban
  • CentOS/RHEL: sudo yum install epel-release && sudo yum install fail2ban
  • Fedora: sudo dnf install fail2ban

Configuration de Fail2Ban pour SSH

Une fois Fail2Ban installé, le prochain pas est de le configurer pour protéger le service SSH. Fail2Ban utilise des « jails » pour gérer ses politiques de bannissement pour différents services. Voici les étapes pour configurer un jail pour SSH:

  1. Créer un fichier de configuration personnalisé: Pour éviter de perdre vos configurations lors des mises à jour de Fail2Ban, il est recommandé de créer un fichier de configuration dans le répertoire /etc/fail2ban/jail.d/.
    sudo nano /etc/fail2ban/jail.d/ssh.conf
  2. Configurer le jail pour SSH: Ajoutez les lignes suivantes à votre fichier de configuration:
    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 3
    bantime = 1d

    # Paramètres de récidive
    bantime.increment = true
    bantime.findtime = 1w # La période de temps pendant laquelle les bannissements sont comptés pour l’incrémentation
    bantime.factor = 2 # Le facteur de multiplication de la durée de bannissement bantime.maxtime = 1y # La durée maximale de bannissement

Conseils de Sécurité Additionnels pour SSH

  • Utiliser des Clés SSH: Authentifiez-vous à l’aide de clés SSH au lieu de mots de passe pour augmenter la sécurité.
  • Changer le port SSH par défaut: Modifier le port par défaut de SSH (22) à un autre port peut aider à réduire les attaques de force brute.
  • Utiliser PermitRootLogin no: Désactivez la connexion SSH directe en tant que root.

Surveillance et Maintenance

Fail2Ban nécessite une surveillance régulière pour s’assurer qu’il fonctionne correctement. Vous pouvez vérifier l’état de Fail2Ban et des jails spécifiques avec les commandes suivantes :

sudo fail2ban-client status
sudo fail2ban-client status sshd

Conclusion

Intégrer Fail2Ban dans votre stratégie de sécurité SSH est une étape cruciale pour protéger vos serveurs Linux contre les accès non autorisés. En combinant Fail2Ban avec d’autres pratiques de sécurité SSH, vous pouvez significativement augmenter la robustesse de votre infrastructure contre les attaques externes.