ldap_access_filter를 무시하는 SSSD

ldap_access_filter를 무시하는 SSSD

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

이것은 /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]

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     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

예 /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

답변1

작동하지 않는 이유는 실제 필터를 지정하지 않았기 때문입니다. LDAP 및 SSSD에 따르면 "필터"가 무엇인지 이해해야 합니다. 여기에 필터가 포함된 내 자신의 sssd.conf가 있습니다.

내 LDAP 액세스 필터는 로그인하는 사람이 호스트=서버 이름 또는 호스트=ALL이면 해당 컴퓨터에 액세스할 수 있다고 말합니다.

[도메인/기본값]

ldap_id_use_start_tls = 참
캐시_자격 증명 = 거짓
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
access_provider = LDAP
ldap_access_filter = (|(host=palaceredirect.example.net)(host=ALL))
ldap_schema = rfc2307bis
열거 = 사실
autofs_provider = LDAP

[sssd]
config_file_version = 2
서비스 = nss, pam, sudo, autofs

도메인 = 기본값

[nss]

[팸]

[스도]

[자동]

내 검색 기반을 무시해도 됩니다. 그 요점은 getent passwd에 대해 "enumerate = True"가 효과적으로 작동하도록 허용하는 것이었습니다.

답변2

나는 항상 /etc/security/access.conf를 사용하여 서버 로그온 액세스를 제어했지만 doco(및 Sokel의 작업 예제)에 따르면 sssd.conf에 "access_provider=ldap" 줄이 누락되었을 수 있습니다.

답변3

Centos 기반 배포판에서 저에게 효과적이었으므로 다음을 사용해 보십시오.

access_provider = ldap
ldap_access_order = filter
ldap_group_member = member
ldap_access_filter = (memberOf=cn=vpn-clients,ou=Groups,dc=example,dc=com)

관련 정보