OpenLDAP 學習筆記
chengkinhung
|
1#
chengkinhung 发表于 2007-11-18 22:48
OpenLDAP 學習筆記
參考網址:
https://www6.software.ibm.com/de ... c2210/section5.html (1) 何时使用LDAP ---------------------------------------------------------------------------------- 原则上,LDAP 在目的上类似于 NIS。两者都将一些关于网络配置的结构化信息从客户机发布 到服务器;但是在层次地构造哪些信息发布到哪些客户机、将请求重定向到其他必需的 LDAP 服务器以及以安全机制进行构建等方面,LDAP走得更远一些。此外,LDAP为客户机提供机制和 工具来更新存储在 LDAP 服务器中的信息,该服务器然后又将信息发布到请求该信息的客户机 (当然,需要具有权限)。 NIS于LDAP的一個區別是: LDAP可以做遞增的即時更新,而NIS的更新總是整個數據庫傳送的. (2) 安裝OpenLDAP之前需先配置的支持庫 ---------------------------------------------------------------------------------- 在运行 OpenLDAP(通常用于 Linux 上的免费软件实现,尽管存在一些商业实现)之前,需要 安装或者验证已经存在几个必要的库: [1] OpenSSL Transport Layer Security (TLS) 服务可从OpenSSL Project(或通过您的Linux 发行版的安装机制)而获得: whereis openssl; #檢查系統是否已經安裝OpenSSL; apt-get install openssl; #在Debian系統中安裝OpenSSL; [2] Kerberos Authentication Services 是可选支持的,但是最好安装它。MIT Kerberos或者 Heimdal Kerberos 将会工作。 whereis krb; #檢查系統是否已經安裝Kerberos; yum list | grep krb; #在RedHat系統中查找并安裝Kerberos; apt-get install krb5-user; #在Debian系統中安裝Kerberos; [3] Simple Authentication and Security Layer 可以作为基本发行版的一部分安装,但是也 可以作为 Cyrus SASL 获得。 whereis sasl; #檢查系統是否已經安裝; apt-get install libsasl2 libsasl2-modules libsasl2-modules-sql; [4] Sleepycat Software Berkeley DB 是推荐的,尽管其他DBM实现可能是兼容的。 參考網站: http://wiki.huihoo.com/index.php?title=Berkeley_DB whereis libdb; #檢查系統是否已經安裝; 在Debian系統使用apt-get工具安裝Berkeley v4.3數據庫: apt-get install libdb4.3; #Berkeley v4.3 Database Libraries [runtime]; apt-get install libdb4.3-dev; #Berkeley v4.3 Database Libraries [development]; apt-get install libdb4.3++; #Berkeley v4.3 Database Libraries for C++[runtime]; apt-get install libdb4.3++-dev; #Database Libraries for C++ [development]; 在Debian系統中使用apt-get工具安裝Berkeley v4.4數據庫: apt-get install libdb4.4 libdb4.4-dev; 在RedHat系統中使用yum工具安裝: yum install libdbi.i386; yum install libdbi-devel.i386; 使用Tarball資源安裝BerkeleyDB: cd build_unix ../dist/configure $ make # make install install to /usr/local/BerkeleyDB.4.4 [5] Posix线程和TCP包装器(TCP Wrappers)如果不是严格必需的,也最好安装它。 參考網址: http://www-128.ibm.com/developer ... _thread1/index.html ---------------------------------------------------------------------------------- (3) 安裝和配置OpenLDAP ---------------------------------------------------------------------------------- 在RedHat系統中使用yum工具安裝OpenLDAP: yum install openldap.i386; yum install openldap-devel.i386; yum install openldap-servers.i386; yum install openldap-clients.i386; #包括常用的客戶端工具(如ldapsearch等); 在Debian系統中使用apt-get工具安裝OpenLDAP: apt-get install slapd; #這是OpenLDAP的服務器套件; apt-get install ldap-utils; #這是OpenLDAP的實用工具(包括客戶端指令); 請注意: 使用apt-get工具安裝slapd時,會提問管理者密碼, 并會自動從分析和提取主機名稱 當作域組件的根(root)的設置參數, 并將之寫入slapd.conf配置文件中. 下載OpenLDAP的Tarball資源,并执行普通的安裝命令: wget ftp://ftp.openldap.org/pub/OpenL ... /openldap-2.4.6.tgz; tar zxvf openldap-2.4.6.tgz; cd openldap-2.4.6/; ./configure; make depend; make; make test; make install; 在完成基本的安装之后,还需要配置slapd配置,它通常位于/etc/openldap/slapd.conf或者 /usr/local/etc/openldap/slapd.conf路徑中(Debian系統預設在/etc/ldap/slapd.conf路徑), 在此配置文件中,应该包含您的域组件,例如: vim /etc/ldap/slapd.conf; #如下Debian系統(用apt-get命令)安裝的默認配置; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args loglevel 0 modulepath /usr/lib/ldap moduleload back_bdb sizelimit 500 tool-threads 1 backend bdb checkpoint 512 30 database bdb suffix "dc=hung,dc=mooo,dc=com" rootdn "cn=admin,dc=hung,dc=mooo,dc=com" rootpw {SSHA}lu5jWK06Yvs2Qjye8oTa/YAvaz/6GBmV directory "/var/lib/ldap" dbconfig set_cachesize 0 2097152 0 dbconfig set_lk_max_objects 1500 dbconfig set_lk_max_locks 1500 dbconfig set_lk_max_lockers 1500 index objectClass eq lastmod on access to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=hung,dc=mooo,dc=com" write by anonymous auth by self write by * none access to dn.base="" by * read access to * by dn="cn=admin,dc=hung,dc=mooo,dc=com" write by * read - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 請注意: 在默認的配置中原本是注釋了rootdn和缺少rootpw兩個參數的,這里必須啟用或添加; 這個rootdn對于LDAP而言,就像是Linux中的root身份一樣,可以對整個LDAP系統的數據庫資料 做新增,刪除和修改等操作. 例如上述所指定的rootdn: "cn=admin,dc=hung,dc=mooo,dc=com" 就是本LDAP服務器的管理員. rootpw就是管理員(rootdn)的密碼,可以使用明文密碼,但這不是好習慣,最好還是使用加密過 的字串. 可以使用slappasswd這個專用命令, 來創建后臺數據庫管理員密碼的密文字串,并且 可以指定字串的加密方式, 例如: slappasswd -h {SSHA}; #可用模式有: CRYPT,MD5,SMD5,SSHA和SHA(SSHA是預設且最強的); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - New password:XXXXXX #在這里輸入您想設定的密碼; Re-enter new password: #再重復輸入一次密碼; {SSHA}lu5jWK06Yvs2Qjye8oTa/YAvaz/6GBmV - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 請注意: 上述最后一行就是密文,須將它粘帖到slqpd.conf配置文件中,當作rootpw的設置值; slaptest; #檢驗配置是否正確(如下返回成功信息); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - config file testing succeeded - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 相關配置參數的說明: include 指定slapd要讀入的附加的配置文件; pidfile 指定slapd的PID文件; argsfile 指定slapd的進程執行參數; database 指定儲存目錄數據的后臺數據庫格式; suffix 指定查詢的DN后綴,如果匹配此后綴就將被傳遞給后臺數據庫; rootdn 指定后臺數據庫的管理員用戶帳號; rootpw 指定后臺數據庫的管理員用戶密碼; directory 指定后臺數據庫的儲存目錄; index 指定索引,用來維護給定的屬性; access to 設定目錄的ACL訪問控制; 關于后臺數據庫的類型: bdb Berkeley DB transactional backend; dnssrv DNS SRV backend; ldap LDAP Proxy backend; ldbm Lightweitht DBM backend; meta Meta directory backend; monitor Monitor backend; passwd Provides read-only access to passwd; perl Perl programmable backend; shell Shell(external program) backend; sql SQL programmable backend; 關于ACL訪問控制列表的允許動作: none 不允許訪問; auth 僅供驗證用途; compare 僅容許比較; search 可供搜索過濾訪問; read 數據可被查看; write 數據可被查看,也可被修改; ls -l /var/lib/ldap/; #看看數據庫文件; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -rw-r--r-- 1 openldap openldap 4096 2007-11-13 02:37 alock -rw------- 1 openldap openldap 8192 2007-11-13 02:17 __db.001 -rw------- 1 openldap openldap 2629632 2007-11-13 02:17 __db.002 -rw------- 1 openldap openldap 98304 2007-11-13 02:17 __db.003 -rw------- 1 openldap openldap 565248 2007-11-13 02:17 __db.004 -rw------- 1 openldap openldap 24576 2007-11-13 02:17 __db.005 -rw-r--r-- 1 openldap openldap 96 2007-11-13 02:17 DB_CONFIG -rw------- 1 openldap openldap 8192 2007-11-13 02:17 dn2id.bdb -rw------- 1 openldap openldap 32768 2007-11-13 02:17 id2entry.bdb -rw------- 1 openldap openldap 53979 2007-11-13 02:37 log.0000000001 -rw------- 1 openldap openldap 8192 2007-11-13 02:17 objectClass.bdb - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 請注意: 這個目錄下的數據庫非常重要,必須經常備份; /usr/sbin/slapd -4 -d10 -f /etc/ldap/slapd.conf; #以測試模式啟動slapd進程; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @(#) $OpenLDAP: slapd 2.3.30 (Mar 9 2007 05:43:02) $ root@windlord:/tmp/buildd/openldap2.3-2.3.30/debian/build/servers/slapd slapd starting daemon: added 4r listener=(nil) daemon: added 6r listener=0x8129180 daemon: select: listen=6 active_threads=0 tvp=NULL daemon: shutdown requested and initiated. daemon: closing 6 slapd shutdown: waiting for 0 threads to terminate slapd stopped. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - /etc/init.d/slapd start; #啟動ldap服務,然后用如下命令測試其反應; /usr/bin/ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # extended LDIF # # LDAPv3 # base <> with scope baseObject # filter: (objectclass=*) # requesting: namingContexts # # dn: namingContexts: dc=hung,dc=mooo,dc=com # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 請注意: 這是正常的返回信息(因為信息包含: namingContexts: dc=hung,dc=mooo,dc=com); |