SSSD是红帽企业版Linux6中新加入的一个守护进程,该进程可以用来访问多种验证服务器,如LDAPKerberos等,并提供授权。SSSD是介于本地用户和数据存储之间的进程,本地客户端首先连接SSSD,再由SSSD联系外部资源提供者(一台远程服务器)

这样做有一些几点优势: 

   1.避免了本地每个客户端程序对认证服务器大量连接,所有本地程序仅联系SSSD,由SSSD连接认证服务器或SSSD缓存,有效的降低了负载。 

   2.允许离线授权。SSSD可以缓存远程服务器的用户认证身份,这允许在远程认证服务器宕机时,继续成功授权用户访问必要的资源。

 

 

 下面来介绍下RHEL5.6的配置方法。

客户端安装sssd

Yum –y install sssd

 

配置/etc/sssd/sssd/conf

 

domains = test.com

 

 [domain/test.com]

cache_credentials = True

krb5_store_password_if_offline = True

ipa_domain = test.com

id_provider = ipa

auth_provider = ipa

access_provider = ipa

ipa_hostname = ipaclient56.test.com

chpass_provider = ipa

#ipa_dyndns_update = True

ldap_krb5_keytab = /etc/krb5.keytab

ipa_server = _srv_, ipa.test.com

ldap_uri = ldap://172.16.10.158

#debug_level = 4

debug_level = 0xFFF0

ldap_user_search_base = dc=test,dc=com

ldap_group_search_base = dc=test,dc=com

ldap_search_base = dc=test,dc=com

enumerate = true

ldap_schema = IPA

 

.

注:公司环境和我虚拟机环境不同,配置参数也可能不同。

 

配置 [root@ipaclient56 ~]# vim /etc/pam.d/system-auth

 

auth        sufficient    pam_sss.so use_first_pass

…..     …..    …….

account     [default=bad success=ok user_unknown=ignore] pam_sss.so

…..     …..    …….

password    sufficient    pam_sss.so use_authtok

…..     …..    …….

session     optional      pam_sss.so

 

 

配置[root@ipaclient56 ~]# vim /etc/nsswitch.conf

 

passwd:     files sss

shadow:     files sss

group:      files sss

……  …….   ……

netgroup:   files sss

……   ……  ……..

aliases:     files nisplus

 

 

关闭nscd

[root@ipaclient56 ~]# service nscd stop

停止 nscd                                                [确定]

 

开启sssd进程

[root@ipaclient56 ~]# service sssd start

启动 sssd                                                [确定]

 

抓取下进程,可以看到正常运行。

[root@ipaclient56 ~]# netstat -antup | grep sssd

tcp        0      1 172.16.10.159:44964         50.23.225.49:389            SYN_SENT    3856/sssd_be

 

IPAserver为客户端生成一个密钥表

~]# ipa-getkeytab -s ipa.test.com -p host/ipaclient56.test.com -k ipaclient56.keytab

 

把这个密钥文件复制到sssd客户端上

Scp ipaclient56.keytab root@ipaclient56.test.com:~/

 

客户端把这个密钥文件重命名为krb5.keytab并移动到/etc

Mv ipaclient56.keytab /etc/krb5.keytab

 

测试登入远程登入客户机。

 

问题解决:

 

日志:[sssd[ldap_child[3918]]]: Failed to initialize credentials using keytab [(null)]: Decrypt integrity check failed. Unable to create GSSAPI-encrypted LDAP connection.

 

Failed to initialize credentials using keytab [/etc/krb5.keytab]: Decrypt integrity check failed. Unable to create GSSAPI-encrypted LDAP connection.

 

解决办法:sssd.conf添加,ldap_krb5_keytab = /etc/krb5.keytab IPAserver手动更新客户端keytab

 

 

一些参数作用:

ip_domain  可选,指定这个域的名称,如果没有,使用配置的域名
ipa_hosename  可选,可能被设置在机器的主机名。
ipa_dyndns_update 可选,这个选项告诉SSSD自动更新DNS服务器内置FreeIPA v2这个客户机的IP地。默认关闭。true false
   注意:在较旧的系统(如RHEL 5),对于这种行为能稳定可靠地运行,默认在/etc/krb5.conf Kerberos领域必须设置正确。
ipa_dyndns_iface 适用于只有当ipa_dyndns_update是真的。选择接口的IP地址应该用于动态域名更新。默认使用ip地址IPA LDAP连接。
ipa_host_search_base  可选,使用给定字符串作为主机搜索基础对象。默认ldap_search_base 的值。
   参考ldap_search_base配置多个搜索基地。

krb5_realm   Kerberos领域的名称。这是可选的,默认为“ipa_domain”的值。
config_file_version  显示配置文件的语法版本
reconnection_retries  服务的次数应该试图重新连接在发生数据提供程序崩溃或重启之前放弃  默认值:3
domains   域是一个数据库,其中包含用户信息。SSSD可以同时使用多个域,但至少有一个必须配置或SSSD不会开始。这个参数域的列    表描述你希望他们被查询的顺序。
krb5_rcache_dir  目录的文件系统上SSSD应该存储Kerberos重播缓存文件。

id_provider   为域标识提供者使用。支持id提供商(ipa local ad proxy ldap)
auth_provider  身份验证提供者使用的域。支持身份验证提供者
access_provider  为域访问控制提供者使用。有两个内置访问提供者(除了任何包含在安装后端)内部特殊的供应商
chpass_provider  提供者应该为域处理更改密码操作。支持更改密码提供者
subdomains_provider  提供者应该处理获取的子域。这个值应该总是id_provider一样。支持子域名提供商。
cache_credentials 确定用户凭证也缓存在本地LDB的缓存,用户凭证存储在一个SHA512散列,而不是明文

ldap_schema   指定在目标系统上使用的模式类型的LDAP服务器。根据所选择的模式,默认属性名称从服务器检索可能会有所不同。一些    属性处理的方式也不同。 rfc2307 rfc2307bis IPA AD 默认rfc2307
ldap_default_authtok_type 默认的身份验证令牌的类型绑定DN 目前两种机制支持obfuscated_password  password
ldap_default_bind_dn  默认的绑定DN用于执行LDAP操作
ldap_default_authtok  默认的身份验证令牌绑定DN。目前只有明文密码支持
ldap_user_object_class 在LDAP对象类的用户条目
ldap_user_home_directoryLDAP属性,其中包含用户的主目录的名称。
ldap_user_ssh_public_keyLDAP属性,其中包含用户的SSH公钥
ldap_enumeration_refresh_timeout 指定多少秒SSSD必须等待刷新缓存的枚举记录
ldap_group_name  LDAP属性,对应的组名
ldap_service_object_class在ldap服务的对象类条目
ldap_service_name LDAP属性,其中包含服务属性的名称和他们的别名
ldap_tls_reqcert  指定检查执行在TLS会话服务器证书,如果有的话。它可以被指定为以下值之一:demand hard try allow never 默认hard
ldap_tls_cacert  指定的文件,其中包含证书的证书颁发机构sssd将识别。
ldap_krb5_keytab  指定要使用的keytab当使用SASL / GSSAPI
ldap_krb5_init_creds  指定id_provider应该初始化Kerberos凭证(TGT)。执行这个动作只有SASL使用GSSAPI机制选择
ldap_krb5_ticket_lifetime指定寿命TGT如果使用GSSAPI的以秒为单位 默认86400
ldap_user_search_base 一个可选的基本DN,搜索范围和LDAP筛选限制LDAP搜索这个属性类型
ldap_group_search_base
krb5_store_password_if_offline 存储用户的密码如果提供者离线和用它来请求一个TGT当供应商再次上线