
Ich habe sssd und LDAP eingerichtet. Benutzer authentifizieren sich und melden sich an. Mein Problem ist, dass sssd die Option ldap_access_filter zu ignorieren scheint und allen Benutzern die Anmeldung erlaubt. Ich habe die Protokolle/Debugging-Dateien untersucht und pam_sss autorisiert die Benutzer jedes Mal, unabhängig vom Filter (ich habe ein paar verschiedene ausprobiert, alle mit demselben Ergebnis).
Mit diesem Befehl wird das System konfiguriert:
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
Dies ist die Datei /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]
Die Datei 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
Beispiel /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
Antwort1
Der Grund, warum es nicht funktioniert, ist, dass Sie keinen tatsächlichen Filter angeben. Sie müssen verstehen, was ein „Filter“ gemäß LDAP und SSSD ist. Hier ist meine eigene sssd.conf mit den Filtern.
Mein LDAP-Zugriffsfilter besagt, dass die sich anmeldende Person auf die Maschine zugreifen kann, wenn sie über Host=Servername oder Host=ALL verfügt.
[Domäne/Standard] ldap_id_use_start_tls = Wahr cache_credentials = Falsch ldap_search_base = dc=Beispiel,dc=net?sub?|(Host=palaceredirect.example.net)(Host=ALLE) ldap_group_search_base = ou=Gruppe,dc=Beispiel,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 Zugriffsanbieter = ldap ldap_access_filter = (|(Host=palaceredirect.example.net)(Host=ALLE)) ldap_schema = rfc2307bis aufzählen = Wahr autofs_provider = ldap [nicht] Konfigurationsdateiversion = 2 Dienste = nss, pam, sudo, autofs Domänen = Standard [nss] [pam] [sudo] [autofs]
Sie können meine Suchbasis ignorieren. Der Sinn dahinter war, dass „enumerate = True“ effektiv für getent passwd funktioniert.
Antwort2
Während ich immer /etc/security/access.conf verwendet habe, um den Server-Anmeldezugriff zu steuern, fehlt Ihnen laut der Dokumentation (und Sokels funktionierendem Beispiel) möglicherweise die Zeile „access_provider=ldap“ in sssd.conf.
Antwort3
Bitte versuchen Sie Folgendes, da es bei mir bei einer CentOS-basierten Distribution funktioniert hat
access_provider = ldap
ldap_access_order = filter
ldap_group_member = member
ldap_access_filter = (memberOf=cn=vpn-clients,ou=Groups,dc=example,dc=com)