一些基本概念
Server的安裝與配置
Web管理工具phpldapadmin
Clients的安裝與配置
生產環境使用OpenLDAP做認證(主備、Server安全、TLS)
Server的安裝與配置
Web管理工具phpldapadmin
Clients的安裝與配置
生產環境使用OpenLDAP做認證(主備、Server安全、TLS)
一、基本概念
DN、OU、DC、O,這些概念網上都有資料。
一般用來做用戶認證,我是拿來做系統用戶認證,很多人做FTP或Samba用戶認證。
二、Server端的安裝與配置
openldap這玩意對細節的要求非常苛刻,稍不注意就會報錯。
參考:http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=1
http://www.openldap.org/doc/admin24/
openldap這玩意對細節的要求非常苛刻,稍不注意就會報錯。
參考:http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=1
http://www.openldap.org/doc/admin24/
SERVER端,操作系統:CentOS 6.2:
I、OpenLDAP的安裝與基本配置
1)Yum安裝
I、OpenLDAP的安裝與基本配置
1)Yum安裝
- yum -y install openldap openldap-servers openldap-clients openldap-devel //一定要全安裝,否則後面可能會報錯
2)vi /etc/sysconfig/ldap,確保SLAPD_LDAPI=yes
3)vi /etc/openldap/slapd.conf,添加如下兩行:
3)vi /etc/openldap/slapd.conf,添加如下兩行:
- pidfile /var/run/openldap/slapd.pid
- argsfile /var/run/openldap/slapd.args
4)備份/etc/openldap/slapd.d目錄,然後重建該目錄,並生成文件:
- cp -a /etc/openldap/slapd.d /etc/openldap/slapd.d.BAK2012-03-26
- rm -rf /etc/openldap/slapd.d/*
- slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
5)編輯重新生成後的配置文件:
a) vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif,修改第4行配置如下:
a) vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif,修改第4行配置如下:
- olcAccess: {0}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
注意嚴格按照原文件單詞之間的空格數進行修改,by前面有兩個空格
b) vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif,輸入以下行:
b) vi /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif,輸入以下行:
- dn: olcDatabase={1}monitor
- objectClass: olcDatabaseConfig
- olcDatabase: {1}monitor
- olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
- olcAddContentAcl: FALSE
- olcLastMod: TRUE
- olcMaxDerefDepth: 15
- olcReadOnly: FALSE
- olcMonitoring: FALSE
- structuralObjectClass: olcDatabaseConfig
- creatorsName: cn=config
- modifiersName: cn=config
注:以上所有輸入行,確保行首無空格。
6)修改slapd.d目錄的屬主和權限,並啓動ldap:
- chown -R ldap. /etc/openldap/slapd.d
- chmod -R 700 /etc/openldap/slapd.d
- /etc/rc.d/init.d/slapd start
- chkconfig slapd on
II、初始化用戶認證信息
1)依次輸入以下命令,並確保無報錯:
1)依次輸入以下命令,並確保無報錯:
- ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif
- ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
- ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
- ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
最有可能出現的錯誤:no permission to create parent directory. 我遇到了幾次,沒辦法解決,最後是嚴格按照上面的步驟,重新安裝了一遍才OK。
2)創建管理員密碼,儘量使用高強度密碼:
slappasswd
注:a) 上述命令會生成一個經過SSHA算法加密的密碼,保存該密文,後面要用到
b) slappasswd支持的加密算法,可使用man slappasswd查看
slappasswd
注:a) 上述命令會生成一個經過SSHA算法加密的密碼,保存該密文,後面要用到
b) slappasswd支持的加密算法,可使用man slappasswd查看
3)創建backend.ldif文件,輸入以下行:
- # replace the section "dc=***,dc=***" to your own suffix
- # replace the section "olcRootPW: ***" to your own password generated by slappasswd above
- dn: cn=module,cn=config
- objectClass: olcModuleList
- cn: module
- olcModulepath: /usr/lib64/openldap
- olcModuleload: back_hdb
- dn: olcDatabase=hdb,cn=config
- objectClass: olcDatabaseConfig
- objectClass: olcHdbConfig
- olcDatabase: {2}hdb
- olcSuffix: dc=abc,dc=com
- olcDbDirectory: /var/lib/ldap
- olcRootDN: cn=root,dc=abc,dc=com
- olcRootPW: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
- olcDbConfig: set_cachesize 0 2097152 0
- olcDbConfig: set_lk_max_objects 1500
- olcDbConfig: set_lk_max_locks 1500
- olcDbConfig: set_lk_max_lockers 1500
- olcDbIndex: objectClass eq
- olcLastMod: TRUE
- olcMonitoring: TRUE
- olcDbCheckpoint: 512 30
- olcAccess: to attrs=userPassword by dn="cn=root,dc=abc,dc=com" write by anonymous auth by self write by * no
- ne
- olcAccess: to attrs=shadowLastChange by self write by * read
- olcAccess: to dn.base="" by * read
- olcAccess: to * by dn="cn=root,dc=abc,dc=com" write by * read
然後執行如下命令:
- ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif
4)編輯frontend.ldif,並輸入以下行:
- # replace the section "dc=***,dc=***" to your own suffix
- # replace the section "userPassword: ***" to your own password generated by slappasswd above
- dn: dc=abc,dc=com
- objectClass: top
- objectClass: dcObject
- objectclass: organization
- o: abc com
- dc: abc
- dn: cn=root,dc=abc,dc=com
- objectClass: simpleSecurityObject
- objectClass: organizationalRole
- cn: root
- userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxx
- dn: ou=people,dc=abc,dc=com
- objectClass: organizationalUnit
- ou: people
- dn: ou=groups,dc=abc,dc=com
- objectClass: organizationalUnit
- ou: groups
然後執行如下命令:
- ldapadd -x -D cn=root,dc=abc,dc=com -W -f frontend.ldif //注意替換自己的cn和dc
最有可能出現的錯誤:ldap_bind: Invalid credentials (49)。檢查兩方面:上述命令中的cn和dc是否輸入正確,以及密碼是否輸入正確。
5) 如果忘記管理員密碼,或者想修改該密碼:
ldappasswd -x -v -S -W -D cn=root,dc=abc,dc=com
然後重啓openLDAP:/etc/init.d/slapd restart
待續...