Como negar acesso a contas do AD desabilitadas via kerberos no pam_krb5?

10

Eu tenho um diretório AD / Linux / LDAP / KRB5 funcional e configuração de autenticação, com um pequeno problema. Quando uma conta é desativada, a autenticação por chave pública SSH ainda permite o login do usuário.

É claro que os clientes do kerberos podem identificar uma conta desativada, pois kinit e kpasswd retornam "Credenciais de clientes foram revogadas" sem mais nenhuma senha / interação.

O PAM pode ser configurado (com "UsePAM yes" no sshd_config) para não permitir logins para contas desabilitadas, onde a autenticação é feita por publickey? Isso não parece funcionar:

account     [default=bad success=ok user_unknown=ignore] pam_krb5.so

Por favor, não introduza o winbind na sua resposta - nós não o usamos.

    
por Phil 30.05.2012 / 16:39

3 respostas

4

Fiz mais alguns trabalhos de casa e estou respondendo a minha própria pergunta.

No pam_krb5 do RedHat ( pam_krb5-2.3.14-1/src/acct.c ), a menos que o módulo tenha participado do estágio de autenticação, a função pam_sm_acct_mgmt () retorna PAM_IGNORE ou PAM_USER_UNKNOWN dependendo da configuração do módulo. Portanto, seria necessário alterar o código pam_krb5 para fazer o que eu quero.

A resposta de JohnGH é uma boa solução; usando atributos "proxy" para transmitir o mesmo significado, como quebrar o shell ou adicionar a um grupo "usuários com deficiência".

Outra solução alternativa (parcialmente testada) é definir uma data de expiração da conta no passado e usar um módulo como pam_unix para falhar nas verificações de conta. Isso usa o LDAP, em vez do KRB5, mas consulta o mesmo diretório de usuários gerenciado centralmente.

    
por 14.06.2012 / 18:03
4

Li em outro lugar outras pessoas pedindo SSH para serem "corrigidas" para que as contas bloqueadas não possam ser conectadas via SSH. (veja o bug do Debian 219377) Este pedido foi rejeitado como um patch "porque quebra algumas expectativas de usuários [que estavam] acostumados a passar -l apenas bloqueando o passwd". (veja o bug do Debian 389183) por exemplo. Algumas pessoas QUEREM poder bloquear contas de logins de senha, mas ainda permitir acesso à chave SSH.

O PAM não negará a autenticação de chave SSH a contas que acabaram de ser bloqueadas (por exemplo, devido a tentativas inválidas de senha, porque a autenticação de chave SSH foi projetada para não prestar atenção ao campo de senha, que é de onde as contas normalmente são bloqueadas. )

Eu entendo que a entrada hash da senha é implicitamente verificada no tempo pam_authenicate (), e não no tempo pam_acct_mgmt (). pam_unix.so pam_sm_acct_mgmt () não verifica o hash da senha, e o pam_authenticate () não é chamado durante a autenticação da chave pública.

Se sua intenção for desabilitar centralmente as contas do login, há outras soluções possíveis, incluindo:

Alterando o shell de login.

(re) movendo seu arquivo authorized_keys.

Outra opção para negar o acesso pode ser o uso de DenyGroups ou AllowGroups no sshd_config. (em seguida, adicionar o usuário a um grupo "sshdeny" ou removê-lo de um grupo "sshlogin" para desativá-lo do login.) (leia aqui: link )

De link Eu li: "O problema é pam_unix verifica apenas as datas de validade da entrada de sombra, não o conteúdo do campo de hash da senha." Se isso for verdade, a expiração da conta, em vez de bloqueá-la, fará o que você precisa?

A resposta à sua pergunta é possivelmente "sim, se você estiver desabilitando-a em outro lugar que não o campo de senha"

    
por 12.06.2012 / 15:00
2

A autenticação baseada em chave SSH é independente do PAM. Você tem as seguintes soluções:

  • desativa a autenticação baseada em chave em sshd_config
  • altere e recompile o sshd e adicione um gancho para que a autenticação baseada em chave também verifique se a conta é válida via pam.

Se você quiser usar o login sem senha via kerberos, certifique-se de que:

  • você não está usando o pam para o sshd
  • você tem o kerberos configurado corretamente. Por exemplo. você pode fazer kinit -k host/server1.example.com@DOMAIN
  • você sshd está configurado para usar o gssapi:

    KerberosAuthentication yes GSSAPIAutenticação sim GSSAPICleanupCredentials yes UsePAM não

  • você usa um cliente ssh kerberizado como o PuTTY v0.61 ou mais recente.

por 11.06.2012 / 20:02