大資料平台,LDAP和kerberos的統一賬戶管理和認證是必不可少的。通過Openldap來搭建LDAP伺服器。
1. 安裝openldap軟體包
1
<code>yum install openldap openldap-* -y</code>
2. 初始化配置檔案,不要手動去建立slapd.conf,可能會由于格式問題導緻問題
<code>cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf</code>
3. 初始化資料庫配置檔案
<code>cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG</code>
4. 修改權限
2
<code>chown -R ldap.ldap /etc/openldap </code>
<code>chown -R ldap.ldap /var/lib/ldap</code>
5. slapd.conf配置檔案如下
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<code># egrep -v </code><code>"#|^$"</code> <code>/etc/openldap/slapd.conf</code>
<code>include /etc/openldap/</code><code>schema</code><code>/corba.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/core.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/cosine.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/duaconf.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/dyngroup.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/inetorgperson.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/java.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/misc.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/nis.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/openldap.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/ppolicy.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/collective.</code><code>schema</code>
<code>include /etc/openldap/</code><code>schema</code><code>/kerberos.</code><code>schema</code> <code><<<<<<<由于後面需要配合kerberos認證,這裡增加kerberos.</code><code>schema</code><code>,參考第6步驟</code>
<code>allow bind_v2</code>
<code>pidfile /var/run/openldap/slapd.pid</code>
<code>argsfile /var/run/openldap/slapd.args</code>
<code>loglevel 4095</code>
<code>TLSCACertificatePath /etc/openldap/certs</code>
<code>TLSCertificateFile </code><code>"\"OpenLDAP Server\""</code>
<code>TLSCertificateKeyFile /etc/openldap/certs/</code><code>password</code>
<code>access </code><code>to</code> <code>*</code>
<code> </code><code>by</code> <code>self write</code>
<code> </code><code>by</code> <code>users </code><code>read</code>
<code> </code><code>by</code> <code>anonymous </code><code>read</code>
<code>database</code> <code>config</code>
<code> </code><code>by</code> <code>dn.exact=</code><code>"gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"</code> <code>manage</code>
<code> </code><code>by</code> <code>* none</code>
<code>database</code> <code>monitor</code>
<code> </code><code>by</code> <code>dn.exact=</code><code>"gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth"</code> <code>read</code>
<code> </code><code>by</code> <code>dn.exact=</code><code>"cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"</code> <code>read</code>
<code>database</code> <code>bdb</code>
<code>suffix </code><code>"dc=testserver,dc=com"</code>
<code>checkpoint</code> <code>1024 15</code>
<code>cachesize 10000</code>
<code>rootdn </code><code>"cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"</code>
<code>rootpw {SSHA}LPbWMTEOprpTvqjmxy/mTW+i0IPrugJc <<<<<<<<<<<<<<<參考第7步驟,生成加密密碼</code>
<code>directory /var/lib/ldap</code>
<code>index</code> <code>objectClass eq,pres </code>
<code>index</code> <code>ou,cn,mail,surname,givenname eq,pres,sub </code>
<code>index</code> <code>uidNumber,gidNumber,loginShell eq,pres </code>
<code>index</code> <code>uid,memberUid eq,pres,sub </code>
<code>index</code> <code>nisMapName,nisMapEntry eq,pres,sub</code>
6. 安裝kerberos軟體
<code>yum install krb5* -y</code>
查找kerberos.schema檔案,并拷貝到/etc/openldap/schema/kerberos.schema
<code># cd /usr/share/doc/krb5-server-ldap-1.10.3/</code>
<code># ls</code>
<code>60kerberos.ldif kerberos.ldif kerberos.</code><code>schema</code>
7. 生成LDAP的root管理密碼
<code>slappasswd -s 123456</code>
<code>{SSHA}L4uH7lVxwdS0/L/vspdseXORcneIWfeb</code>
8. 檢查配置檔案是否有格式錯誤
<code># slaptest -f /etc/openldap/slapd.conf</code>
<code>config file testing succeeded</code>
9. 準備生成LDAP資料庫結構
先删除slapd.d的原有結構
<code>rm -rf /etc/openldap/slapd.d/*</code>
生成新的資料結構
<code>slaptest -f /etc/openldap/slapd.conf -F/etc/openldap/slapd.d</code>
修改權限,這個很重要,不然後面會報錯
<code>chown -R ldap:ldap /etc/openldap/slapd.d</code>
每次修改都需要重新開機ldap
<code>service slapd restart</code>
10. 測試LDAP的連接配接,這裡足足讓我糾結兩周,無數次的安裝,有的時候可以正常登陸,有的時候會報錯,明确說認證錯誤(密碼錯誤)。這個一直讓我以為是密碼部分的格式設定有問題。各種嘗試都無法正常解決掉。最後突然發現,是rootdn的問題,而不是rootpw的問題。
<code># ldapsearch -x -D </code><code>"cn=admin,dc=testserver,dc=com"</code> <code>-h 10.24.103.17 -W -b </code><code>'ou=People,dc=testserver,dc=com'</code>
<code>Enter LDAP </code><code>Password</code><code>: </code>
<code>ldap_bind: Invalid credentials (49)</code>
就是說,下面的指令中,要完整的複制sldap.conf中的“rootdn "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"”條目資訊,不能多,不能少。
這樣才能正常查詢結果
<code>ldapsearch -x -D </code><code>"cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"</code> <code>-h 10.24.103.17 -W</code>
11. LDAP建立成功之後,需要建立資料。由于我是遷移資料過來,隻是将生産的ldap資料導出導入。
ldap資料備份的方式有兩種:一種是通過ldapsearch ,一種是通過slapcat指令。很多人都是建議通過slapcat來完成,但是我測試一下,沒有成功,就先使用ldapsearch導出,ldapadd導入的
<code>/usr/sbin/slapcat > /tmp/liang/ldapdbak.ldif</code>
<code>/usr/sbin/slapadd -l /tmp/liang/ldapdbak.ldif</code>
12. 導入資料指令
<code>ldapadd -x -D </code><code>"cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"</code> <code>-h 10.24.103.17 -W -f ldapexport.ldif</code>
13. 查詢資料,确認已經導入成功即可
<code>ldapsearch -LLL -x -D </code><code>"cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"</code> <code>-W -b </code><code>"dc=testserver,dc=com"</code> <code>'(uid=*)'</code>
15. 在用戶端安裝ldap軟體,我比較偷懶,全都安裝了,實際隻安裝openldap-clients就可以了
16. 設定LDAP用戶端,用戶端設定有幾種方式
---1. 通過圖形化指令完成LDAP client設定
<code>LANG=C authconfig-tui</code>
<a href="https://s3.51cto.com/oss/201711/21/05d32feb59999f4a1aafbad5dcde5919.png" target="_blank"></a>
<a href="https://s3.51cto.com/oss/201711/21/841e76ae51eb378ee3f389f712d7bc08.png" target="_blank"></a>
---2. 通過authconfig指令,配置用戶端。由于是大資料平台運維,是以我是通過指令行實作的,這樣比較友善批量處理。
<code>authconfig </code><code>--enablemkhomedir \</code>
<code>--disableldaptls \</code>
<code>--enablemd5 \</code>
<code>--enableldap \</code>
<code>--enableldapauth \</code>
<code>--ldapserver=ldap://10.24.103.17 \</code>
<code>--ldapbasedn="dc=testserver,dc=com" \</code>
<code>--enableshadow \</code>
<code>--update</code>
17. 然後在client上,root使用者su - username,可以發現,已經配置成功了。
看了很多人的blog,很簡單的步驟,“yum安裝-->sldap.conf的配置-->啟動-->OK”,但是對于我來說,研究了2周多啊(工作空閑時間),真心很崩潰。即使一個小問題,自己也無法自行發現(了解問題)。是以,很多事情看似很簡單,甚至于不屑于。做做試試,才能深深體會,理想和現實的差距。
本文轉自 hsbxxl 51CTO部落格,原文連結:http://blog.51cto.com/hsbxxl/1983921,如需轉載請自行聯系原作者