Em sistemas Linux modernos, a razão é que o pam_unix.so impõe tal atraso. Conforme relatado anteriormente, isso pode ser configurado em até dois segundos, alterando FAIL_DELAY
em /etc/login.defs
. Se você quiser reduzir ainda mais o atraso, você deve dar ao pam_unix.so a opção "nodelay". Por exemplo, no meu sistema, se você rastrear as inclusões a partir de /etc/pam.d/sudo
, verá que precisa editar a seguinte linha de /etc/pam.d/system-auth
:
auth required pam_unix.so try_first_pass nullok
e mude para isso:
auth required pam_unix.so try_first_pass nullok nodelay
Infelizmente, a maneira como meu Linux distro (arch) configura as coisas, esse mesmo arquivo system-auth
é incluído por system-remote-login
, que é usado pelo sshd.
Embora seja seguro eliminar o atraso no sudo, porque isso é registrado, usado apenas por usuários locais e ignorado por atacantes locais de qualquer maneira, você provavelmente não quer eliminar esse atraso para logins remotos. É claro que você pode corrigi-lo escrevendo um sudo personalizado que não inclua apenas os arquivos de autenticação do sistema compartilhados.
Pessoalmente, acho que o atraso no sudo (e ignorar o SIGINT) é um grande erro. Isso significa que os usuários que sabem que digitaram incorretamente a senha não podem matar o processo e ficarem frustrados. Claro, você ainda pode parar o sudo com Ctrl-Z, já que o sudo não pega o SIGTSTP, e depois de pará-lo você pode matá-lo com kill -9 (SIGKILL). É chato de fazer. Isso significa que um ataque automatizado poderia disparar sudos em pseudo-terminais a uma taxa super alta. Mas o atraso frustra os usuários legítimos e os encoraja a suspender seus shells de raiz em vez de deixá-los para evitar ter que suar novamente.