GNU/Linux >> Tutoriels Linux >  >> Linux

Comment bloquer les attaques par force brute SSH à l'aide de SSHGUARD

SSHGuard est un démon open source qui protège les hôtes des attaques par force brute. Pour ce faire, il surveille et regroupe les journaux système, détecte les attaques et bloque les attaquants à l'aide de l'un des principaux pare-feu Linux :iptables, FirewallD, pf et ipfw.

Initialement conçu pour fournir une couche de protection supplémentaire pour le service OpenSSH, SSHGuard protège également une large gamme de services tels que Vsftpd et Postfix. Il reconnaît plusieurs formats de journaux, notamment Syslog, Syslog-ng et les fichiers journaux bruts.

SSHGuard est assez similaire à Fail2ban sauf qu'il est écrit en C (Fail2ban est écrit en Python), est plus léger et offre moins de fonctionnalités.

Dans ce guide, nous vous montrerons comment installer et configurer SSHGuard pour bloquer les attaques par force brute SSH sur votre serveur Linux.

Étape 1 :Installez SSHGuard sur Linux

Nous commençons par l'installation de SSHGuard sur Linux.

Installer SSHGuard sur Debian/Ubuntu

Tout d'abord, mettez à jour les listes de packages, puis installez SSHGuard à partir des référentiels par défaut à l'aide du gestionnaire de packages apt.

$ sudo apt update
$ sudo apt install sshguard

Une fois installé, le service SSHGuard démarre automatiquement, et vous pouvez le vérifier à l'aide de la commande :

$ sudo systemctl status sshguard

Installer SSHGuard sur les systèmes Yum/RHEL

Pour les distributions basées sur RHEL telles que CentOS, commencez par installer le référentiel EPEL comme indiqué dans la commande ci-dessous.

$ sudo yum install epel-release

OU

$ sudo dnf install epel-release

Une fois EPEL en place, installez SSHGuard à l'aide du gestionnaire de packages dnf.

$ sudo dnf install sshguard

Une fois installé, démarrez et configurez SSHGuard pour qu'il démarre au démarrage ou au redémarrage du système.

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

Assurez-vous de vérifier que SSHGuard fonctionne comme prévu.

$ sudo systemctl status sshguard

Étape 2 :Configuration de SSHGuard sous Linux

SSHGuard surveille activement les fichiers journaux /var/log/auth.log, /var/log/secure systemd et syslog-ng pour les tentatives de connexion infructueuses.

Pour chaque tentative de connexion infructueuse, l'hôte distant est banni pendant une durée limitée qui, par défaut, est fixée à 120 secondes. Par la suite, le délai d'interdiction augmente d'un facteur de 1,5 à chaque tentative de connexion infructueuse successive.

L'heure à laquelle les hôtes incriminés sont bannis, en plus d'autres paramètres, est spécifiée dans le fichier sshguard.conf. Vous pouvez accéder au fichier de configuration à l'aide de l'éditeur vim comme indiqué.

$ sudo vim /etc/sshguard/sshguard.conf

Sur les distributions basées sur RHEL, le fichier de configuration se trouve dans le chemin suivant.

$ sudo vim /etc/sshguard.conf

Voici un exemple du fichier de configuration lorsqu'il est visualisé depuis Ubuntu / Debian.

Zoom sur les principales options :

  • Le BACK-END La directive pointe vers le chemin complet de l'exécutable backend. Dans cet exemple, nous voyons qu'IPtables est défini comme backend de pare-feu par défaut.
  • Le SEUIL La directive bloque les attaquants lorsque leur score d'attaque dépasse la valeur spécifiée.
  • Le BLOCK_TIME L'option est le nombre de secondes pendant lesquelles un attaquant est bloqué après chaque tentative de connexion infructueuse successive. Par défaut, il est défini sur 120 après la première tentative. Cela augmente avec chaque tentative de connexion infructueuse successive.
  • Le DETECTION_TIME L'option fait référence au temps en secondes pendant lequel l'attaquant est enregistré ou mémorisé par le système avant que son score ne soit réinitialisé.
  • Le fichier WHITELIST_ l'option pointe vers le chemin complet du fichier de liste blanche qui contient les hôtes qui ne sont pas censés être sur la liste noire.

