CentOS7.x 构建SSSD服务与openldap整合

标签(空格分隔):运维系列


[toc]


一:SSSD 服务介绍:

1.1. SSSD 介绍:

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

这样做有一些几点优势:

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

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

SSSD无需特殊设置即可运行,当你配置完system-configure-authentication后该服务会自己运行。

SSSD默认配置文件位于/etc/sssd/sssd.conf,你可以通过命令使得SSSD以指定的配置文件运行:

  sssd  --c  /etc/sssd/customfile.conf

1.2 SSSD 的配置格式

配置文件格式如下:

  关键字=键值
  #####################################################
  ##  [section]                    ##
  ##  key1 = value1                  ##
  ##  key2 = value2,value3              ##
  #####################################################

1.3 服务的启动格式

管理SSSD进程

service  sssd  start 开启
service  sssd  stop 关闭

使用authconfig命令开启SSSD: #authconfig  --enablesssd  --update

使用systemctl命令开启SSSD: # systemctl  enable  sssd

总结:简单来说现在在RHEL6中连接LDAP或Kerberos等认证服务器,都是先有SSSD连接认证服务器取得认证与授权信息,再交于本地客户端程序。

二:在CentOS7.x 安装配置SSSD 服务

2.1 安装 SSSD 服务

yum install sssd*

image_1fk46dv4pai313s81q0ffiscqv9.png-199.8kB

image_1fk46ev8g1cim16pl19i3cvb1flnm.png-279.8kB


2.2 配置openldap 与 SSSD 服务的集成

2.1 关于openldap 客户端的验证

openldap 服务端已经配置完成,不会看flyfish 博文 https://blog.51cto.com/flyfish225/4562546 在此不做部署:

安装openldap-client 装包:

yum -y install openldap-clients sssd authconfig nss-pam-ldapd

image_1fk46v9idg95md91jka14vm44513.png-241.5kB

编辑配置文件:
    vim /etc/openldap/ldap.conf
    ---
    BASE    dc=flyfish,dc=com
    URI     ldap://192.168.100.14

    #SIZELIMIT      12
    #TIMELIMIT      15
    #DEREF          never

    TLS_CACERTDIR   /etc/openldap/certs

    # Turning this off breaks GSSAPI used with krb5 when rdns = false
    SASL_NOCANON    on

    ----

image_1fk478h5c2gn1du81s931a07nqp20.png-81.1kB

openldap 客户端验证:
      ldapsearch -D "cn=admin,dc=flyfish,dc=com" -W |grep dn

image_1fk479b541pm31m0c18oie9c1he42d.png-108.1kB

2.2 OpenLDAP集成SSH登录并使用sssd同步用户

vim /etc/sssd/sssd.conf
----
[domain/default]

autofs_provider = ldap
cache_credentials = True
ldap_search_base = dc=flyfish,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://192.168.100.14
ldap_id_use_start_tls = False
ldap_tls_cacertdir = /etc/openldap/cacerts
ldap_schema = rfc2307bis
[sssd]
services = nss, pam, autofs

domains = default
[nss]
homedir_substring = /home

[pam]

[sudo]

[autofs]

[ssh]

[pac]

[ifp]

[secrets]

[session_recording]
----

chmod 600 /etc/sssd/sssd.conf
service sssd start 
chkconfig sssd on 

image_1fk47g742vpv4ao19mh7o11hij2q.png-203.5kB

image_1fk47h0eq4gc8sk1hket9q1dvp37.png-237.8kB

2.3 OpenLdap与SSH集成

2.3.1 启用SSH 的 PAM 认证

vim /etc/ssh/sshd_config
----
UsePAM yes
----

image_1fk47ql2d1lql99l1dg4lvk1d7b44.png-78.4kB


修改配置文件
   vim /etc/pam.d/sshd
   ----
  增加这一行:
   session    required     pam_mkhomedir.so

   ----
  # 确保登录成功后创建用户的home目录

image_1fk47vogckh51e064sr9r1blu9.png-137.3kB

修改配置文件
vim /etc/pam.d/password-auth
---
增加一行:
### 添加
auth        sufficient    pam_ldap.so use_first_pass

### 添加
password    sufficient    pam_ldap.so use_authtok

### 添加
session     optional      pam_ldap.so

---
增加pam_ldap.so 模块

image_1fk489v1q1uimheg91v1o261kjp1j.png-166.7kB

修改配置文件
vim /etc/pam.d/system-auth
-----
#auth        sufficient    pam_sss.so forward_pass
### 添加
auth        sufficient    pam_ldap.so use_first_pass
### 添加
#account     [default=bad success=ok user_unknown=ignore] pam_ldap.so

### 添加
password    sufficient    pam_ldap.so use_authtok

### 添加
#session     optional      pam_sss.so
session     optional      pam_ldap.so
------

image_1fk48u1hr1urb1ap5crv2d892r20.png-216.6kB

重启SSHD 服务
service sshd restart