SSSD ignorando ldap_access_filter

4

Eu configurei o sssd e o LDAP. Os usuários autenticam e fazem login. Meu problema é que sssd parece ignorar a opção ldap_access_filter e permite que todos os usuários façam o login. Eu examinei os logs / debug e pam_sss autoriza os usuários toda vez, 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
    
por lmickh 31.12.2013 / 00:59

3 respostas

1

O motivo pelo qual não está funcionando é porque você não está especificando um filtro real. Você precisa entender o que é um "filtro", de acordo com o LDAP e o SSSD. Aqui está o meu próprio sssd.conf com os filtros.

Meu filtro de acesso LDAP está dizendo se a pessoa que fez login tem host = nome_do_servidor ou host = ALL, eles podem acessar essa máquina.

[domain/default]

ldap_id_use_start_tls = True
cache_credentials = False
ldap_search_base = dc=example,dc=net?sub?|(host=palaceredirect.example.net)(host=ALL)
ldap_group_search_base = ou=Group,dc=example,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
enumerate = True
autofs_provider = ldap

[sssd]
config_file_version = 2
services = nss, pam, sudo, autofs

domains = default

[nss]

[pam]

[sudo]

[autofs]

Você pode ignorar minha base de pesquisa. O objetivo disso foi permitir que "enumerate = True" funcionasse efetivamente para getent passwd.

    
por 26.01.2014 / 03:15
3

Enquanto eu sempre usei o /etc/security/access.conf para controlar o acesso de logon do servidor, de acordo com o doco (e o exemplo de trabalho do Sokel) você está possivelmente perdendo a linha "access_provider = ldap" no sssd.conf.

    
por 17.08.2014 / 13:05
0

Por favor, tente usar o seguinte como funcionou para mim para uma distro 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)
    
por 27.09.2018 / 16:30

Tags