Доступ SSH к группам хостов на основе групп пользователей с помощью LDAP

Это - мой весь тест ldap база данных на данный момент:

# extended LDIF
#
# LDAPv3
# base <dc=ldap,dc=example,dc=com> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# ldap.example.com
dn: dc=ldap,dc=example,dc=com
dc: ldap
description: Root for Test LDAP server
objectClass: top
objectClass: dcObject
objectClass: organization
o: Test

# People, ldap.example.com
dn: ou=People,dc=ldap,dc=example,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
description: All people in Test

# Group, ldap.example.com
dn: ou=Group,dc=ldap,dc=example,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
description: All groups in Test

# Hosts, ldap.example.com
dn: ou=Hosts,dc=ldap,dc=example,dc=com
ou: Hosts
objectClass: top
objectClass: organizationalUnit
description: All hosts in Test

# HostGroups, ldap.example.com
dn: ou=HostGroups,dc=ldap,dc=example,dc=com
ou: HostGroups
objectClass: top
objectClass: organizationalUnit
description: All host groups in Test

# client1, Hosts, ldap.example.com
dn: cn=client1,ou=Hosts,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: ipHost
objectClass: top
cn: client1
ipHostNumber: 192.168.56.21

# client2, Hosts, ldap.example.com
dn: cn=client2,ou=Hosts,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: ipHost
objectClass: top
cn: client2
ipHostNumber: 192.168.56.22

# client3, Hosts, ldap.example.com
dn: cn=client3,ou=Hosts,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: ipHost
objectClass: top
cn: client3
ipHostNumber: 192.168.56.23

# group1, HostGroups, ldap.example.com
dn: cn=group1,ou=HostGroups,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: authorizedServiceObject
objectClass: top
authorizedService: sshd
hostmemberIP: 192.168.56.21
hostmemberIP: 192.168.56.23
cn: group1

# group2, HostGroups, ldap.example.com
dn: cn=group2,ou=HostGroups,dc=ldap,dc=example,dc=com
objectClass: hostGroup
objectClass: authorizedServiceObject
objectClass: top
authorizedService: sshd
hostmemberIP: 192.168.56.22
cn: group2

# users, Group, ldap.example.com
dn: cn=users,ou=Group,dc=ldap,dc=example,dc=com
cn: users
objectClass: posixGroup
objectClass: top
gidNumber: 701
memberUid: abhinav
memberUid: akumar

# admins, Group, ldap.example.com
dn: cn=admins,ou=Group,dc=ldap,dc=example,dc=com
objectClass: posixGroup
objectClass: top
gidNumber: 702
cn: admins
memberUid: abhinavk

# abhinav, People, ldap.example.com
dn: uid=abhinav,ou=People,dc=ldap,dc=example,dc=com
uid: abhinav
cn: abhinav
objectClass: account
objectClass: posixAccount
objectClass: top
uidNumber: 1000
gidNumber: 701
homeDirectory: /home/abhinav
loginShell: /bin/bash
gecos: abhinav
userPassword:: e1NTSEF9NitwODhYZHZnSjliZnJKcElHamdteXhsdUJDSlorNmI=

# akumar, People, ldap.example.com
dn: uid=akumar,ou=People,dc=ldap,dc=example,dc=com
uid: akumar
cn: akumar
objectClass: account
objectClass: posixAccount
objectClass: top
uidNumber: 1001
gidNumber: 701
homeDirectory: /home/akumar
loginShell: /bin/bash
gecos: akumar
userPassword:: e1NTSEF9NVdJdS9yTkIrUlRWelJJMWxHY2UvVzJXNGxmUjYwZ04=

# abhinavk, People, ldap.example.com
dn: uid=abhinavk,ou=People,dc=ldap,dc=example,dc=com
uid: abhinavk
cn: abhinavk
objectClass: account
objectClass: posixAccount
objectClass: top
uidNumber: 1002
gidNumber: 702
homeDirectory: /home/abhinavk
loginShell: /bin/bash
gecos: abhinavk
userPassword:: e1NTSEF9NVdJdS9yTkIrUlRWelJJMWxHY2UvVzJXNGxmUjYwZ04=

