Esforçando-se com a configuração do OpenLDAP

2

Eu tenho configurado um servidor LDAP em uma instância do Linux usando o AWS EC2. Até agora, configurei com êxito o LDAP e o phpLDAPadmin para trabalharem juntos.

Eu criei "Unidades organizacionais de usuários e grupos". Eu adicionei usuários e grupos àqueles "OU". Agora eu quero acessar grandes partes específicas da minha árvore LDAP para os membros "Usuários" de um "Grupo". Isso é o que eu não consegui configurar até agora ...

Minha árvore LDAP é assim:

+--> dc=www,dc=website,dc=com (3)
  ---> cn=admin
  +--> ou=groups (4)
  | ---> cn=admin_users
  | ---> cn=app1_users
  | ---> cn=app2_users
  | ---> cn=basic_users
  +--> ou=users (3)
  | ---> cn=user1
  | ---> cn=user2
  | ---> cn=user3

Digamos que eu adicionei user1 + user2 à lista "memberUid" de "app1_users" e user2 + user3 à lista "memberUid" de "app2_users".

Eu quero:

  • cn = admin tem direitos totais / acesso à árvore
  • app1_users podem se conectar (ao phpLDAPadmin) e adicionar novos membros ao próprio grupo
  • o mesmo para os usuários do app2_users

Um usuário conectado (no phpLDAPadmin) deve ver apenas a árvore (e substrees filho) da qual ele faz parte.

Aqui está o ACI que eu tentei (mas que não estava funcionando corretamente):

access to attrs=shadowLastChange
    by self write
    by dn="cn=admin,dc=www,dc=website,dc=com" write
    by * read

access to attrs=userPassword
    by self write
    by dn="cn=admin,dc=www,dc=website,dc=com" write
    by anonymous auth by * none

access to dn.base=""
    by * read

access to dn.subtree="cn=app1_users,ou=groups,dc=www,dc=website,dc=com"
    by group.base="cn=app1_users,dc=www,dc=website,dc=com" write
    by dn.base="cn=admin,dc=www,dc=website,dc=com" write 
    by * none

access to dn.subtree="cn=app2_users,ou=groups,dc=www,dc=website,dc=com"
    by group.base="cn=app2_users,dc=www,dc=website,dc=com" write
    by dn.base="cn=admin,dc=www,dc=website,dc=com" write 
    by * none

access to *
    by self write
    by dn="cn=admin,dc=www,dc=website,dc=com" write
    by * read

Há algo errado com minha configuração?

    
por Jsncrdnl 18.01.2017 / 15:29

1 resposta

0

Let's say that I added user1 + user2 to the "memberUid" list of "app1_users" and user2 + user3 to the "memberUid" list of "app2_users".

Isso não funciona com as entradas posixGroup com memberUid como atributo de membro. memberUid contém apenas um nome de usuário curto e não um DN.

Como o slapd.access (5) indica claramente que as ACLs do grupo só funcionam com membros atributos contendo o nome distinto completo (DN) de cada entrada de membro:

   The statement group=<group> means that access is  granted  to  requests
   whose  DN  is  listed  in the group entry whose DN is given by <group>.
   The  optional  parameters  <objectclass>  and  <attrname>  define   the
   objectClass  and  the  member  attributeType  of  the group entry.  The
   defaults are groupOfNames and member, respectively.

Algumas notas sobre suas ACLs:

  • Omita a ACL para o atributo shadowLastChange porque o mapa de sombra do LDAP é um conceito quebrado. E se você usar mapas de sombra, sua ACL (provavelmente copiar e colar de algum como fazer) permitiria ao usuário contornar a expiração da senha de sombra.
  • Não conceda privilégios de leitura implícitos a userPassword usando o acesso de gravação inclusivo. Use o privilégio somente de gravação =w .

Veja também minha resposta a essa pergunta em serverfault :

Defina a ACL no OpenLDAP para que o usuário possa encontrar sua própria entrada na subárvore filtrada

E antes de seguir esse caminho você recomendaria usar um dos sistemas que mencionei em outras respostas:

back-end do NSS centralizado para Linux

Como permitir que apenas usuários e / ou grupos acessem determinadas máquinas cliente conectadas a um servidor openldap?

    
por 01.08.2018 / 22:05