我希望能够根据用户的 LDAP 网络组成员身份,通过 ssh 将用户验证到特定主机组。LDAP 服务器是 dsee7。发行版是 OEL 6.5,以 openldap 为客户端。
我们不想使用 LDAP 进行身份验证的唯一帐户是 root。
sssd.conf 如下所示:
[sssd]
config_file_version = 2
services = nss,pam,autofs
domains = default
[nss]
filter_groups = root
filter_users = root
reconnection_retries = 3
entry_cache_timeout = 300
entry_cache_nowait_percentage = 75
[pam]
[domain/default]
auth_provider = ldap
ldap_id_use_start_tls = True
chpass_provider = ldap
cache_credentials = True
ldap_search_base = dc=e-durp,dc=com
id_provider = ldap
ldap_uri = ldaps://lvl1.lvs01.edurp.com/ ldaps://lvl1.lvs01.edurp.com/
ldap_tls_cacertdir = /etc/openldap/cacerts
/etc/openldap/ldap.conf 如下所示:
URI ldaps://ldap.edurp.com/ ldaps://ldap1.edurp.com ldaps://ldap2.edurp.com
BASE dc=edurp,dc=com
TLS_CACERTDIR /etc/openldap/cacerts
TLS_CACERT /etc/openldap/cacerts/ldap_ca.cert
TLS_REQCERT never
nsswitch.conf 如下所示:
passwd: files compat
shadow: files compat
passwd_compat: sss
shadow_compat: sss
group: files sss
hosts: files dns
bootparams: nisplus [NOTFOUND=return] files
ethers: files
netmasks: files
networks: files
protocols: files
rpc: files
services: files sss
netgroup: sss files
publickey: nisplus
automount: files ldap
aliases: files nisplus
/etc/pam.d/system-auth 内容如下:
auth required pam_env.so
auth sufficient pam_fprintd.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_sss.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok
password sufficient pam_sss.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_sss.so
因此我尝试将网络组添加到 /etc/security/access.conf,如下所示:
#- : ALL : ALL
-:@eeederp: ALL
并重新启动了 sssd 以防万一……
我的用户属于网络组 eeederp,并且仍然能够使用他的 LDAP 密码进入。
任何线索都将受到感激。
答案1
我已成功使用 Netgroups 使 Red Hat 6 能够通过 AD 进行身份验证。我尝试让它通过旧的 Sun LDAP 服务器进行身份验证,但运气不佳。我可以看到网络组,可以使用“getent netgroup {netgroup 的名称}”看到用户,并且可以通过 su 访问该用户。但是,当我尝试登录时,它不起作用。
从我的 AD 身份验证中我可以告诉你的是,你的网络组声明与你想要的正好相反。当你以 - 开头时,这意味着不允许他们登录。尝试将其切换为 +,这意味着允许此网络组中的用户登录。
还可以使用 getent 命令检查是否可以正确查看用户和网络组。getent passwd {用户名} getent netgroup {网络组名称}
请记住,getent 还会查看您的本地文件(如 nsswitch.conf 中所定义)以获取此信息,因此请确保该信息仅可通过 LDAP 获得。
希望这可以帮助,
担
答案2
不是 pam 专家,但如果您使用 access.conf,则需要引用 pam_access.so。也许:帐户需要 pam_access.so
测试时只需保持 root shell 处于打开状态。我已设法通过错误的 pam 编辑锁定 root 用户。
答案3
如果你使用上述的 SSSD,那么 nsswitch.conf 条目应该如下,以使 netrgoups“兼容 glibc 模式”正常工作
/etc/nsswitch.conf
passwd: compat
passwd_compat: sss
你的 /etc/password 应该有以下内容
-@eeederp
不是
-@eeederp:x:::::
禁止该网络组@eeederp 中的任何用户访问服务器。不确定为什么 access.conf 不起作用。但是这会起作用。