Como se altera o atraso que ocorre após a inserção de uma senha incorreta?

32

Depois de inserir uma senha incorreta em um prompt de login, há um atraso de aproximadamente 3 segundos. Como posso mudar isso em um sistema Linux com PAM?

Shawn J. Goff
fonte
1
Tenho a necessidade de um atraso de uma perspectiva de segurança, mas o atraso padrão é muito chato
Mike Pennington
3
Isso tem sido interessante; talvez eu escreva um módulo que permita N tentativas sem atraso, seguido de qualquer número de tentativas com um longo atraso.
Shawn J. Goff
1
Em vez de um novo módulo (sugerido no meu comentário anterior), usei pam_unixcom a nodelayopção e pam_tally2com deny=5 unlock_time=15; isso permite 5 tentativas imediatas, mas nega o acesso (mesmo com uma senha bem-sucedida) por 15 segundos. Ainda pretendo tentar escrever o modelo descrito, mas agora é um projeto em segundo plano, porque isso não seria adequado se o seu acesso principal ao sistema fosse baseado em rede, pois torna um ataque do DOS trivial.
Shawn J. Goff
1
se você estiver preocupado com um DoS de rede devido a tempos limite, use fail2ban ... de fato, use-o mesmo se achar que está seguro :-). eu uso duas vezes dia ban
Mike Pennington

Respostas:

21

Presumo que você esteja usando Linux e pam. O atraso é provavelmente causado por pam_faildelay.so. Verifique sua configuração de pam /etc/pam.dusando pam_faildelay, por exemplo:

# 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

Para alterar a hora, ajuste o parâmetro de atraso. Se você quiser se livrar do atraso, pode excluir / comentar a linha completa.

Outra fonte para o atraso pode ser pam_unix.so. Para desativar o atraso causado pelo pam_unix.soacréscimo do nodelayparâmetro e, opcionalmente, adicionar uma chamada de linha pam_faildelay.sopara adicionar um atraso (variável), por exemplo:

auth       optional   pam_faildelay.so  delay=100000
Ulrich Dangel
fonte
2
Não há menção de atraso em nenhum lugar /etc/pam.d/*. A coisa mais próxima que vejo é pam_tally.soque permite o bloqueio após algumas tentativas. Mas eu tenho n /etc/login.defs, que pode ser o que eu preciso.
Shawn J. Goff
@ ShawnJ.Goff pam_tally.sonão causa um atraso tanto quanto eu sei. Outra fonte para o dealy pode ser pam_unix.so- você pode desativá-lo com a nodelayopção - veja linux.die.net/man/8/pam_unix para mais detalhes
Ulrich Dangel
1
Adicionar a nodelayopção pam_unix.soe adicionar uma nova entrada pam_faildelay.so delay=$some_numberpermite definir o que eu quiser. Obrigado!
Shawn J. Goff
2
Ao executar o fedora 23, tive que desativar o pam_unix.soatraso e começar a usar o pam_faildelay.soque o @ ShawnJ.Goff diz. No entanto, a maioria das pam.dconfigurações tem " Este arquivo é gerado automaticamente. As alterações do usuário serão destruídas na próxima vez que o authconfig for executado. " Então, onde posso configurar permanentemente o atraso?
Jozxyqk
11

Você precisa passar o nodelayparâmetro para o auth pam_unix.so.

Dependendo de como você está se autenticando, o local em que você precisa definir o parâmetro varia. No entanto, a maioria das distrubtions do Linux tem algo parecido com o /etc/pam.d/system-authque está incluído em todos os arquivos diferentes.

Assim, por exemplo, /etc/pam.d/system-authvocê pode ter uma linha parecida com esta:

auth            sufficient      pam_unix.so try_first_pass nullok

Isso deve ser alterado para:

auth            sufficient      pam_unix.so try_first_pass nullok nodelay

O pam_unix.somódulo é o que executa a autenticação contra /etc/passwde /etc/shadow. Se você estiver usando LDAP ou algum outro backend senha, você provavelmente ainda deve ser a criação nodelaydo pam_unix.soque é o que controla o alerta (quando pam_unix.sonão auth, que normalmente só passa a senha que obteve para o próximo módulo).

Você pode ler mais sobre pam_unix.sofazendoman pam_unix

Patrick
fonte
No meu sistema system-authnão existia; que era /etc/common-auth. Obrigado!
Luc