Comment protéger SSH avec Fail2Ban : guide du débutant
Plongez dans notre guide du débutant sur la sécurisation de SSH avec Fail2Ban pour protéger votre serveur contre les accès non autorisés et les attaques par force brute.
Nous commencerons par une métaphore. Imaginez une forteresse ; Même si ses hauts murs et ses portes solides sont construits pour empêcher les visiteurs indésirables d'entrer, il y aura toujours ceux qui tenteront d'escalader les murs ou de forcer les portes.
De même, notre forteresse numérique, notamment les serveurs, est confrontée à des menaces persistantes. L'une de ces portes est le Secure Shell (SSH), un protocole permettant un accès à distance sécurisé. Ainsi, tout comme les portails nécessitent des gardes et des systèmes de surveillance, le SSH nécessite des mesures de protection contre les intrus potentiels.
Entrez Fail2Ban – une sentinelle vigilante pour vos serveurs. C’est l’un des boucliers les plus efficaces contre les tentatives d’accès non autorisées, notamment par force brute.
Qu’est-ce que Fail2Ban ?
Fail2Ban est un outil logiciel open source qui protège contre les activités malveillantes automatisées telles que les attaques de serveur par force brute.
L’une de ses qualités les plus précieuses est qu’elle agit de manière proactive. Autrement dit, au lieu d’attendre une attaque, Fail2Ban propose une approche consistant à identifier et bloquer les menaces potentielles en temps réel.
La beauté de Fail2Ban réside dans sa simplicité et son adaptabilité. Bien qu’il soit fréquemment utilisé pour sécuriser SSH, ses fonctionnalités ne se limitent pas à ce protocole. Fail2Ban peut être configuré pour surveiller les fichiers journaux de n'importe quel service, offrant ainsi une solution polyvalente pour des services tels que FTP, SMTP, les serveurs Web, etc.
De plus, il consomme peu de ressources et n’alourdit donc pas les performances de votre serveur – une considération essentielle pour les serveurs gérant de gros volumes de transactions ou d’interactions.
Comment fonctionne Fail2Ban
Tout d’abord, expliquons brièvement ce qu’est exactement le forçage brutal. Il s'agit d'un type de cyberattaque dans lequel un attaquant tente d'accéder sans autorisation à un système ou à un service en essayant systématiquement toutes les combinaisons possibles de mots de passe ou de clés de chiffrement jusqu'à ce que la bonne soit trouvée.
À cet égard, Fail2Ban surveille les journaux du serveur à la recherche de modèles spécifiques indiquant de telles attaques – par exemple, des tentatives de connexion infructueuses répétées dans un court laps de temps.
Basé sur des règles prédéfinies ou personnalisées, appelées « filtres », Fail2Ban identifie les modèles suggérant une attaque et déclenche automatiquement une action prédéfinie. La solution la plus courante consiste à interdire temporairement l’adresse IP de l’attaquant, à appliquer des règles de pare-feu et à empêcher de nouvelles tentatives malveillantes.
Une caractéristique clé de Fail2Ban est le concept de « prisons » – des politiques de surveillance spécifiques pour les services serveur qui combinent un filtre avec des actions. Vous pouvez avoir différentes prisons pour différents services (par exemple, une pour SSH, une autre pour FTP, etc.).
Chaque prison spécifie le fichier journal à surveiller, les modèles à rechercher et les actions à entreprendre lorsque ces modèles sont détectés.
Après avoir été bannie pendant une période définie, l'adresse IP est automatiquement levée, permettant aux utilisateurs légitimes qui auraient pu être temporairement bloqués en raison, par exemple, de l'oubli de leur mot de passe, de réessayer.
Installation de Fail2Ban
Installons maintenant Fail2Ban, ce qui est assez simple, comme vous pouvez le voir. Veuillez utiliser la commande appropriée à la distribution Linux que vous utilisez.
Debian/Ubuntu
sudo apt install fail2ban
Aucune autre action n'est nécessaire ici puisque le service est automatiquement activé après l'installation.
RHEL/Rocky Linux/Alma Linux/Fedora
Puisque Fail2Ban réside dans le référentiel EPEL, vous devez d'abord l'ajouter à votre système si vous ne l'avez pas déjà fait :
sudo dnf install epel-release
Installez ensuite Fail2Ban et activez le démarrage du service au démarrage :
sudo dnf install fail2ban
sudo systemctl enable fail2ban
ouvertSUSE
sudo zypper in fail2ban
Configuration de Fail2Ban pour SSH
Une fois installé, le fichier de configuration principal est « /etc/fail2ban/jail.conf. « Cependant, les meilleures pratiques ne recommandent pas de modifier cela directement. Au lieu de cela, nous allons le copier en en créant un nouveau avec l'extension « .local. " Pourquoi? C'est simple : cela évite les problèmes de fusion lors de la mise à niveau. Alors faisons-le.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Lorsque le service Fail2Ban est redémarré, le fichier « jail.conf » est lu en premier, puis « jail.local », les paramètres ultérieurs remplaçant les précédents.
Passons maintenant à la partie amusante : la configuration de Fail2Ban. Ouvrez le fichier « jail.local » avec votre éditeur de texte de terminal préféré.
sudo nano /etc/fail2ban/jail.local
Faites défiler vers le bas jusqu'à ce que vous trouviez la partie « [sshd] », qui ressemble à celle ci-dessous.
Remplacez le contenu existant de la partie « [sshd] » par ceci :
[sshd]
enabled = true
port = ssh
backend = systemd
maxretry = 3
findtime = 300
bantime = 3600
ignoreip = 127.0.0.1
La version finale devrait ressembler à celle présentée ci-dessous. Besoin de savoir ce que signifient ces options ? N’ayez crainte – nous avons expliqué chacun d’entre eux en détail plus bas.
- enabled – Détermine si la prison est active ou non.
- port – Spécifie le(s) port(s) que vous souhaitez surveiller. Accepte n'importe quel numéro de port ou nom de service, par exemple « ssh », « 22 », « 2200 », etc.
- backend – Spécifie le backend utilisé pour obtenir la modification du fichier. Étant donné que tous les systèmes Linux modernes reposent sur le service de journalisation de systemd, nous le spécifions comme notre backend.
- maxretry – Le nombre de tentatives infructueuses depuis une adresse IP avant qu'elle ne soit bannie.
- findtime – La période (en secondes) pendant laquelle les échecs de connexion « maxretry » entraîneront un bannissement. Nous avons précisé 300 secondes, soit 5 minutes.
- bantime – La durée (en secondes) pendant laquelle une adresse IP doit rester bannie. Dans notre cas, nous avons défini 3 600 secondes, ce qui signifie que dans l'heure suivante, toutes les requêtes ultérieures (pas seulement vers le port SSH) provenant de cette adresse IP seront bloquées.
- ignoreip – Vous permet de mettre sur liste blanche les adresses IP qui doivent être ignorées. Cela garantit que les adresses IP données, même si elles dépassent le nombre de tentatives infructueuses spécifiées dans « maxretry », ne seront pas bloquées.
C'est ça. Enregistrez le fichier et quittez, puis redémarrez le service Fail2Ban.
sudo systemctl restart fail2ban
Ensuite, assurez-vous que tout va bien avec le service.
sudo systemctl status fail2ban
Tests et surveillance
Essayez de vous connecter plusieurs fois via SSH depuis un autre ordinateur au serveur sur lequel vous venez d'installer et de configurer Fail2Ban. Après la troisième tentative infructueuse, votre accès devrait être bloqué.
Vous vous demandez probablement déjà comment surveiller ce qui se passe à l’intérieur. La bonne nouvelle est que Fail2Ban dispose d'excellents outils intégrés à cet effet. Pour voir les adresses IP actuellement bloquées, exécutez la commande suivante :
sudo fail2ban-client status sshd
Si nous allons encore plus loin et examinons les règles iptables, nous constaterons que Fail2Ban a créé une chaîne (« f2b-sshd ») dans laquelle il a inséré les adresses IP en question. Ils en seront automatiquement supprimés après le délai d'attente indiqué dans l'option « bantime ».
sudo iptables -L -n
Pour débloquer manuellement toutes les adresses IP dans toutes les prisons, exécutez ce qui suit :
sudo fail2ban-client unban --all
Pour une adresse distincte uniquement, votre commande doit être :
sudo fail2ban-client unban <ip-address>
Bien entendu, la commande fail2ban-client
propose de nombreuses autres options, vous offrant de grandes possibilités et flexibilité. Si vous êtes curieux de les voir en détail, regardez ici.
Important à garder à l’esprit
Bien que Fail2Ban soit un excellent logiciel, il n'est pas aussi avantageux lorsque votre serveur SSH est configuré uniquement pour l'authentification par clé publique, car il est impossible de se connecter avec un mot de passe. Plus d’informations à ce sujet ici.
De plus, n’oubliez pas qu’il ne remplace pas la sécurité qu’un VPN vous offrirait pour accéder à votre serveur. Ainsi, sauf nécessité absolue, évitez d’exposer vos services à Internet.
Conclusion
La sécurisation de votre serveur doit toujours être une priorité absolue. SSH étant un point d’entrée courant pour de nombreux attaquants, il nécessite une attention particulière.
Grâce à ce guide, nous avons parcouru les étapes simples d'installation et de configuration de Fail2Ban pour surveiller et protéger SSH contre les tentatives de connexion malveillantes répétées.
En configurant cet outil, vous ajoutez une couche de sécurité essentielle qui peut prévenir les intrusions potentielles. Alors, restez en sécurité, restez à jour et soyez toujours proactif dans la stratégie de défense de votre serveur.
Merci pour votre temps ! Enfin, nous vous recommandons de consulter la page GitHub de Fail2Ban pour obtenir une aide supplémentaire ou des informations précieuses.