我已经设置了 sssd 和 LDAP。用户进行身份验证并登录。我的问题是 sssd 似乎忽略了 ldap_access_filter 选项并允许所有用户登录。我检查了日志/调试,并且 pam_sss 每次都会授权用户,而不管过滤器如何(我尝试了几个不同的过滤器,结果都相同)。
这是用于配置系统的命令:
authconfig
--updateall --passalgo=md5 --enableldap --enableldapauth \
--ldapserver=ldaps://ldap.example.com \
--ldapbase=ou=people,dc=example,dc=com \
--enableldaptls --enableldapstarttls --disablekrb5 \
--ldaploadcacert=http://certserver/cacerts/cacert.pem \
--enablesssd --enablesssdauth --enableshadow \
--enablecachecreds --enablemkhomedir
Run Code Online (Sandbox Code Playgroud)
这是/etc/sssd/sssd.conf:
[domain/default]
debug_level = 9
ldap_id_use_start_tls = True
cache_credentials = True
ldap_search_base = ou=people,dc=example,dc=com
id_provider = ldap
auth_provider = ldap
ldap_access_filter = memberOf=cn=sysadmins,ou=people,dc=example,dc=com
chpass_provider = ldap
ldap_uri = ldaps://ldap.example.com
ldap_tls_cacertdir = /etc/openldap/cacerts
[sssd]
services = nss, pam
config_file_version = 2
domains = default
[nss]
[pam]
[sudo]
[autofs]
[ssh]
[pac]
Run Code Online (Sandbox Code Playgroud)
pam.d/系统身份验证:
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 optional pam_oddjob_mkhomedir.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
Run Code Online (Sandbox Code Playgroud)
示例 /var/log/secure:
Dec 30 17:40:36 test login: pam_unix(login:auth): authentication failure; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost= user=testacct
Dec 30 17:40:36 test login: pam_sss(login:auth): authentication success; logname=LOGIN uid=0 euid=0 tty=tty1 ruser= rhost= user=testacct
Dec 30 17:40:36 test login: pam_unix(login:session): session opened for user testacct by LOGIN(uid=0)
Dec 30 17:40:36 test login: LOGIN ON tty1 BY testacct
Run Code Online (Sandbox Code Playgroud)
小智 3
它不起作用的原因是您没有指定实际的过滤器。根据 LDAP 和 SSSD,您必须了解什么是“过滤器”。这是我自己的带有过滤器的 sssd.conf。
我的 LDAP 访问过滤器表示,如果登录的人具有 host=servername 或 host=ALL,他们就可以访问该计算机。
[域/默认] ldap_id_use_start_tls = True 缓存凭证=假 ldap_search_base = dc=example,dc=net?sub?|(host=palaceredirect.example.net)(host=ALL) ldap_group_search_base = ou=组、dc=示例、dc=net id_provider = LDAP auth_provider = LDAP chpass_provider = LDAP sudo_provider = LDAP ldap_uri = ldap://library.example.net ldap_tls_cacertdir = /etc/openldap/cacerts 访问提供者=ldap ldap_access_filter = (|(主机=palaceredirect.example.net)(主机=全部)) ldap_schema = rfc2307bis 枚举=真 autofs_provider = LDAP [SSD] 配置文件版本 = 2 服务 = nss、pam、sudo、autofs 域=默认 [国家安全局] [帕姆] [须藤] [自动文件系统]
你可以忽略我的搜索库。这样做的目的是让“enumerate = True”能够有效地获取 getent passwd。
| 归档时间: |
|
| 查看次数: |
21988 次 |
| 最近记录: |