Comment limiter l'impact des sondes ssh?

13

Mon serveur Web est constamment attaqué par diverses adresses IP. Ils essaient cinq mots de passe, puis changent l'adresse IP.

J'ai effectué divers verrouillages comme l'utilisation de clés ssh et ne pas autoriser les mots de passe, ni autoriser la connexion root à distance.

Puis-je faire quelque chose pour me débarrasser de ces tentatives d'attaque? À défaut, y a-t-il des moyens de défense spécifiques à mettre en place?

JW01
la source
1
Signaler pour une migration vers security.se où il est un peu plus sur le sujet
Rory Alsop
1
@Rory Il y a une différence entre "un peu plus quelqu'un d'autre sur le sujet" et "hors sujet ici" - cela semble assez clairement sur le sujet ici
Michael Mrozek
Pas de soucis @Michael. Il y a eu un ping de Gilles pour venir le regarder car c'était peut-être hors sujet ici.
Rory Alsop
@ Rory Ok, je vais lui en parler; il est généralement assez bon pour me convaincre de quelque chose que je pense est {off, on} le sujet est en fait {on, off} le sujet
Michael Mrozek
1
Ma question semble avoir été modifiée au-delà de la reconnaissance. Dans ma question initiale, j'essayais vraiment de savoir s'il était courant que chaque site subisse des attaques par force brute - c'est-à-dire que c'est une réalité. Cela a été répondu par Matteo avec "C'est en effet une réalité de la vie.". La deuxième partie de la question demandait ce que je pouvais faire pour arrêter activement ces attaques en dehors de la mise en place de défenses . Cela aurait été une question secondaire pertinente si seulement certains sites avaient souffert d'attaques par force brute. Bruce a répondu avec son idée de tarpit. Je n'ai pas vraiment demandé de conseils défensifs.
JW01

Réponses:

14

C'est en effet une réalité de la vie. Vous pouvez installer des outils pour filtrer les hôtes qui vous attaquent après quelques tentatives infructueuses.

DenyHosts analyse vos fichiers journaux et ajoute automatiquement des attaquants à votre /etc/hosts.denyfichier.

Consultez la documentation sur la façon de le configurer selon vos besoins.

