Problemas de PAM com ação "success = N"

2

Eu quero executar um script quando ocorrer uma falha de autenticação. Mas, com o seguinte arquivo conf, a autenticação sempre falha mesmo quando as credenciais apropriadas são fornecidas.

auth       [success=1 new_authtok_reqd=ok ignore=ignore default=bad] pam_unix.so
auth       optional     pam_exec.so  /usr/bin/log_failure
password   required     pam_unix.so  md5

A autenticação funciona alterando "success = 1" para "success = ok", embora obviamente o script de falha seja sempre executado.

Eu tentei pesquisar o código-fonte de _pam_dispatch_aux e ele não parece retornar o retorno da primeira regra quando não há uma regra para a qual ir. Se eu adicionar outra regra para que haja algo para pular, tudo funciona.

auth       [success=1 new_authtok_reqd=ok ignore=ignore default=bad]  pam_unix.so 
auth       optional     pam_exec.so  /usr/bin/log_failure
auth       optional     pam_exec.so  /usr/bin/noop
password   required     pam_unix.so  md5

Estou fazendo algo errado no meu arquivo de conf, tentando algo que não deveria funcionar, ou há algum bug?

    
por vader90210 04.11.2013 / 20:54

1 resposta

2

Isso está funcionando conforme o esperado.

success=n não contribui para o retorno da pilha do módulo. O resultado é que uma autenticação bem-sucedida contra pam_unix.so retorna falha (porque nada retorna um success de ok ou done ) e uma autenticação com falha retorna falha (como esperado, porque pam_exec.so retornando sucesso neste contexto seria muito ruim).

Tente o seguinte:

auth       sufficient   pam_unix.so
auth       optional     pam_exec.so  /usr/bin/log_failure
password   required     pam_unix.so  md5

sufficient significa "pare aqui se tivermos sucesso, caso contrário, continue". Isso deve ter o efeito desejado.

Se / usr / bin / log_failure é um script, a segurança em mim estaria mais inclinada a tentar isso ...

auth       sufficient   pam_unix.so
auth       [default=ignore]     pam_exec.so  /usr/bin/log_failure
password   required     pam_unix.so  md5

Isso impede que um sucesso retornado por log_failure permita um login.

    
por 05.11.2013 / 18:14

Tags