1. 配置 SSSD
SSSD是系統(tǒng)安全服務(wù)守護(hù)進(jìn)程的縮寫。它提供對不同身份和身份驗證提供者的訪問。
//安裝 sssd
$ dnf update
$ dnf install sssd sssd-tools
接下來,配置SSSD已允許通過OpenLDAP對本地系統(tǒng)進(jìn)行身份驗證。
SSSD通常不附帶任何默認(rèn)配置文件。因此,需要手動創(chuàng)建和配置它。
//創(chuàng)建 sssd 配置文件
$ vim /etc/sssd/sssd.conf
[sssd]
services = nss,pam,sudo
config_file_version = 2
domains = default
[sudo]
[nss]
[pam]
offline_credentials_expiration = 60
[domain/default]
ldap_id_use_start_tls = True
cache_credentials = True
ldap_search_base = dc=xiodi,dc=cn
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
sudo_provider = ldap
ldap_uri = ldap://openldap.xiodi.cn
ldap_default_bind_dn = cn=client search,ou=Admin,dc=xiodi,dc=cn
ldap_default_authtok = xiodi.cn
ldap_tls_reqcert = allow
ldap_tls_cacert = /etc/pki/tls/cacert.crt
ldap_tls_cacertdir = /etc/pki/tls
ldap_search_timeout = 50
ldap_network_timeout = 60
ldap_sudo_search_base = ou=SUDOers,dc=xiodi,dc=cn
ldap_access_order = filter
ldap_access_filter = (objectClass=posixAccount)
sssd.conf 參考:https://linux.die.net/man/5/sssd-ldap
//下載證書
$ openssl s_client -connect openldap.xiodi.cn:636 -showcerts < /dev/null | openssl x509 -text
...
-----BEGIN CERTIFICATE-----
MIIDuDCCAqCgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBoMQswCQYDVQQGEwJDTjEO
MAwGA1UECAwFSGVOYW4xEjAQBgNVBAcMCVpoZW5nWmhvdTERMA8GA1UECgwIeGlv
ZGkuY24xDDAKBgNVBAsMA2VkdTEUMBIGA1UEAwwLY2EueGlvZGkuY24wHhcNMTkw
NDI3MDk1NzQyWhcNMjAwNDI2MDk1NzQyWjBaMQswCQYDVQQGEwJDTjEOMAwGA1UE
CAwFSGVOYW4xETAPBgNVBAoMCHhpb2RpLmNuMQwwCgYDVQQLDANlZHUxGjAYBgNV
BAMMEW9wZW5sZGFwLnhpb2RpLmNuMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
CgKCAQEA3RLRpDER0KG5zN7O/fROD3oMLb01BOCW+8LmlWz4oy5/KrP8XlrQIzzl
L6Q2eHq2kX5eMalDnQvc2jkmebigYiBbZtASnoYcX1ITneFTPuih/c4CatzvyBUg
P2orGHoJQoIxfZcCZdXalwb0GjuyoIv4CavneA9jA8NF4rgoDJM1jxbKolxnWMCc
uis+2jfG0cBiv7dICpMDDexpF5Dj8tjDLPswXr3xfafwgORGxkVZMxL4KlHseVhV
AcAB3yKVsttB1DmvDUY/MCY5JzRg4Y2rTMkz9OO6BqZg56W3ASeTM2hB1XpLVjm+
VwRq7TNqRk+h5XKUiiD4v6x3B4igpQIDAQABo3sweTAJBgNVHRMEAjAAMCwGCWCG
SAGG+EIBDQQfFh1PcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4E
FgQUCa8Mlg/I6GH0CDONYnbvfYYTiIMwHwYDVR0jBBgwFoAUyJ9qxzO1nS+/4Vd0
leVcssEnWAowDQYJKoZIhvcNAQELBQADggEBAKmaY3FZ7ixrZwgm537NU+2W6zYH
l7X4D+rF/ASelne/o8p2Bhph3Vne0HvAvb4kmIwiNEjGYf7d0wKfgwFb4pxPv/5j
71dCl92FIykTm76bU4/g/hPWuygXSMqGPJkWhAgfXwaE3SeBmblwMPNSVS2eOQFB
lmqh+1u3B46tbtIwSu7Qui1f6kZSwOvOfOFiiUkFWo132zjP0tJ+VxitNtObqU/G
hp4nh3Ne15lfRuBinla/4KMWlyVdRCstqrePxTJgBNN/P/xjAGTUuPCiK9jpLPWf
INbazksXtG6IO1TTOnaqhjHr0V8vxvZ6fuDDhgy7Gs/l1B7oChifqBWSkag=
-----END CERTIFICATE-----
//保存CA證書
$ vim /etc/pki/tls/cacert
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
//配置 ldap
$ vim /etc/openldap/ldap.conf
BASE dc=xiodi,dc=cn
URI ldap://openldap.xiodi.cn ldaps://openldap.xiodi.cn:636
SUDOERS_BASE ou=SUDOers,dc=xiodi,dc=cn
TLS_CACERT /etc/pki/tls/cacert.crt
2. 配置 Name Service Switch 和 PAM
接下來,需要更新NSS和PAM以使用SSSD管理身份驗證。
在centos的早期版本中,您可以使用像authconfig這樣的工具,但它已經(jīng)被`authselect`這樣的工具所取代。
`Authselect`是一個簡化用戶身份驗證配置的實(shí)用工具,特別是在使用SSSD進(jìn)行身份驗證時。
(1)配置 SSSD 屬性
使用Authselect命令創(chuàng)建一個SSSD配置文件時,基本會修改這些文件;
/etc/pam.d/system-auth
/etc/pam.d/password-auth
/etc/pam.d/fingerprint-auth
/etc/pam.d/smartcard-auth
/etc/pam.d/postlogin
/etc/nsswitch.conf
因此,對這些文件進(jìn)行備份,以防出現(xiàn)問題。一旦備份了這些文件,請刪除它們。
創(chuàng)建一個SSSD配置文件。只有您刪除了上面的文件,這個命令才會成功。
$ authselect select sssd
否則,您可以通過添加 `--force` 選項來覆蓋文件。
$ authselect select sssd --force
接下來,為了讓系統(tǒng)從SSSD/OpenLDAP中獲取sudo權(quán)限,使用 echo 命令往/etc/nsswitch.con中添加以下內(nèi)容。
$ echo "sudoers: files sss" >> /etc/nsswitch.conf
(2)配置自動創(chuàng)建家目錄
要在用戶第一次登錄時為其啟用自動創(chuàng)建`家目錄`,您需要安裝`oddjob-mkhomedir`,它提供`pam_oddjob_mkhomedir`模塊,以便在用戶登錄時為其創(chuàng)建家目錄。
//安裝 oddjob-mkhomedir
$ dnf install oddjob-mkhomedir
$ systemctl enable --now oddjobd
//加載 pam_oddjob_mkhomedir 模塊
$ echo "session optional pam_oddjob_mkhomedir.so skel=/etc/skel/ umask=0022" >> /etc/pam.d/system-auth
$ systemctl restart oddjobd
3. 運(yùn)行 SSSD
在啟動SSSD之前,您需要檢查配置是否有錯誤或權(quán)限;
$ sssctl config-check
File ownership and permissions check failed. Expected root:root and 0600.
$ chown -R root: /etc/sssd
$ chmod 600 -R /etc/sssd
$ systemctl enable --now sssd
$ systemctl status sssd
4. 測試
(1) 驗證用戶
$ id jakczang
5. 使用 ansible 批量設(shè)置
源碼參考:https://gitee.com/jack_zang/ansible_playbooks/tree/master/roles/openldap-client-centos8