Comment modifier le délai qui survient après la saisie d'un mot de passe incorrect?

32

Après avoir saisi un mot de passe incorrect à l’invite de connexion, un délai d’environ 3 secondes est nécessaire. Comment puis-je changer cela sur un système Linux avec PAM?

Shawn J. Goff
la source
1
J'ai besoin d'un délai du point de vue de la sécurité, mais le délai par défaut est plutôt gênant
Mike Pennington
3
Cela a été intéressant. Je vais peut-être écrire un module qui permet N essais sans délai, suivi d'un nombre quelconque d'essais avec un délai long.
Shawn J. Goff
1
Au lieu d’un nouveau module (suggéré dans mon précédent commentaire), j’ai utilisé pam_unixavec l’ nodelayoption et pam_tally2avec deny=5 unlock_time=15; cela permet 5 tentatives immédiates, mais refuse l'accès (même avec un mot de passe réussi) pendant 15 secondes. J'ai toujours l'intention d'essayer d'écrire le modèle décrit, mais maintenant c'est un projet de back-burner, car cela ne conviendrait pas si votre accès principal au système est basé sur un réseau, car il rend triviale une attaque par le DOS.
Shawn J. Goff
1
si vous êtes préoccupé par un déni de service réseau après expiration du délai imparti, utilisez fail2ban ... utilisez-le même si vous pensez être en sécurité :-). J'utilise deux jours d'interdiction
Mike Pennington le

Réponses:

21

Je suppose que vous utilisez Linux et pam. Le retard est probablement causé par pam_faildelay.so. Vérifiez votre configuration de pam en /etc/pam.dutilisant pam_faildelay, par exemple:

# Enforce a minimal delay in case of failure (in microseconds).
# (Replaces the `FAIL_DELAY' setting from login.defs)
# Note that other modules may require another minimal delay. (for example,
# to disable any delay, you should add the nodelay option to pam_unix)
auth       optional   pam_faildelay.so  delay=3000000

Pour changer la durée, ajustez le paramètre de délai. Si vous souhaitez vous débarrasser du retard, vous pouvez supprimer / commenter la ligne complète.

Une autre source de retard peut être pam_unix.so. Pour désactiver le délai causé par pam_unix.soajouter le nodelayparamètre, et éventuellement ajouter une ligne appelant pam_faildelay.sopour ajouter un délai (variable), par exemple:

auth       optional   pam_faildelay.so  delay=100000
Ulrich Dangel
la source
2
Il n'y a aucune mention de retard partout /etc/pam.d/*. La chose la plus proche que je vois est pam_tally.soce qui permet le verrouillage après un certain nombre de tentatives. Mais j'ai n /etc/login.defs, ce qui pourrait être ce dont j'ai besoin.
Shawn J. Goff
@ ShawnJ.Goff pam_tally.sone cause pas de retard pour autant que je sache. Une autre source pour les sourds peut être pam_unix.so- vous pouvez le désactiver avec l' nodelayoption - voir linux.die.net/man/8/pam_unix pour plus de détails
Ulrich Dangel le
1
L'ajout de l' nodelayoption pam_unix.soet l'ajout d'une nouvelle entrée avec pam_faildelay.so delay=$some_numberme permettent de définir ce que je veux. Merci!
Shawn J. Goff
2
Sous Fedora 23, je devais désactiver le pam_unix.sodélai et commencer à utiliser pam_faildelay.socelui décrit par @ ShawnJ.Goff. Cependant, dans la plupart des pam.dconfigurations, " Ce fichier est généré automatiquement. Les modifications apportées à l'utilisateur seront détruites lors de la prochaine exécution de authconfig. " Alors, où puis-je configurer le délai de manière permanente?
Jozxyqk
11

Vous devez passer le nodelayparamètre à la auth pam_unix.so.

En fonction de votre authentification, l'emplacement où vous devez définir le paramètre varie. Cependant, la plupart des distributions Linux ont quelque chose comme /etc/pam.d/system-authce qui est inclus dans tous les fichiers.

Ainsi, par exemple, /etc/pam.d/system-authvous pourriez avoir une ligne qui ressemble à ceci:

auth            sufficient      pam_unix.so try_first_pass nullok

Cela devrait être changé pour:

auth            sufficient      pam_unix.so try_first_pass nullok nodelay

Le pam_unix.somodule est ce qui effectue l'authentification contre /etc/passwdet /etc/shadow. Si vous utilisez LDAP ou un autre mot de passe, vous devriez probablement toujours le définir nodelay, pam_unix.socar c’est ce qui contrôle l’invite (en cas d’ pam_unix.soéchec de l’authentification, il ne fait en général que passer le mot de passe obtenu au module suivant).

Vous pouvez en savoir plus pam_unix.soen faisantman pam_unix

Patrick
la source
Sur mon système system-authn'existait pas; c'était /etc/common-auth. Merci!
Luc