天天看點

LDAP安裝步驟

大資料平台,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>&lt;&lt;&lt;&lt;&lt;&lt;&lt;由于後面需要配合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    &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;參考第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 &gt; /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安裝--&gt;sldap.conf的配置--&gt;啟動--&gt;OK”,但是對于我來說,研究了2周多啊(工作空閑時間),真心很崩潰。即使一個小問題,自己也無法自行發現(了解問題)。是以,很多事情看似很簡單,甚至于不屑于。做做試試,才能深深體會,理想和現實的差距。

本文轉自 hsbxxl 51CTO部落格,原文連結:http://blog.51cto.com/hsbxxl/1983921,如需轉載請自行聯系原作者