Eu não verifiquei novamente a implementação (*) , mas se o atraso definido por pam_faildelay
for implementado como uma suspensão simples, isso fará com que uma única tentativa de login demore mais tempo (assim irritando o usuário), mas não limitará o número de tentativas simultâneas de login.
Isso desfaz um pouco a intenção do atraso, já que alguém tentando forçar sua senha poderia simplesmente abrir centenas ou milhares de tentativas de login simultaneamente. Na maioria das vezes, eles gastariam seu tempo dormindo, então a carga no sistema pode nem ser perceptível.
O que você precisa fazer é limitar a taxa de tentativas de login, não a duração de uma única tentativa. Para um serviço de rede, eu sugeriria limitá-lo no lado da rede (digamos, com iptables
no Linux), mas não tenho uma solução para o PAM.
(O aspecto político disso, os tamanhos e limites de senha, pode ser mais adequado para security.SE .)
(* Porque não tive tempo. O atraso parece ser definido através do PAM, e pode ir para o aplicativo a ser implementado. Mas é improvável que seja implementado como um loop ocupado, e qualquer programa que implementa limitação de taxa)