SSH funciona com a senha Kerberos expirada

5

Eu configurei o SSH - logon único usando o kerberos V5. Quando uma senha de usuário expirou, ela retorna ' Aviso: a senha expirou. ' e permite que o usuário faça o login! Eu até fiz alterações no /etc/pam.d/password-auth tal que pam_krb5.so vem acima de pam_unix.so :

Pilha de autorizações:

auth        requisite     pam_krb5.so uid >= 500

#Google authentication configuration module
auth        [success=1 default=ignore] pam_access.so accessfile=/etc/security/access-local.conf
auth        requisite  pam_google_authenticator.so


auth        [success=1 default=ignore]  pam_unix.so nullok try_first_pass
auth        required      pam_deny.so
auth        requisite     pam_succeed_if.so uid >= 0 quiet

Pilha de contas:

account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_krb5.so uid >= 500
account required pam_permit.so

Por favor, sugerir quaisquer alterações para impedir que os usuários com senhas expiradas de login.

LOG:

krb5kdc.log

Jun 03 11:34:29 <HOST-NAME> krb5kdc[1752](info): AS_REQ (4 etypes {18 17 16 23}) 192.168.181.40: CLIENT KEY EXPIRED: [email protected] for krbtgt/[email protected], Password has expired
Jun 03 11:34:47 <HOST-NAME> krb5kdc[1752](info): AS_REQ (4 etypes {18 17 16 23}) 192.168.181.40: ISSUE: authtime 1464933887, etypes {rep=18 tkt=18 ses=18}, [email protected] for kadmin/[email protected]

/var/log/auth.log

/var/log/auth.log : /var/log/auth.log : pam_krb5[24516]: authentication succeeds for 'testyoga' ([email protected]) –
    
por Chandira Mouli 02.06.2016 / 12:39

1 resposta

3

Editar:

Com base no conteúdo da pilha account fornecida, parece que pam_krb5.so será ignorado se pam_localuser.so for bem-sucedido. Essa é a causa mais provável de as restrições de vencimento da senha não serem aplicadas.

Veja o que sabemos até agora:

  • As mensagens registradas confirmam que a senha do usuário expirou.
  • O pam_krb5 é bem-sucedido na autenticação, apesar disso.

Eu suspeito que o seu problema é que você não tem a pilha account configurada corretamente. Existem algumas implementações diferentes de pam_krb5 lá fora, e nem todas implementam a verificação de envelhecimento da senha dentro da pilha auth :

link

When a user logs in, the module's authentication function performs a simple password check and, if possible, obtains Kerberos 5 credentials, caching them for later use. When the application requests initialization of credentials (or opens a session), the usual ticket files are created. When the application subsequently requests deletion of credentials or closing of the session, the module deletes the ticket files. When the application requests account management, if the module did not participate in authenticating the user, it will signal libpam to ignore the module. If the module did participate in authenticating the user, it will check for an expired user password and verify the user's authorization using the .k5login file of the user being authenticated, which is expected to be accessible to the module.

O trabalho da pilha account é impor políticas de acesso, independentemente de a autenticação ter sido bem-sucedida. Isso é importante, pois a pilha auth é frequentemente ignorada ao usar a autenticação baseada em chave. Cabe aos desenvolvedores individuais decidir se o envelhecimento da senha também deve resultar em uma falha ao chamar o módulo no contexto auth .

Por outro lado, a implementação de pam_krb5 mantida por Russ Allbery (a minha preferida) teria captado isso na pilha auth .

link

account

Provides an implementation of pam_acct_mgmt(). All it does is do the same authorization check as performed by the pam_authenticate() implementation described above.

    
por 03.06.2016 / 22:18