it-swarm-eu.dev

Pourquoi y a-t-il un gros retard après avoir entré un mauvais mot de passe?

Je remarque une chose étrange (enfin, selon moi) à propos des mots de passe. Par exemple, si je tape un mot de passe incorrect lors de la connexion, il y aura un délai de quelques secondes avant que le système me le dise. Lorsque j'essaie de Sudo avec un mot de passe incorrect, je dois également attendre avant que le shell ne dise "Désolé, réessayez".

Je me demande pourquoi il faut autant de temps pour "reconnaître" un mot de passe incorrect? Cela a été vu sur plusieurs distributions que j'utilise (et même OSX), donc je pense que ce n'est pas une chose spécifique à la distribution.

93
phunehehe

C'est une question de sécurité, il ne faut pas longtemps pour le réaliser. 2 vulnérabilités que cela résout:

  1. cela limite les tentatives de connexion, ce qui signifie que quelqu'un ne peut pas marteler le système aussi vite qu'il peut en essayant de le casser (1M tente une seconde? Je ne sais pas).

  2. S'il l'a fait dès qu'il a vérifié que vos informations d'identification étaient incorrectes, vous pouvez utiliser le temps qu'il a fallu pour invalider vos informations d'identification pour vous aider à deviner si une partie de vos informations d'identification était correcte, ce qui réduit considérablement le temps de devinettes.

pour éviter ces 2 choses, le système prend juste un certain temps pour le faire, je pense que vous pouvez configurer le temps d'attente avec PAM ( voir la réponse de Michaels ).

L'ingénierie de la sécurité ( 2ed, Amazon | 1ed, free ) donne une bien meilleure explication de ces problèmes.

94
xenoterracide

C'est intentionnel, pour essayer de limiter le forçage brut. Vous pouvez généralement le modifier en recherchant le FAIL_DELAY entrée de configuration dans /etc/login.defs et en modifiant sa valeur (la mienne est 3 secondes par défaut), bien que le commentaire dans ce fichier donne l'impression que PAM appliquera au moins un 2 deuxième retard quoi qu'il arrive

42
Michael Mrozek

Sur les systèmes Linux modernes, la raison en est que pam_unix.so impose un tel retard. Comme indiqué précédemment, cela peut être configuré jusqu'à deux secondes en modifiant FAIL_DELAY dans /etc/login.defs. Si vous souhaitez réduire davantage le délai, vous devez donner à pam_unix.so l'option "nodelay". Par exemple, sur mon système, si vous tracez les inclusions à partir de /etc/pam.d/Sudo, vous constatez que vous devez modifier la ligne suivante de /etc/pam.d/system-auth:

auth      required  pam_unix.so     try_first_pass nullok

et changez-le en ceci:

auth      required  pam_unix.so     try_first_pass nullok nodelay

Malheureusement, la façon dont ma distribution Linux (Arch) configure les choses, c'est la même chose system-auth le fichier est inclus par system-remote-login, qui est utilisé par sshd.

Bien qu'il soit sûr d'éliminer le retard sur Sudo, car il est enregistré, uniquement utilisé par les utilisateurs locaux et contournable par les attaquants locaux de toute façon, vous ne voudrez probablement pas éliminer ce délai pour les connexions à distance. Vous pouvez bien sûr y remédier en écrivant un Sudo personnalisé qui n'inclut pas seulement les fichiers d'authentification système partagés.

Personnellement, je pense que le retard sur Sudo (et en ignorant SIGINT) est une grosse erreur. Cela signifie que les utilisateurs qui savent qu'ils ont mal saisi le mot de passe ne peuvent pas tuer le processus et être frustrés. Bien sûr, vous pouvez toujours arrêter Sudo avec Ctrl-Z, car Sudo n'attrape pas SIGTSTP, et après l'avoir arrêté, vous pouvez le tuer avec kill -9 (SIGKILL). C'est juste ennuyeux à faire. Cela signifie donc qu'une attaque automatisée pourrait déclencher des sudos sur des pseudo-terminaux à un rythme très élevé. Mais le retard frustre les utilisateurs légitimes et les encourage à suspendre leurs shell root au lieu de les quitter pour éviter d'avoir à refaire Sudo.

12
user3188445