Restringindo logins de conta usando LDAP e PAM

14

Eu esperava que alguns gurus do PAM / LDAP pudessem me ajudar aqui. Recentemente eu configurei um diretório LDAP no Ubuntu Server para manter contas tanto para meus clientes (para uso com sistemas baseados na web) quanto para funcionários (que precisarão fazer o login via SSH).

A autenticação LDAP está funcionando perfeitamente. No entanto, não consigo fazer com que as restrições da conta funcionem: as contas de equipe terão IDs entre 2001 e 2999 e serão membros do grupo ssh-users para permitir que eles efetuem login nos servidores.

As restrições em questão estão em /etc/ldap.conf e são pam_min_uid , pam_max_uid e pam_groupdn .

pam_groupdn contém o DN completo no meu grupo ssh-users . pam_min_uid = 2000 e pam_max_uid = 2999 .

Agora, consegui fazê-los funcionar adicionando:

account [success=1 default=ignore] pam_ldap.so

acima da linha pam_unix.so em /etc/pam.d/common-account . No entanto, as contas Unix locais NÃO podem entrar: o servidor SSH mata a conexão assim que elas tentam.

Eu configurei o módulo pam_ldap.so para sufficient no arquivo acima, mas, em seguida, os usuários inválidos recebem uma mensagem dizendo que não podem fazer login, mas os registra de qualquer maneira.

Então, como posso definir essas restrições de conta para usuários LDAP, permitindo ainda que usuários do UNIX façam login?

Como você provavelmente pode imaginar que sou um novato no PAM, embora eu tenha conseguido fazer o módulo "automaticamente fazer diretórios caseiros" funcionar: -)

Muito obrigado, Andy

    
por Andy Shellam 06.02.2010 / 22:33

3 respostas

11

O PAM tem a capacidade de restringir o acesso com base em uma lista de controle de acesso (pelo menos no Ubuntu) que, como a resposta do kubanskamac (+1), considera grupos como grupos posix, sejam armazenados em LDAP, /etc/group ou NIS.

/etc/security/access.conf é o arquivo da lista de acesso. No meu arquivo, eu coloquei no final:

-:ALL EXCEPT root sysadmin (ssh-users):ALL

Isso nega todos, exceto root, sysadmin e no grupo ssh-users (que está no LDAP) onde quer que eles façam login (o segundo ALL ).

Em seguida, no meu arquivo de conta do PAM (este é um módulo de conta), adiciono no final:

account required pam_access.so

que informa ao PAM para usar este arquivo. Funciona um prazer: -)

    
por 08.02.2010 / 20:19
5

Eu simplesmente usaria

auth required    pam_listfile.so   sense=accept item=group file=/etc/groups.allow onerr=fail

para permitir apenas grupos específicos (para grupos locais e LDAP). Dessa forma, você não precisa especificar nada em ldap.conf .

Se você quiser manter a autorização do seu jeito, não deverá filtrar os usuários no passe "conta". Eu acredito que você deveria preferir fazer isso no passo "auth". Em segundo lugar, como você pode ver a si mesmo, o pam_unix processa contas locais e LDAP (pelo menos no passo "conta"), então parece que não há necessidade de pam_ldap.

EDIT: Em terceiro lugar, se você insiste em ter coisas em "conta" passe (que eu acredito que poderia ter efeitos colaterais estranhos), sua seqüência deve terminar com: ..., "suficiente pam_ldap", "required pam_localuser", " pam_unix necessário ". Quer dizer, se você tiver outros módulos, mova-os antes de pam_ldap - caso contrário, eles seriam ignorados para contas LDAP devido à cláusula "suficiente".

    
por 06.02.2010 / 22:55
0

Apenas para adicionar ao @ andy-shellam, aqui está meu arquivo common-account :

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore]            pam_ldap.so
account requisite                     pam_deny.so
account required                      pam_access.so
account required                      pam_permit.so
    
por 02.10.2012 / 15:50

Tags