使用LDAP和PAM限制帐户登录


14

我希望某些PAM / LDAP专家可以在这里为我提供帮助。我最近在Ubuntu Server上设置了一个LDAP目录,以同时为我的客户端(用于基于Web的系统)和工作人员(需要通过SSH登录)保留帐户。

LDAP身份验证运行正常。但是我无法使用帐户限制:员工帐户将具有ID之间的ID 20012999并且将成为该ssh-users组的成员以允许他们登录服务器。

有问题的限制是/etc/ldap.conf,和是pam_min_uidpam_max_uidpam_groupdn

pam_groupdn包含我ssh-users组的完整DN 。 pam_min_uid= 2000pam_max_uid= 2999

现在,我设法通过添加以下内容使它们工作:

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

上面的pam_unix.so在线/etc/pam.d/common-account。但是,本地Unix帐户然后将无法登录:SSH服务器会在尝试后立即终止连接。

我已经在上面的文件中将pam_ldap.so模块设置为sufficient,但是无效的用户会收到一条消息,指出他们无法登录,但是无论如何它都会登录。

因此,如何在仍允许UNIX用户登录的同时为LDAP用户设置这些帐户限制?

您可能会猜到我是PAM的新手,尽管我设法使“自动创建主目录”模块起作用了:-)

非常感谢,安迪

Answers:


11

PAM能够基于访问控制列表(至少在Ubuntu上)限制访问,就像kubanskamac的答案(+1)一样,无论这些组存储在LDAP /etc/group还是NIS中,它们都将这些组视为posix组。

/etc/security/access.conf是访问列表文件。在我的文件中,我放在最后:

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

这会拒绝除root,sysadmin和ssh-users组(位于LDAP中)之外的所有用户,无论他们从哪里登录(第二个ALL)。

然后在我的PAM帐户文件(这是一个帐户模块)中,最后添加:

account required pam_access.so

告诉PAM使用该文件。它可以治疗:-)


值得注意的是,您可能需要在pam帐户文件的开头放置pam_access.so才能生效。
crb 2010年

5

我会简单地使用

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

只允许特定的组(本地组和LDAP组)。这样,您无需在ldap.conf

如果您想以自己的方式保留授权,则不应在“帐户”通行证上过滤用户。我相信您宁愿在“ auth”通行证上这样做。其次,如您所见,pam_unix同时处理本地帐户和LDAP帐户(至少在“帐户”阶段通过),因此似乎根本不需要pam_ldap。

编辑:第三,如果您坚持要在“帐户”通行证上放一些东西(我相信这可能会带来奇怪的副作用),则您的序列应以以下结尾:...,“足够的pam_ldap”,“所需的pam_localuser”,“所需的pam_unix” 。我的意思是,如果还有其他模块,请将其移至pam_ldap之前-否则,由于“足够”子句,LDAP帐户将忽略它们。


我认为pam_unix正在使用getent调用来检索帐户信息-在/etc/nsswitch.conf中使用LDAP。这些行是由libpam-ldap软件包安装程序添加到PAM配置文件中的。pam_groupdn的默认操作是不执行任何操作,并且在搜索答案时,有人说除非在“帐户”传递期间使用pam_ldap.so模块,否则它不会生效。如果可能的话,我宁愿将设置保留在ldap.conf中,因为它与LDAP特别相关。
安迪·谢拉姆

(1)您对pam_unix是正确的。(2)我正在用pam_localuser建议更新答案。
kubanczyk

我所读到的有关PAM的所有内容都表明该帐户是正确的部分。auth-识别用户并验证帐户帐户-检查用户帐户特征,例如密码时效,登录时间限制和远程登录限制这不是身份验证问题-因为用户名/密码正确,并且用户可以确定。这是一个帐户限制,因为我不希望某些帐户能够登录。
安迪·谢拉姆

0

只需添加到@ andy-shellam,这是我的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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.