Percebo uma coisa estranha (bem, na minha opinião) sobre senhas. Por exemplo, se eu digitar uma senha incorreta durante o login, haverá um atraso de alguns segundos antes que o sistema me informe. Quando tento Sudo
com uma senha errada, também tenho que esperar antes que o Shell diga "Desculpe, tente novamente".
Eu me pergunto por que demora tanto para "reconhecer" uma senha incorreta? Isso foi visto em várias distribuições que eu uso (e até no OSX), então acho que não é uma coisa específica da distribuição.
Isso é uma coisa de segurança, na verdade não está demorando muito para perceber. 2 vulnerabilidades que isso resolve:
isso limita as tentativas de logon, o que significa que alguém não pode atacar o sistema o mais rápido possível, tentando quebrá-lo (1 milhão de tentativas por segundo? não sei).
Se o fizesse assim que verificasse que suas credenciais estavam incorretas, você poderia usar o tempo necessário para invalidar suas credenciais para ajudar a adivinhar se parte de suas credenciais estava correta, reduzindo drasticamente o tempo de adivinhação.
para evitar essas duas coisas, o sistema leva uma certa quantidade de tempo para fazer isso, acho que você pode configurar o tempo de espera com o PAM ( consulte a resposta de Michaels ).
Engenharia de segurança ( 2ed, Amazon | 1ed, free ) fornece uma explicação muito melhor desses problemas.
Isso é intencional, tentar limitar a força bruta. Geralmente, você pode modificá-lo procurando o FAIL_DELAY
entrada de configuração em /etc/login.defs
e alterando seu valor (o meu é 3
segundos por padrão), embora o comentário nesse arquivo pareça que o PAM imporá pelo menos um 2
segundo atraso, não importa o que
Nos sistemas linux modernos, o motivo é que o pam_unix.so impõe esse atraso. Conforme relatado anteriormente, isso pode ser configurado em até dois segundos, alterando FAIL_DELAY
no /etc/login.defs
. Se você deseja reduzir ainda mais o atraso, é necessário 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
, você acha 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 minha distribuição Linux (Arch) configura as coisas, da mesma maneira system-auth
arquivo é incluído por system-remote-login
, usado pelo sshd.
Embora seja seguro eliminar o atraso no Sudo, porque ele é registrado, usado apenas por usuários locais e ignorável pelos invasores locais de qualquer maneira, você provavelmente não deseja eliminar esse atraso para logins remotos. Obviamente, você pode corrigi-lo escrevendo um Sudo personalizado que não inclui 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 interromper o processo e ficar frustrados. Obviamente, você ainda pode parar o Sudo com Ctrl-Z, pois o Sudo não captura o SIGTSTP e, depois de interrompê-lo, você pode matá-lo com o kill -9 (SIGKILL). É apenas chato de fazer. Isso significa que um ataque automatizado pode disparar sudos em pseudo-terminais a uma taxa super alta. Mas o atraso frustra usuários legítimos e os incentiva a suspender suas conchas raiz em vez de sair deles para evitar ter que usar o Sudo novamente.