GNU/Linux >> Tutoriels Linux >  >> Linux

Comment arrêter/empêcher la force brute SSH

Solution 1 :

Comment y accéder ?

La raison pour laquelle vous ne pouvez pas accéder à votre compte n'est pas claire.

Si votre machine est attaquée ou surchargée, vous devriez discuter avec votre fournisseur de la possibilité de restreindre l'accès (restrictions IP) ou de mettre le serveur hors ligne (déconnexion d'Internet).

Vous pouvez également avoir besoin d'un accès hors bande pour lequel votre fournisseur peut être en mesure de vous aider.

Si quelqu'un a compromis votre serveur, vous devrez peut-être restaurer à partir de sauvegardes ou utiliser une image de récupération.

Comment prévenir les attaques sur votre serveur, notamment SSH

meilleur moyen d'empêcher les connexions par force brute ?

Ne les laissez pas accéder à votre machine en premier lieu ! Il existe de nombreuses façons d'arrêter les tentatives de force brute avant qu'elles n'atteignent votre hôte, ou même au niveau SSH.

Cela dit, protéger votre système d'exploitation avec quelque chose comme fail2ban est une excellente idée. http://en.wikipedia.org/wiki/Fail2ban

Fail2ban est similaire à DenyHosts ... mais contrairement à DenyHosts qui se concentre sur SSH, fail2ban peut être configuré pour surveiller tout service qui écrit les tentatives de connexion dans un fichier journal, et au lieu d'utiliser /etc/hosts.deny uniquement pour bloquer les adresses IP/hôtes, fail2ban peut utiliser Netfilter/iptables et TCP Wrappers /etc/hosts.deny.

Il existe un certain nombre de techniques de sécurité importantes à prendre en compte pour empêcher les connexions par force brute :

SSH :

  • Ne pas autoriser root à se connecter
  • Ne pas autoriser les mots de passe SSH (utiliser l'authentification par clé privée)
  • N'écoutez pas sur toutes les interfaces
  • Créez une interface réseau pour SSH (par exemple, eth1), différente de l'interface à partir de laquelle vous traitez les requêtes (par exemple, eth0)
  • N'utilisez pas de noms d'utilisateur courants
  • Utilisez une liste d'autorisation et n'autorisez que les utilisateurs nécessitant un accès SSH
  • Si vous avez besoin d'un accès Internet... Limitez l'accès à un ensemble limité d'adresses IP. Une adresse IP statique est idéale, mais la verrouiller sur x.x.0.0/16 est préférable à 0.0.0.0/0
  • Si possible, trouvez un moyen de vous connecter sans accès Internet, de cette façon vous pouvez refuser tout le trafic Internet pour SSH (par exemple, avec AWS, vous pouvez obtenir une connexion directe qui contourne Internet, c'est ce qu'on appelle la connexion directe)
  • Utilisez un logiciel comme fail2ban pour détecter toute attaque par force brute
  • Assurez-vous que le système d'exploitation est toujours à jour, en particulier les packages de sécurité et ssh

Candidature :

  • Assurez-vous que votre application est toujours à jour, en particulier les packages de sécurité
  • Verrouillez les pages "admin" de votre application. La plupart des conseils ci-dessus s'appliquent également à la zone d'administration de votre application.
  • Mot de passe Protégez votre zone d'administration, quelque chose comme htpasswd pour la console Web projettera toutes les vulnérabilités d'application sous-jacentes et créera une barrière supplémentaire à l'entrée
  • Verrouillez les autorisations de fichiers. Les "dossiers de téléchargement" sont connus pour être des points d'entrée de toutes sortes de choses désagréables.
  • Envisagez de placer votre application derrière un réseau privé et d'exposer uniquement votre équilibreur de charge frontal et un jumpbox (il s'agit d'une configuration typique dans AWS utilisant des VPC)

Solution 2 :

comment puis-je supprimer cette attaque et empêcher les attaques suivantes

Habituellement, je change le port ssh par défaut de 22 à un autre comme 1122. Cela empêche de nombreuses attaques automatiques du bot, mais une simple analyse de port peut le détecter. Quoi qu'il en soit :

vi /etc/ssh/sshd_config

et modifiez Port 22 au port 1122 , mais cela ne suffit pas.

Règles IPTables automatiques sur la force brute

j'utilise log2iptables https://github.com/theMiddleBlue/log2iptables au lieu de Fail2ban, car il s'agit d'un simple script Bash qui analyse n'importe quel fichier journal avec une expression régulière et exécute iptables. Par exemple, lorsque 5 correspondances se produisent, log2iptables supprime l'adresse IP spécifique. C'est cool parce qu'il utilise l'API Telegram et peut m'envoyer un message sur mon téléphone quand il trouve un problème :)

j'espère que cela vous aidera !

Solution 3 :

Je viens de mettre cela ensemble, exécuté toutes les 15 minutes en tant que cronjob, etc. :

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done

Linux
  1. Comment changer le port SSH sous Linux

  2. Comment configurer le tunnel SSH

  3. Comment configurer des clés SSH

  4. Ssh – Comment Tcp-keepalive fonctionne-t-il dans Ssh ?

  5. Comment arrêter d'ajouter l'IP d'EC2 àknown_hosts pour ssh ?

Comment changer le port SSH sur VPS

Comment créer un alias SSH sous Linux

Comment autoriser ou refuser l'accès SSH à un utilisateur ou à un groupe particulier sous Linux

Comment empêcher SSH d'expirer

Comment arrêter un serveur de spam

Comment empêcher SSH de se déconnecter s'il est inactif depuis un certain temps