我们有一些PAM + LDAP的服务器。
configuration是标准的(请参阅http://arthurdejong.org/nss-pam–ldapd/setup或http://wiki.debian.org/LDAP/PAM )。 例如,/etc/pam.d/common-auth包含:
auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so uid >= 1000 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so
当然,它适用于ldap和本地用户。 但是,每个login首先到达pam_unix.so,失败,然后才成功尝试pam_ldap.so。 因此,我们对每个ldap用户login都有一个众所周知的失败消息:
pam_unix(<some_service>:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=<some_host> user=<some_user>
我每天有多达60000个这样的日志消息,我想要更改configuration,所以PAM将首先尝试ldap身份validation,并且只有在它失败时 – 尝试pam_unix.so(我认为它可以提高I / O性能服务器)。 但是,如果我将common-auth更改为以下内容:
auth sufficient pam_ldap.so use_first_pass auth sufficient pam_unix.so nullok_secure auth required pam_deny.so
然后,我不能再用本地(非LDAP)用户(例如,通过SSH)login。
有人知道正确的configuration吗? 为什么Debian和nss-pam-ldapd默认首先有pam_unix.so? 有没有办法改变它?
先谢谢你。
PS我不想禁用日志,但想要首先设置LDAP身份validation。
hayalci在评论中回答:
auth sufficient pam_ldap.so auth sufficient pam_unix.so nullok_secure try_first_pass auth required pam_deny.so
如果本地和networking用户在不同的uid范围(这是一个好主意),你可以添加一个这样的线(假设本地用户的范围是0-4999):
auth [success=1 default=ignore] pam_succeed_if.so uid >= 5000 quiet
在pam_unix.so
行之前。 如果uid> = 4999,它将传递1行。它将直接转到pam_ldap.so。
如果在pam_ldap.so
之前没有要求密码的行,则必须将pam_ldap.so use_first_pass
更改为pam_ldap.so
或pam_ldap.so try_first_pass
。
我会testing:
auth [success=1 default=ignore] pam_succeed_if.so uid >= 4999 quiet auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so uid >= 4999 quiet auth sufficient pam_ldap.so auth required pam_deny.so
你的:
auth sufficient pam_unix.so nullok_secure auth requisite pam_succeed_if.so uid >= 1000 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so
更改为:(use_first_pass表示使用前一个模块的密码,即pam_ldap.so)
auth sufficient pam_ldap.so auth requisite pam_succeed_if.so uid >= 1000 quiet auth sufficient pam_unix.so use_first_pass nullok_secure auth required pam_deny.so
缺点(对于hpux):如果您的ldap服务器挂起(同步攻击,请参阅https://fedorahosted.org/389/ticket/47554 ),您的客户端也将挂起,这发生在HPUX服务器(不是Linux和aix; hpux进程命名为ldapclientd)。 这意味着所有login(即使是来自ILO / MP的root)都被阻止。 解决方法是重启服务器:-(所以我更喜欢pam_ldix之前hpux上的pam_ldap
我想说这个解决scheme为我工作! 我使用free-ipa时遇到了同样的问题,在我的/etc/pam.d/system-auth文件中使用这个设置避免了额外的“身份validation失败”错误:
auth required pam_env.so auth sufficient pam_sss.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth required pam_deny.so