公司內(nèi)部會有許多第三方系統(tǒng)或服務(wù)俺驶,例如SVN幸逆、Git、VPN暮现、Jira还绘、Jenkins等等,每個系統(tǒng)都需要維護一份賬號密碼以支持用戶認證栖袋,當(dāng)然公司也會有許多的主機或服務(wù)器拍顷,需要開放登錄權(quán)限給用戶登錄使用,每臺主機需要添加登錄的賬號密碼塘幅,這些操作不僅繁瑣且不方便管理昔案,密碼記錯或遺忘的情況時有發(fā)生。
引入一套支持各系統(tǒng)电媳、服務(wù)踏揣、主機單點認證的服務(wù)就顯得尤其迫切和重要。LDAP服務(wù)正是為此而生匆背,且經(jīng)過長時間市場檢驗呼伸,安全穩(wěn)定,文檔也比較豐富钝尸,方便上手括享。
LDAP
可以通過以下三句話快速的認識一下LDAP:
LDAP:Lightweight Directory Access Protocol,輕量目錄訪問協(xié)議珍促。
LDAP服務(wù)是一個為只讀(查詢铃辖、瀏覽、搜索)訪問而優(yōu)化的非關(guān)系型數(shù)據(jù)庫猪叙,呈樹狀結(jié)構(gòu)組織數(shù)據(jù)娇斩。
LDAP主要用做用戶信息查詢(如郵箱、電話等)或?qū)Ω鞣N服務(wù)訪問做后臺認證以及用戶數(shù)據(jù)權(quán)限管控穴翩。
名詞解釋
DC:domain component一般為公司名犬第,例如:dc=163,dc=com
OU:organization unit為組織單元,最多可以有四級芒帕,每級最長32個字符歉嗓,可以為中文
CN:common name為用戶名或者服務(wù)器名,最長可以到80個字符背蟆,可以為中文
DN:distinguished name為一條LDAP記錄項的名字鉴分,有唯一性哮幢,例如:dc:"cn=admin,ou=developer,dc=163,dc=com"
圖形示例
上邊來了一堆的名詞解釋,看的云里霧里志珍,還不是很明白橙垢,怎么跟自己的組織架構(gòu)對應(yīng)起來呢?看看下邊的圖是不是清晰明了
[圖片上傳失敗...(image-f69237-1578624340856)]
OpenLDAP
上邊介紹了LDAP只是一個協(xié)議伦糯,基于這個協(xié)議實現(xiàn)服務(wù)器端程序有OpenLDAP柜某、Active Directory(微軟的域控制器)等等。
部署OpenLDAP
部署環(huán)境:Debian 8.4
1.安裝OpenLDAP,OpenLDAP服務(wù)端程序叫slapd
apt-get install -y slapd
2.安裝完成之后舔株,會自動生成一個OpenLDAP的系統(tǒng)賬號
cat /etc/passwd
openldap:x:110:115:OpenLDAP Server Account,,,:/var/lib/ldap:/bin/false
3.生成OpenLDAP管理員賬號的密碼(后邊修改配置文件需要使用)
slappasswd
New password:
Re-enter new password:
{SSHA}EcAoXeGab5g8y2Y03EmH3+Zc3hJaHp7F
4.新建OpenLDAP配置文件
cp /usr/share/slapd/slapd.conf /etc/ldap/
配置文件中有很多@xxx@的配置替換為真實配置
slaptest -f /etc/ldap/slapd.conf
5ad9b19d /etc/ldap/slapd.conf: line 105: rootdn is always granted unlimited privileges.
5ad9b19d /etc/ldap/slapd.conf: line 122: rootdn is always granted unlimited privileges.
config file testing succeeded
配置文件重要參數(shù)說明(需要自己修改的莺琳,其他未提到的可以不修改):
database bdb:定義使用的后端數(shù)據(jù)存儲格式,數(shù)據(jù)庫默認采用了berkeley db载慈,其后可以跟的值有bdb惭等、ldbm、passwd办铡、shell辞做。bdb指使用Berkley DB 4數(shù)據(jù)庫
suffix "dc=163,dc=com":suffix是"LDAP基準名",它是LDAP名字空間在這里的根寡具。設(shè)置想要創(chuàng)建的子樹的根DN
rootdn "cn=admin,dc=163,dc=com":設(shè)置管理LDAP目錄的超級用戶的DN秤茅。這個用戶名不要出現(xiàn)在/etc/passwd文件里
rootpw {SSHA}EcAoXeGab5g8y2Y03EmH3+Zc3hJaHp7F:設(shè)置這個數(shù)據(jù)庫的超級用戶的口令驗證方式。也就是上邊rootdn設(shè)置的用戶的密碼童叠。一定要用加密的口令存儲框喳,可以使用的加密方式有:CRYPT、MD5厦坛、SMD5五垮、SHA和SSHA,就是我們第三步生成的密碼
directory /var/lib/ldap:設(shè)置LDAP數(shù)據(jù)庫和索引文件所在的目錄
access to:權(quán)限配置下邊詳細說明
5.刪除原配置杜秸,生成新配置
rm -rf /etc/ldap/slapd.d/*
slaptest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d/
給新生成的配置文件賦予OpenLdap的權(quán)限
chown -R openldap.openldap /etc/ldap/slapd.d/
6.重啟OpenLdap
/etc/init.d/slapd restart
ACL權(quán)限控制
ACL訪問指令的格式:
access to [what]
by [who] [control]
簡單解釋:通過access to約束我們訪問的范圍(what)放仗,通過by設(shè)定哪個用戶(who)有什么權(quán)限(control)
ACL的詳細配置還是比較復(fù)雜的,可以看下下邊參考文檔的第三篇撬碟,寫的比較詳細诞挨,這里都不再贅述。
線上ACL控制配置解析
為了用戶能夠自主修改密碼呢蛤,部署了lam給用戶使用(見下文lam介紹)惶傻。希望能達到的效果是:
管理員能夠有全部權(quán)限,包含新建用戶其障,修改用戶屬性达罗,充值用戶密碼等
普通用戶只能修改自己的密碼,別的權(quán)限都沒有
配置如下:
access to attrs=userPassword通過屬性找到訪問范圍密碼,
超級管理員也就是我們ldap配置文件里寫的rootdn:"cn=admin,dc=163,dc=com"有寫(write)權(quán)限;
由于管理員可能不止一個粮揉,我創(chuàng)建了個管理員組"ou=Admin,dc=163,dc=com"把管理員統(tǒng)一都放到這個組下,管理員組下的所有用戶(dn.children)有寫權(quán)限抚笔;
匿名用戶(anonymous)要通過驗證(auth);
自己(self)有對自己密碼的寫(write)權(quán)限扶认,其他人(*)都沒有權(quán)限(none).
access to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=163,dc=com" write
by dn.children="ou=Admin,dc=163,dc=com" write
by anonymous auth
by self write
by * none
access to * 所有其他屬性,
超級管理員rootdn:"cn=admin,dc=163,dc=com"有寫(write)權(quán)限殊橙;
管理員"ou=Admin,dc=163,dc=com"成員有寫(write)權(quán)限辐宾;
其他人(*)只有讀(read)權(quán)限
access to *
by dn="cn=admin,dc=163,dc=com" write
by dn.children="ou=Admin,dc=163,dc=com" write
by * read
備份和還原
備份
ldapsearch -x -b "dc=163,dc=com" -D "uid=authz,ou=Public,dc=163,dc=com" -w "CzfdX629K7" > ldap.20180626.ldif
參數(shù)說明:
-x:進行簡單的驗證
-D:用來綁定服務(wù)器的DN
-w:綁定DN的密碼
-
-b:要查詢的根節(jié)點
authz賬號要有"dc=163,dc=com"的查詢權(quán)限
還原
ldapadd -x -c -D "cn=admin,dc=163,dc=com" -w "smile" -f ldap.20180626.ldif
參數(shù)說明:
-c:出錯后繼續(xù)執(zhí)行程序不終止,默認出錯即停止
-
-f:從文件內(nèi)讀取信息還原膨蛮,而不是標準輸入
還原的DN最好為管理員賬號叠纹,至少也要有要LDAP的寫入權(quán)限
web管理工具
用了phpldapadmin和ldap-account-management(簡稱lam)兩款web管理工具,強烈推薦lam敞葛,所以這里就不介紹其他的了
ldap-account-manager
安裝
1.安裝ldap-account-management
apt-get install ldap-account-manager
2.瀏覽器訪問
配置
lam的所有配置都可以在web端配置誉察,不需要去服務(wù)器上修改一行代碼,這個太好用了惹谐。
- 瀏覽器訪問后進入登錄頁面持偏,我們點擊右上角"LAM configuratrion"來在線編輯配置文件
![image.jpeg](https://upload-images.jianshu.io/upload_images/18861864-7057cf63bf5c20d3.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 看到如下頁面有兩個選項:"Edit general settings"來編輯通用配置,默認密碼lam氨肌,進入之后能配置密碼策略鸿秆、日志、管理員密碼怎囚,最重要的是更新掉管理員密碼卿叽,這個在后邊"Manage server profiles"管理的時候需要提供;"Edit server profiles"來編輯服務(wù)器配置恳守,我們先來編輯服務(wù)器配置
![image.jpeg](https://upload-images.jianshu.io/upload_images/18861864-e8068995d15c687f.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 進入如下頁面考婴,輸入默認密碼lam即可編輯配置,這里要說明一下的是紅框標注的"Manage server profiles"可以對服務(wù)器的配置文件進行配置井誉,例如增加蕉扮、刪除配置文件、配置文件重命名颗圣,最重要的是可以設(shè)置配置文件密碼(也就是我們剛輸入的密碼lam喳钟,但修改密碼需要管理員密碼,后邊配置)
![image.jpeg](https://upload-images.jianshu.io/upload_images/18861864-ccea257f447601ea.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 輸入密碼lam后就正式進入服務(wù)器配置頁在岂,看到第一個標簽"General setting"奔则,(可以先改下語言簡體中文保存,整站就給漢化啦蔽午,英文渣渣看起來就非常方便了)易茬,基本配置都看的很清晰了,主要是Tree suffix配置為自己的DC可以了
![image.jpeg](https://upload-images.jianshu.io/upload_images/18861864-575c68859d5b6d7d.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 接著來看這個頁面,"security settings"非常重要抽莱,配置以何種方式登錄web控制臺范抓,默認為Fixed list模式,就是下邊列表里配置的dn可以登錄食铐,我們LDAP里還沒有任何一個賬號(當(dāng)我們創(chuàng)建了賬號之后可以選擇"LDAP serch"的模式匕垫,讓普通賬號也能登錄以修改自己的密碼),這里要選擇fixed list模式并配置為我們LDAP的rootdn虐呻,設(shè)置一個密碼登錄之后創(chuàng)建賬號等操作
![image.jpeg](https://upload-images.jianshu.io/upload_images/18861864-10eada254e2ff07c.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 接下來就是"Account types"標簽頁的配置象泵,這里配置我們登錄web控制顯示的標簽,我這里只需要他顯示用戶斟叼,就把Group之類的都刪除了偶惠,保留了User
![image.jpeg](https://upload-images.jianshu.io/upload_images/18861864-c797d25680fe20a7.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
-
"Modules"頁面配置上一個具體每個account type顯示的模塊
[圖片上傳失敗...(image-d844e1-1578624340853)]
"Models setting"頁面配置models具體要顯示的內(nèi)容,不得不說配置非常詳細
![image.jpeg](https://upload-images.jianshu.io/upload_images/18861864-b7bf212af9c61ddd.jpeg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 經(jīng)過上邊的配置就可以進入控制臺新建賬號了朗涩,新建賬號之前一個有用的操作是修改用戶的默認RDN標致為uid忽孽,更高位置在登錄web控制臺后右上角配置文件編輯器里邊
![image.png](https://upload-images.jianshu.io/upload_images/18861864-683e9bea81204cdf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 基本配置完成,可以開始使用了馋缅,中文界面比較清晰扒腕,無需過多解釋啦。