Mise à jour : quelques points importants suggérés dans les commentaires

  • assurez-vous de configurer correctement les outils en tant que DenyHosts car vous pouvez vous verrouiller (par exemple, vous pouvez configurer une machine ou un réseau qui n'est jamais filtré)

  • DenyHosts n'augmente pas la sécurité de votre système: il filtre uniquement les attaques au niveau IP (cela peut réduire la charge sur les petites machines et réduire la taille des fichiers journaux mais rien de plus)

Matteo
la source
1
Aaah. Je commençais à penser que j'étais spécial. Merci de m'avoir mis au clair.
JW01
S'étendant sur Matteo, votre question est presque répondue exactement refs Q1.3 denyhosts.sourceforge.net/faq.html#1_0
whoami
@whoami Merci pour le lien, un joli résumé. Bien qu'une chose qui me passe toujours à l'esprit quand je vois l' utilisation d'une astuce de port différente est « comment savez-vous que le port alternatif que vous choisissez n'est pas déjà utilisé par autre chose? '
JW01
1
Soyez prudent avec DenyHosts et des outils similaires, car ils introduisent une complexité supplémentaire, c'est-à-dire qu'ils peuvent créer des problèmes de sécurité par eux-mêmes, cf. le 2e commentaire sur unix.stackexchange.com/questions/2942/…
maxschlepzig
1
Soyez également prudent avec DenyHosts car vous pourriez vous verrouiller hors de votre machine. Un simple apt-get install denyhostsm'a enfermé hors de ma machine.
Naftuli Kay
15

J'ai suivi ces instructions pour ajouter un délai de 7 secondes à chaque tentative de connexion SSH avec un mot de passe incorrect. J'ai fait de mon sshd un "tarpit" pour les scanners à force brute.

Je devrais également ajouter que j'ai mon journal tarsh sshd modifié les mots de passe échoués. Cela peut ne pas être entièrement éthique, car cela donne à l'utilisateur root un aperçu de ce que les utilisateurs réguliers saisissent mal comme leurs propres mots de passe, mais comme je suis le seul "vrai" utilisateur, je pense que c'est OK.

Je ne l'ai pas exécuté sur un port non standard, car l'aspect "tarpit" ne ferait perdre de temps à personne.

Bruce Ediger
la source
Utilisez également un port non standard et utilisez des clés au lieu de mots de passe. Ensuite, ils n'ont presque plus d'espoir (à condition qu'ils n'obtiennent pas les clés, qui devraient toutes être dotées d'un mot de passe de toute façon).
Callum Rogers
C'est une bonne réponse car elle a un peu une approche «offensive» plutôt que d'être purement «défensive» qui, je pense, ajoute à la morale.
JW01
9

Si seul un petit nombre de personnes ont besoin de SSH sur le système, envisagez de déplacer SSH vers un port non standard (par exemple 6422, 8080, etc.). Cela seul réduira considérablement le nombre de tentatives de connexion (et vous protégera éventuellement de Ver basé sur l'exploit SSH, par exemple).

Coin
la source
3
+1 Plutôt utile car il limite la gêne, mais ne le confondez pas avec une mesure de sécurité - il s'agit d'un équivalent plus proche d'une porte moustiquaire contre les moustiques que d'un verrou de sécurité.
Piskvor a quitté le bâtiment le
1
+1 C'est également une économie sur les ressources du serveur.
Xeoncross
6

Approuve la réponse de @ Matteo; ce que vous voyez, ce sont essentiellement des milliers de systèmes zombies exécutant une attaque par force brute distribuée sur votre serveur car il y a un site Web en cours d'exécution, ce qui signifie qu'il peut y avoir des utilisateurs qui pourraient avoir un compte de connexion qui pourrait être deviné effort minimal de la part du script kiddie - il a un programme qui ordonne aux milliers de zombies de faire des tentatives de bruteforce sur quelques centaines d'hôtes de sites Web à la fois et juste de compiler une liste des retours réussis.

De même, vous pouvez parfois voir beaucoup de permations de "http://your.web.host/phpmyadmin/" dans vos /var/log/apache2/access.logfichiers; ce sont des analyses automatisées pour les moyens les plus courants de configurer PHPMyAdmin, et tenteront un certain nombre d'exploits connus si l'un d'eux est trouvé (c'est d'ailleurs la raison pour laquelle j'ai commencé à dire aux clients d'utiliser le site PMA que j'ai personnellement créé et garder à jour plutôt que d'installer leur propre version et oublier de la mettre à jour, mais maintenant nous sommes sur une tangente).

Mis à part l'envoi de la commande d'origine, cela ne lui coûte même pas de temps ou de bande passante; c'est du feu et oublie.

Un autre logiciel très utile pour des situations comme celle-ci est fail2ban , qui utilise iptables pour bloquer les tentatives de connexion après plusieurs ouvertures de session clairement fausses ou d'autres tentatives d'exploitation.

Shadur
la source
4

Essayez de configurer Fail2ban . Il fournit un moyen très flexible de rechercher les tentatives ayant échoué et il dispose de modèles pour SSH, HTTP et les services communs.

Fail2ban mettra à jour iptables en fonction de vos actions .. Je l'adore.

pseudo
la source
3

Vous pouvez utiliser IPTABLES pour arrêter le trafic sans exécuter un démon comme Fail2Ban ou DenyHosts.

#  Allows SSH connections (only 4 attempts by an IP every 3 minutes, drop the rest to prevent SSH attacks)
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --set --name DEFAULT --rsource
-A INPUT -p tcp -m tcp --dport 22 -m state --state NEW -m recent --update --seconds 180 --hitcount 4 --name DEFAULT --rsource -j DROP
-A INPUT -p tcp -m state --state NEW --dport 22 -j ACCEPT
Xeoncross
la source
2

Si vous pouvez le gérer, je trouve que la meilleure façon de gérer des trucs comme celui-ci est d'utiliser un VPN. De cette façon, la seule chose qu'ils peuvent cibler est le VPN. Il ne devrait pas y avoir de services ouverts sur le monde dans son ensemble, à l'exception de ceux qui sont nécessaires à "tout le monde" pour accéder, comme votre serveur Web. Tout le reste doit être bloqué par le pare-feu. Maintenant, la seule chose que vous devez vraiment vous soucier de la sécurité est votre VPN. Si vous le pouvez, obtenez une IP statique pour les ordinateurs à partir desquels vous gérez vos serveurs et verrouillez votre VPN à cette adresse IP spécifique. C'est vraiment le seul moyen d'empêcher les gens d'essayer de forcer les mots de passe par force brute.

Kibbee
la source
0

Sshguard fonctionne très bien. Je l'utilise avec iptables.

Alexandre
la source