web-dev-qa-db-fra.com

Prévenir les attaques de force brute contre SSH?

Quel outil ou quelle technique utilisez-vous pour prévenir les attaques de force brute contre votre port SSH? J'ai remarqué dans mes journaux de sécurité que j'ai des millions de tentatives de se connecter en tant que divers utilisateurs via SSH.

C'est sur une boîte FreeBSD, mais j'imagine que ce serait applicable n'importe où.

49
grieve

Voici un bon post sur ce sujet de Rainer Wichmann.

Il explique les avantages et les inconvénients sur ces méthodes pour le faire:

  • Mots de passe forts
  • Authentification RSA
  • Utiliser 'iptables' pour bloquer l'attaque
  • Utiliser le journal sshd pour bloquer les attaques
  • En utilisant tcp_wrappers pour bloquer les attaques
  • Porteur
25
paulgreg

J'utilise échec1ban qui verra une sortie IP après plusieurs tentatives infructueuses pour une durée configurable.

Combinez ceci avec des tests de force de mot de passe (utilisant -John (John the Ripper)) pour assurer des attaques de force brute ne réussira pas.

39
Brent

Ons petite chose que vous pouvez faire est d'utiliser quelque chose comme des dénonhosts:

http://denyhosts.sourceforge.net/

Il utilise les hôtes intégrées/hôtes.Deny pour bloquer les abuseurs SSH.

24
hernan43
  • Modifiez le port utilisé (AS Trent mentionné)
  • nécessite des touches de cryptage au lieu de mots de passe. http://novosial.org/openssh/publickey-auth/
  • BlackList Attaque IPS
  • Whitelist Utilisateurs connus pour empêcher la liste noire accidentelle. (comme Samiuela mentionné)
16
Chris Ballance

L'un des moyens les plus faciles d'éviter ces attaques est de changer le port que SSHD écoute

15
trent

Comme le souligne Chris, utilisez des touches de cryptage au lieu de mots de passe.

Ajouté à cela:

  • utilisez un whitelist dans la mesure du possible.

Combien de personnes ou d'emplacements (avec des IP publiques flottants) avez-vous vraiment besoin d'accéder à vos connexions ssh publics?

Selon le nombre d'hôtes publiques SSH, vous maintenez et si vous pouvez réduire vos critères de connexion généraux, il peut s'agir d'une configuration plus simple et maintenable pour limiter l'accès à quelques hôtes externes.

Si cela fonctionne pour vous, il peut vraiment simplifier votre administration.

12
samt

En plus des autres bonnes suggestions, une chose très facile à faire est de limiter les connexions entrantes. Limiter à 3 connexions par minute par IP:

iptables -A INPUT -p tcp --dport 22 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m limit --limit 3/min --limit-burst 3 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
11
sherbang

Utilisez l'option "allowUsers" dans sshd_config pour vous assurer que seuls un petit ensemble d'utilisateurs peut se connecter du tout. Tous les autres seront rejetés, même si leur nom d'utilisateur et leur mot de passe sont corrects.

Vous pouvez même restreindre les utilisateurs à la connexion à partir de un hôte particulier.

par exemple.,

AllowUsers user1 [email protected]

Cela réduira l'espace de recherche et évitera ces anciens utilisateurs qui ont été laissés accidentellement portées ou activés (bien que cela soit bien sûr désactivé de toute façon, il s'agit d'un moyen facile de les empêcher d'être utilisé pour une entrée basée sur SSH).

Cela n'arrête pas entièrement les attaques de la force brute, mais contribue à réduire le risque.

6
David Gardner

Utilisez quelque chose comme ça avec PF:

table <ssh-brute> persist
Bloc en journal rapide de l'étiquette SSH_Brute
[.____] transmettre sur $ ext_if proto TCP à ($ ext_if) port ssh moduler l'état \
[.____] (Max-SRC-Conn-Taux 3/10, surcharge Flush Global)

3
CycyX

Knocking est une méthode assez solide de garder ce genre de chose. Légèrement fidèlement, parfois agaçant, mais cela rend certainement le problème disparaître.

2
Luke

Suite à Suggestion limitant du taux de Sherbang , la durée du retard est importante. En augmentant le délai entre les groupes de 3 tentatives de connexion de 2 minutes à 20 minutes, le nombre d'adresses IP différentes qui a fait plus de trois tentatives de connexion supprimées, comparant deux semaines de longues-périodes sur une machine à mine, à partir de 44 tentatives de 3 . Aucune de ces trois adresses n'a continué à essayer pendant plus de 11 heures.

Très anecdotal, mais auth.log est devenu beaucoup plus lisible pour moi ...

2
Charles Stewart

Le contexte est important, mais je recommanderais quelque chose comme ça:

  • Depuis que vous utilisez FreeBSD, envisagez d'exécuter le pare-feu PF et d'utiliser ses fonctionnalités de limitation de taux de connexion solides. Cela vous permettra d'envoyer les forceurs brute à une liste noire si elles se connectent de manière fréquente.
  • Si cette case doit être accessible du monde extérieur, envisagez d'utiliser une règle de RDR PF pour ne pas autoriser le trafic du port 22, mais de rediriger un port obscur. Ce qui signifie, vous devez vous connecter au port 9122 au lieu de 22. C'est obscur, mais il empêche les heurts
  • envisagez de passer à une authentification basée sur des clés uniquement, faisant des attaques de dictionnaires inutiles
2
Michael Gorsuch

installer Ossec. Non seulement informatique surveille les connexions répétées, il entrera dans un bloc temporaire avec IPtables pour l'IP délinquante. Et à la fin, il vous enverra un rapport indiquant les détails. Il enregistre tout ce qui est sympa. Somone a une fois essayé plus de 8000 noms de connexion pour vous connecter. J'ai analysé les bûches et j'ai reçu une belle liste d'utilisateurs hors de transaction;)

1
Marcin