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?
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:
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 authpam_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:
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
pam_unix
avec l’nodelay
option etpam_tally2
avecdeny=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.Réponses:
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.d
utilisantpam_faildelay
, par exemple: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é parpam_unix.so
ajouter lenodelay
paramètre, et éventuellement ajouter une ligne appelantpam_faildelay.so
pour ajouter un délai (variable), par exemple:la source
/etc/pam.d/*
. La chose la plus proche que je vois estpam_tally.so
ce 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.pam_tally.so
ne cause pas de retard pour autant que je sache. Une autre source pour les sourds peut êtrepam_unix.so
- vous pouvez le désactiver avec l'nodelay
option - voir linux.die.net/man/8/pam_unix pour plus de détailsnodelay
optionpam_unix.so
et l'ajout d'une nouvelle entrée avecpam_faildelay.so delay=$some_number
me permettent de définir ce que je veux. Merci!pam_unix.so
délai et commencer à utiliserpam_faildelay.so
celui décrit par @ ShawnJ.Goff. Cependant, dans la plupart despam.d
configurations, " 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?Vous devez passer le
nodelay
paramètre à laauth
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-auth
ce qui est inclus dans tous les fichiers.Ainsi, par exemple,
/etc/pam.d/system-auth
vous pourriez avoir une ligne qui ressemble à ceci:Cela devrait être changé pour:
Le
pam_unix.so
module est ce qui effectue l'authentification contre/etc/passwd
et/etc/shadow
. Si vous utilisez LDAP ou un autre mot de passe, vous devriez probablement toujours le définirnodelay
,pam_unix.so
car 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.so
en faisantman pam_unix
la source
system-auth
n'existait pas; c'était/etc/common-auth
. Merci!