<集中式身份管理服務>
面對多計算機的身份管理以及賬戶信息同步, 其解決方案並不是把信息存放在本地, 而是存放在一台提供驗證服務的服務器上.
憑借SSO, 用戶輸入密碼進行一次性身份驗證即可獲得用於向其他服務進行身份驗證的一種票據或cookie.
集中式身份管理系統需要提供的服務;
1. 賬戶信息, 包括用戶名 目錄位置 UID GID 組成員身份等信息,解決方案有:
LDAP 輕量級目錄訪問協議
NIS 網絡信息服務
2. 身份驗證信息, 系統驗證身份的方法 解決方法為:
kerberos 僅提供SSO身份驗證服務, 可用於IPA服務器和Active Directory
LDAP 配合kerberos使用
<什么是LDAP?>
LDAP是一種支持TCP/IP的數據庫, 但與一般表型數據庫不同的是, LDAP是樹形結構的.
它也有服務端與客戶端, 服務端用於存儲數據, 客戶端用於存儲數據的增刪改查.
LDAP的據結構:(dn: cn , ou, dc), 可選的(o 組織, c 國家)略之
dn distinguished name區分名,就是完成的條目地址, 它是在一個目錄中總是唯一的
dc domain component 是數據的存放位置(相當於SQL的表), 常用寫法: dc=example, dc=com, 代表域example.com
ou organization unit 組織名, 代表數據的分組, 最多4級, 每級最長32個字符
cn common name, 代表數據的id, 一般為用戶名或服務器名
那么, 回答本章, LDAP負責的就是存放用戶的認證信息的數據庫了.
LDAP這種數據庫的特點是讀效率特高, 寫效率低.
LDAP的認證原理,簡單講解兩種:
a).每一個登陸,連接請求先去拉取所有的可通過用戶的列表,然后去查找是否在已注冊用戶列表。(不推薦)
b).每一個登陸,連接請求去發送本地的用戶、密碼給LDAP服務器,然后在LDAP服務器上進行匹配,然后判斷是否可以通過認證。(推薦)
<什么是kerberos?>
Kerberos簡單來說就是一個用於安全認證第三方協議,它采用了傳統的共享密鑰的方式,實現了在網絡環境不一定保證安全的環境下,client和server之間的 通信,適用於client/server模型,由MIT開發和實現。
應用原理
在實際的應有場景中通常有三個角色,即:
1. 需要訪問服務的Client
2. 提供服務的Application Server
3. 提供安全認證的第三方Kerberos服務器KDC(Key Distribution Center)。
<authconfig>
一種打包了驗證功能的服務, 集成了LDAP, kerberos的功能, 通過簡單的幾步就能實現 LDAP, kerberos,的數據庫及服務器管理配置工作.
1. 安裝: yum install sssd authconfig-gtk krb5-workstation (authconfig-gtk ssh沒有圖形界面可使用 authconfig-tui代替, 改服務在authconfig中)
2. 配置: authconfig-atk 或 authconfig-tui
3. 用戶信息(user account database)選擇LDAP
4. 認證方式(authentication method)選擇kerberos
3. 配置解析:
TLS: 一種加密協議,同ssh
LDAP server: LDAP的數據庫服務器
LDAP search base DN: 基礎搜索域如: dc=example,dc=com
Realm: kerberos域
KDCs: KDC服務器地址
Admin Servers: 管理服務器地址, 一般同上
CA Certificate: 證書下載 可輸入地址
3.1 直接使用authconfig的配置方法: 正式生效則把--test 改成--update 即可
authconfig \
--enableldap \
--enableldaptls \
--ldapserver='class.example.com' \
--ldapbasedn='dc=example,dc=com' \
--ldaploadcacert='http://classroom.example.com/pub/example-ca.crt' \
--enablekrb5 \
--krb5realm='EXAMPLE.COM'\
--krb5kdc='classroom.example.com' \
--krb5adminserver='classroom.example.com' \
--disablekrb5kdcdns \
--disablekrb5realmdns \
--test
請注意!!! 本地認證方式(--enablelocauthorize)在測試時請開啟,不然本地登錄不了系統!!