Comment configurer un IPS (Fail2ban) pour se protéger de différentes attaques
IPS ou Intrusion Prevention System est une technologie utilisée dans la sécurité réseau pour examiner le trafic réseau et prévenir différentes attaques en détectant les entrées malveillantes. Outre la simple détection des entrées malveillantes comme le fait le système de détection d'intrusion, il empêche également le réseau des attaques malveillantes. Il peut empêcher le réseau de la force brute, du DoS (Denial of Service), du DDoS (Distributed Denial of Service), des Exploits, des vers, des virus et d'autres attaques courantes. Les IPS sont placés juste derrière le pare-feu et peuvent envoyer des alarmes, supprimer des paquets malveillants et bloquer les adresses IP incriminées. Dans ce didacticiel, nous utiliserons Fail2ban, qui est un progiciel de prévention des intrusions, pour ajouter une couche de sécurité contre différentes attaques par force brute.
Comment fonctionne Fail2ban
Fail2ban lit les fichiers journaux (par exemple /var/log/apache/error_log) et obtient les adresses IP incriminées qui tentent trop de mots de passe échoués ou qui recherchent des exploits. Fondamentalement, Fail2ban met à jour les règles de pare-feu pour bloquer différentes adresses IP sur le serveur. Fail2ban fournit également des filtres que nous pouvons utiliser pour un service spécifique (par exemple, apache, ssh, etc.).
Installation de Fail2ban
Fail2ban n'est pas pré-installé sur Ubuntu, donc avant de l'utiliser, nous devons l'installer.
ubuntu@ubuntu:~$ sudo apt-get install fail2ban
Après avoir installé Fail2ban, démarrez et activez le service Fail2ban à l'aide de la ligne de commande.
ubuntu@ubuntu:~$ sudo systemctl enable fail2ban
Vérifiez maintenant l'état du service fail2ban pour confirmer s'il a démarré ou non.
Configuration de Fail2ban pour SSH
Nous pouvons configurer Fail2ban en modifiant le fichier /etc/fail2ban/jail.conf. Avant de le modifier, faites une sauvegarde de ce fichier.
Nous allons maintenant configurer Fail2ban pour empêcher le service sshd d'entrer des entrées malveillantes. Ouvrez le fichier /etc/fail2ban/jail.local dans votre éditeur préféré.
Accédez à la section [default] et entrez les paramètres de configuration dans la section [default].
ignoreip = 127.0.0.1/8 192.168.18.10/32
bantime = 300
maxretry = 2
findtime = 600
ignoreip est la liste des masques cidr, des adresses IP ou des hôtes DNS séparés par un espace. Ajoutez vos adresses IP de confiance à cette liste, et ces adresses IP seront sur liste blanche et ne seront pas bloquées par fail2ban même si elles effectuent une attaque par force brute sur le serveur.
bantime est le temps pendant lequel une adresse IP sera bloquée après avoir effectué un nombre spécifique de tentatives infructueuses sur le serveur.
maxretry est le nombre maximal de tentatives infructueuses après lequel une adresse IP est bloquée par fail2ban pendant une durée spécifique.
findtime est la durée pendant laquelle si un hôte fait des tentatives maxretry infructueuses, il sera bloqué.
Après avoir configuré les paramètres ci-dessus, nous allons maintenant configurer le service sur lequel les règles ci-dessus vont s'appliquer. Par défaut, Fail2ban a des filtres prédéfinis pour différents services, nous n'avons donc pas besoin de saisir d'entrées spécifiques pour les services. Nous activons ou désactivons uniquement différents services dans le fichier de configuration. Ouvrez le fichier /etc/fail2ban/jail.local dans votre éditeur préféré.
Recherchez la section [sshd] dans le fichier et entrez les paramètres suivants dans la section.
enable = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
enabled définit si ce service est protégé par fail2ban ou non. Si enabled est vrai, alors le service est protégé ; sinon, il n'est pas protégé.
port définit le port de service.
filter fait référence au fichier de configuration que fail2ban utilisera. Par défaut, il utilisera le fichier /etc/fail2ban/filter.d/sshd.conf pour le service ssh.
logpath définit le chemin vers les journaux, fail2ban surveillera pour protéger le service contre différentes attaques. Pour le service ssh, les journaux d'authentification peuvent être trouvés dans /var/log/auth.log, donc fail2ban surveillera ce fichier journal et mettra à jour le pare-feu en détectant les tentatives de connexion infructueuses.
maxretry définit le nombre de tentatives de connexion infructueuses avant d'être bloqué par le fail2ban.
Après avoir appliqué la configuration ci-dessus pour fail2ban, redémarrez le service pour enregistrer les modifications.
ubuntu@ubuntu:~$ sudo systemctl status fail2ban.service
Test de Fail2ban
Nous avons configuré fail2ban pour protéger notre système contre les attaques par force brute sur le service ssh. Nous allons maintenant faire des tentatives de connexion infructueuses sur notre système à partir d'un autre système pour vérifier si fail2ban fonctionne ou non. Après avoir fait quelques tentatives de connexion infructueuses maintenant, nous allons vérifier les journaux fail2ban.
Nous pouvons voir qu'après des tentatives de connexion infructueuses, l'adresse IP a été bloquée par fail2ban.
Nous pouvons obtenir une liste de tous les services pour lesquels fail2ban est activé en utilisant la commande suivante.
La figure ci-dessus montre que nous avons activé fail2ban uniquement pour le service sshd. Nous pouvons obtenir plus d'informations sur le service sshd en spécifiant le nom du service dans la commande ci-dessus.
Fail2ban débannira automatiquement l'adresse IP bannie après le bantime, mais nous pouvons débannir n'importe quelle adresse IP à tout moment en utilisant la ligne de commande. Cela donnera plus de contrôle sur fail2ban. Utilisez la commande suivante pour débloquer l'adresse IP.
Si vous essayez de débloquer une adresse IP qui n'est pas bloquée par fail2ban, il vous dira simplement que l'IP n'est pas bloquée.
Conclusion
Pour un administrateur système ou un ingénieur en sécurité, maintenir la sécurité des serveurs est un défi de taille. Si votre serveur est protégé par le mot de passe, et non par une paire de clés publique et privée, votre serveur est alors plus vulnérable aux attaques par force brute. Ils peuvent accéder à votre système en appliquant différentes combinaisons de mots de passe. Fail2ban est un outil qui peut empêcher les attaquants de lancer différents types d'attaques, y compris les attaques par force brute et les attaques DDoS sur votre serveur. Dans ce tutoriel, nous avons expliqué comment nous pourrions utiliser Fail2ban pour protéger notre serveur de différentes attaques. Nous pouvons également utiliser Fail2ban pour protéger d'autres services tels que apache, nginx, etc.