web-dev-qa-db-ja.com

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

これが機能しない理由は、実際のフィルターを指定していないためです。 LDAPとSSSDによると、「フィルター」とは何かを理解する必要があります。これが、フィルタを使用した自分のsssd.confです。

私のLDAPアクセスフィルターは、ログインしているユーザーがHost = servernameまたはHost = ALLを持っている場合、そのマシンにアクセスできると言っています。

[ドメイン/デフォルト] 
 
 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]

私の検索ベースは無視できます。その目的は、「列挙= True」がgetent passwdに対して効果的に機能することを可能にすることでした。

2
Sokel

私は常に/etc/security/access.confを使用してサーバーログオンアクセスを制御してきましたが、doco(およびSokelの実際の例)によると、sssd.confの「access_provider = ldap」行が欠落している可能性があります。

3
Andy

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)
0
Tejinder Brar