Как отфильтровать логины пользователя LDAP на Linux?

У меня есть несколько серверов Linux (человечность 12.04) установка для аутентификации пользовательских логинов по внешнему (к моему филиалу) LDAP (Novell Edirectory конкретно). Это работает хорошо, однако я пытаюсь отфильтровать пользовательские логины членством в группе LDAP.

Учетная запись пользователя похожа на это в Edir:

dn: cn=mmcloud,ou=eng,o=lsi
loginShell: /bin/bash
homeDirectory: /home/mmcloud
gidNumber: 2001
uidNumber: 9418
mail: xxxxxx@xxxxxxxxx
uid: mmcloud
initials: Q
givenName: Moran
sn: McCloud
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: ndsLoginProperties
objectClass: Person
objectClass: Top
objectClass: posixAccount
eMailAddress: 7#xxxxx@xxxxxxxxxxxx
cn: mmcloud

Запись группы похожа на это в Edir:

dn: cn=shellacct,ou=groups,ou=eng,o=lsi
memberUid: jbarlin
memberUid: mmccloud
memberUid: ssemryn
memberUid: cdesmon
gidNumber: 2009
objectClass: groupOfNames
objectClass: Top
objectClass: posixGroup

Я только хочу пользователей в shellacct группа для входа в систему. Я нашел много использований в качестве примера pam_filter в /etc/ldap.conf но только заставили фильтр работать путем фильтрации над определенным userDn атрибуты, такие как:

 pam_filter                  &(objectclass=user)
 pam_filter                  &(objectclass=Person)
 pam_filter                  &(loginShell=/bin/bash)

То, что я хочу, должно отфильтровать на составе группы. groupDn cn=shellacct,ou=groups,ou=eng,o=lsi (gid=2009). Я попробовал в /etc/ldap.conf:

 pam_filter                  &(objectclass=posixAccount)(|(gidNumber=2009))
 pam_filter                  |(member=cn=shellacct,ou=groups,ou=eng,o=lsi)
 pam_filter                  |(memberUid=cn=shellacct,ou=groups,ou=eng,o=lsi)

Будет pam_filter работа для того, что я хочу сделать или делаю это только, смотрит на userDn для фильтрации?

1
задан 20 February 2015 в 16:58
3 ответа

Csak el akarta hagyni ezt itt bárki más számára, aki ilyesmit keres. Vessen egy pillantást az /etc/security/access.conf fájlra. Felismeri a felhasználókat / csoportokat / helyi / LDAP-t. Ezt végül meg is tettem. Ez egy jó egyablakos ügyintézési pont az ACL-ek számára.

Engedélyeznie kell a pam_access.conf fájlt a /etc/pam.d/

fájlokban. Ne feledje rendszerfrissítésből állítja be újra ezeket a módosításokat. Nem tudom, hogyan lehet ezt megkerülni. talán a pam_succeed fenti megemlítése jobb hely lenne számára.

# grep access /etc/pam.d/*
...
/etc/pam.d/login:# Uncomment and edit /etc/security/access.conf if you need to
...
/etc/pam.d/login:account required pam_access.so
/etc/pam.d/sshd:# Uncomment and edit /etc/security/access.conf if you need to set complex
...
/etc/pam.d/sshd:account required pam_access.so

példa access.conf :

# allow root from the backup system
+ : root : 10.10.16.2
# allow root from cron, serial port and tty consoles
+ : root : cron crond :0 ttyS0 tty1 tty2 tty3 tty4 tty5 tty6
# allow ldapusers on 10.0.0.0/8 subnet
+ : ldapuser4 ldapuser1 ldapuser7: 10.0.0.0/8
# allow users in ldap posixGroup on 10.10.16.0 subnet
+ : ldapssh : 10.10.16.0/24
# allow everyone in the localhost sftponly group from anywhere
+ : sftponly : ALL
# drop everyone else from anywhere
- : ALL : ALL
0
ответ дан 4 December 2019 в 00:11

Модуль PAM pam_succeed_if.so кажется идеальным для этого. Фактически, я использую его таким образом на множестве своих серверов. Пример конфигурации из Ubuntu 14.04 с авторизацией в домене MS AD, из /etc/pam.d/common-account :

account         sufficient              pam_unix.so
account         requisite               pam_ldap.so
account         sufficient              pam_succeed_if.so user ingroup unix-admins
account         sufficient              pam_succeed_if.so user ingroup auth-$hostname
account         requisite               pam_deny.so

Замените имя сервера на $ hostname . Являясь членом unix-admins или auth-$ hostname предоставляет доступ.

Также рассмотрите возможность использования nslcd (0.9+), поскольку он распознает членство во вложенных (косвенных) группах.

1
ответ дан 4 December 2019 в 00:11

Вы можете использовать параметр pam_groupdn в /etc/ldap.conf , чтобы попасть туда, куда вы хотите. В прошлом я использовал pam_check_host_attr для аналогичной цели, и он работал точно так, как я хотел (т.е. запись LDAP должна была иметь атрибут host с именем хоста, которое вы пытаетесь использовать войдите как значение).

0
ответ дан 4 December 2019 в 00:11

Теги

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