# search result
search: 2
result: 0 Success

# numResponses: 16
# numEntries: 15

Может быть n количество групп узлов и m количество групп пользователей.

Таким образом, действительно ли возможно позволить определенные группы пользователей доступу только определенные группы узлов? **

Например:

  • группа cn=admins,ou=Group,dc=ldap,dc=example,dc=com должен смочь получить доступ ко всем хостам под группой узлов cn=group1,ou=HostGroups,dc=ldap,dc=example,dc=com и "cn=group2, ou=HostGroups, dc=ldap, dc=example, dc=com"

  • группа cn=users,ou=Group,dc=ldap,dc=example,dc=com должен только смочь получить доступ к хостам под группой узлов cn=group1,ou=HostGroups,dc=ldap,dc=example,dc=com.

Я пытался искать онлайн справку. ничто не мог найти полезным.

Вышеупомянутое структура LDAP основано на моем понимании этого сообщения здесь.

сервер ldap и клиент, ОС является CentOS 6.x и ldap серверной версией, являются openldap-servers-2.4.39-8.el6.x86_64

Застряли в этом с пятницы. Я предполагаю, что что-то должно быть сделано с ACLs в ldap сервере и основным поисковым URL в ldap клиентах. Действительно не уверенный в том, что точно должно быть сделано.

Обновление этого

Читая это сообщение здесь, дал мне общее представление, чтобы отбросить группы узлов полностью и вместо этого использовать нормальные группы для каждого хоста типы. запущенный с нуля (но очень похожий на структуру, что выше) я создал объект groupOfMembers (в основном posixGroup с членским полем в нем) и начал делать часть групп и пользователей его.

Например:

# gt1, Group, ldap.example.com
dn: cn=gt1,ou=Group,dc=ldap,dc=example,dc=com
objectClass: posixGroup
objectClass: groupOfMembers
objectClass: top
gidNumber: 703
cn: gt1
member: cn=admins,ou=Group,dc=ldap,dc=example,dc=com
member: cn=user1,ou=People,dc=ldap,dc=example,dc=com
member: cn=users,ou=Group,dc=ldap,dc=example,dc=com

администраторы и пользователи - другой, группы с участниками и user1 являются учетной записью пользователя. Я также добавил это к/etc/pam_ldap.conf файлу на стороне клиента:

pam_groupdn cn=gt1,ou=Group,dc=ldap,dc=example,dc=com
pam_member_attribute member

теперь, когда я вхожу в систему с пользователем user1, я могу. но когда я пробую это другим пользовательским администратором (часть администраторской группы) и appuser (часть группы пользователей), я получаю это сообщение об ошибке:

Необходимо быть членом cn=gt1, ou=Group, dc=ldap, dc=example, dc=com для входа в систему.

Есть ли какой-либо способ, которым я могу использовать DN другой группы в членском поле группы и сделать pam_ldap для работы?

3
задан 16 November 2014 в 21:00
1 ответ

Механизм hostgroup является частью структуры tcpwrapper. Тем не менее, tcpwrapper не знает о логинах пользователей и обрабатывает только пары IP-хостов и их права доступа.

Хотя sshd может использовать tcpwrapper для управления доступом на основе хоста, эти ограничения tcpwrapper, конечно, наследуются.

I убедились, что простое создание фрагментов файла конфигурации из LDAP с помощью сценария иногда является хорошим решением. Есть и другие способы решить эту проблему, например, вы можете заставить nslcd (для libpam-ldapd) на серверах использовать установщики LDAP, которые позволяют им загружать пользователей только из связанной группы.

0
ответ дан 3 December 2019 в 08:12

Теги

Похожие вопросы