Étape 3 :Configurez SSHGuard pour bloquer les attaques par force brute SSH

Pour parer aux attaques par force brute, vous devez configurer les pare-feu suivants pour qu'ils fonctionnent avec sshguard.

Bloquer les attaques SSH à l'aide d'UFW

Si UFW est installé et activé sur votre système Ubuntu / Debian, modifiez le fichier /etc/ufw/before.rules.

$ sudo vim etc/ufw/before.rules

$ sudo vim etc/ufw/before.rules

Ajoutez les lignes suivantes juste après la section "allow all on loopback".

# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

# hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

Enregistrez le fichier et redémarrez UFW.

$ sudo systemctl restart ufw

Essayez maintenant de vous connecter au serveur à partir d'un système différent avec les mauvaises informations d'identification et notez que vous serez bloqué pendant 120 secondes après la première tentative de connexion infructueuse.

Vous pouvez le vérifier en consultant le fichier journal auth.log.

$ sudo tail -f  /var/log/auth.log

Après la prochaine tentative de journalisation infructueuse, le temps de blocage passe à 240 secondes, puis à 480 secondes, puis à 960 secondes, et ainsi de suite.

Bloquer les attaques SSH à l'aide d'un pare-feu

Si vous utilisez firewalld, assurez-vous qu'il est configuré et activé. Exécutez ensuite la commande suivante pour activer sshguard sur votre zone préférée.

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

Pour appliquer les modifications, rechargez Firewalld et sshguard.

$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard

Vérifiez ensuite la règle comme suit :

$ sudo firewall-cmd —-info-ipset=sshguard4

Bloquer les attaques SSH à l'aide d'Iptables

Si vous utilisez toujours Iptables, commencez par créer une nouvelle règle de chaîne pour sshguard dans Iptables afin de commencer à bloquer les invités indésirables.

# iptables -N sshguard

Ensuite, mettez à jour la chaîne INPUT pour diriger le trafic vers sshguard et bloquer tout le trafic provenant de tiers malveillants.

# iptables -A INPUT -j sshguard

Pour bloquer des ports spécifiques tels que SSH, POP et IMAP contre les abuseurs, exécutez la commande :

# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

Et enfin, enregistrez la règle pour que les modifications entrent en vigueur.

# iptables-save > /etc/iptables/iptables.rules

Étape 4 :Comment mettre sur liste blanche les hôtes bloqués par SSH

Pour ajouter un hôte bloqué à la liste blanche, indiquez simplement son nom d'hôte ou son adresse IP dans le fichier de liste blanche qui se trouve dans :

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

Ensuite, assurez-vous de redémarrer le démon sshguard et le backend du pare-feu pour que les modifications s'appliquent.

Dans ce guide, nous avons montré comment bloquer les attaques SSH Bruteforce à l'aide de SSHGuard sur les systèmes Linux.

Veuillez vous référer à notre page d'accueil pour d'autres guides.


Linux
  1. Ssh - Comment se connecter à un PC via un autre PC en utilisant Ssh ?

  2. Ssh – Comment accélérer la connexion Ssh trop lente ?

  3. Comment Ssh vers un serveur en utilisant un autre serveur ? ?

  4. Comment restaurer la base de données MySQL à l'aide de la commande en SSH ?

  5. Comment configurer le bloc GeoIP à l'aide d'Apache

Comment effectuer une sauvegarde Linux à distance à l'aide de SSH

Comment :cPHulk Brute Force Protection sur cPanel et WHM

Comment générer et utiliser une clé SSH avec PuTTY

Comment bloquer une adresse IP en utilisant .htaccess ?

Comment chiffrer les périphériques de bloc à l'aide de LUKS sous Linux

Comment créer une machine virtuelle distante à l'aide du pilote SSH générique docker-machine