
Eu configurei o sssd e o LDAP. Os usuários se autenticam e fazem login. Meu problema é que o sssd parece ignorar a opção ldap_access_filter e permite que todos os usuários façam login. Examinei os logs/debug e pam_sss sempre autoriza os usuários, independentemente do filtro (tentei alguns diferentes, todos com o mesmo resultado).
Este é o comando usado para configurar o sistema:
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
Este é o /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]
O 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
Exemplo /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
Responder1
A razão pela qual não está funcionando é porque você não está especificando um filtro real. Você tem que entender o que é um “filtro”, de acordo com LDAP e SSSD. Aqui está meu próprio sssd.conf com os filtros.
Meu filtro de acesso LDAP está dizendo que se a pessoa que está fazendo login tiver host=servername ou host=ALL, ela poderá acessar essa máquina.
[domínio/padrão] ldap_id_use_start_tls = Verdadeiro cache_credentials=Falso ldap_search_base = dc=exemplo,dc=net?sub?|(host=palaceredirect.example.net)(host=ALL) ldap_group_search_base = ou=Grupo,dc=exemplo,dc=net id_provedor=ldap auth_provider=ldap chpass_provider=ldap sudo_provider=ldap ldap_uri = ldap://library.example.net ldap_tls_cacertdir = /etc/openldap/cacerts provedor_de acesso=ldap ldap_access_filter = (|(host=palaceredirect.example.net)(host=ALL)) esquema_ldap = rfc2307bis enumerar = Verdadeiro autofs_provider=ldap [ssd] config_file_versão = 2 serviços = nss, pam, sudo, autofs domínios = padrão [nss] [pam] [sudo] [autofs]
Você pode ignorar minha base de pesquisa. O objetivo disso era permitir que "enumerate = True" funcionasse efetivamente para getent passwd.
Responder2
Embora eu sempre tenha usado /etc/security/access.conf para controlar o acesso de logon do servidor, de acordo com o documento (e o exemplo de trabalho de Sokel), você possivelmente está perdendo a linha "access_provider = ldap" em sssd.conf.
Responder3
Por favor, tente usar o seguinte, pois funcionou para mim em uma distribuição baseada em 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)