LDAP 伺服端基本说明 389--Centos5
OPENLDAP 相关程式
slapd:openLDAP 的 daemon
slurpd:多个 LDAP 伺服器进行?写时所用的程式
相关档案及目录
/etc/openldap:openldap 的主要目录
/etc/openldap/slapd.conf:伺服器设定档
/etc/openldap/cacerts:为一目录,存放凭证相关资料
/etc/openldap/DB_CONFIG.example:资料库设定档范例
/etc/openldap/schema:为一目录,存放纲要资料,支援哪种资料类型
/var/lib/ldap:资料库的存放路径
/etc/openldap/ldap.conf:用户端设定档
LDAP目录结构组成
•DN(Distinguished Name):识别名称,一条记录的位置
•RDN(Relative Distinguished Name):相对识别名称,(指的就是cn及cn的值 ex.cn=weithenn,独一无二的属性)
•CN(Common Name) /uid:显示名称,一条记录的名字/ID
•OU(Organizational Unit):组织,一条记录所属组织
•DC(Domain Componet):网域元件,一条记录所属区域
包含 cn 的 dn 记录:dn:cn=username,ou=group,dc=kh,dc=edu,dc=tw
LDAP伺服器设定
1.安装 openldap-servers
yum -y install openldap openldap-devel openldap-servers
2.建立 LDAP 密码
slappasswd
New password:
Re-enter new password:
{SSHA}dKmbTeq19LgSL9tLKEiv7nyrkCJhaa83
设定密码
slappasswd -h {MD5}
3.设定slap.conf以下三个部份
vi /etc/openldap/slap.conf
先将预设的设定值加上#,把以下的规格全部放进来比较方便。
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/redhat/autofs.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/phpgwaccount.schema
include /etc/openldap/schema/phpgwcontact.schema
include /etc/openldap/schema/samba.schema
.
.
database ldbm
.
suffix "dc=server,dc=kh,dc=edu,dc=tw"
rootdn "cn=Manager,dc=domain,dc=kh,dc=edu, dc=tw"一般 cn 值是 Manager
rootpw {SSHA}dKmbTeq19LgSL9tLKEiv7nyrkCJhaa83 可为明码或加密码
4.透过档案传输(FTP)的方式,将原有的schema格式放到/etc/openldap/schema/
5.若要导入原有的domain.ldif 档案,记得检查是否关掉ldap,并且清空原先资料库档案
service slapd stop
rm -rf /var/lib/ldap/*
6.准备好后,导入之前的备份资料档案
slapadd -l 来源
slapadd -l /etc/openldap/domain.ldif
.导入后,记得修改资料库目录权限
chown -R ldap:ldap /var/lib/ldap/*
启动 LDAP 服务
service slapd start
用原domain.ldif内的使用者登入测试看看吧!
备份LDAP伺服器档案
1.可用于定期备份的执行档内
vi /root/back.sh
slapcat -b "dc=server,dc=kh,dc=edu,dc=tw" -l 存放位置
slapcat -b "dc=server,dc=kh,dc=edu,dc=tw" -l /tmp/domain.ldif 范例
存档后,可立即执行
chmod 755 back.sh
./back.sh
2.或直接执行
slapcat -b "dc=server,dc=kh,dc=edu,dc=tw" -l /tmp/domain.ldif
LDAP 用户端设定(Centos 6.2)
本文件参考Server World - ネットワ?クサ?バ?构筑
•http://www.server-world.info/
•http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=2
1.安装相关套件
yum -y install openldap openldap-clients nss-pam-ldapd
2.设定 LDAP 服务
setup
伺服器:ldap://IP 或 ldap://主机名称
ldap://ldap.do.kh.edu.tw
基底DN:dc=do,dc=kh,dc=edu,dc=tw
另外一法:可用修改设定档
vi /etc/openldap/ldap.conf
URI ldap://ldap.do.kh.edu.tw
BASE dc=do,dc=kh,dc=edu,dc=tw
接下来,编辑以下四个档案。
vi /etc/openldap/ldap.conf
# add at the last line
# LDAP server's URI
URI ldap://ldap.do.kh.edu.tw/
# specify Suffix
BASE dc=do,dc=kh,dc=edu,dc=tw
TLS_CACERTDIR /etc/openldap/cacerts
vi /etc/nslcd.conf
# line 131: specify URI, Suffix
uri ldap://163.32.X.X/
base dc=kh,dc=edu,dc=tw
ssl no
tls_cacertdir /etc/openldap/cacerts
vi /etc/pam_ldap.conf
# line 17: make it comment
# host 127.0.0.1
# line 20: specify Suffix
base dc=do,dc=kh,dc=edu,dc=tw
# add at the last line
uri ldap://ldap.do.kh.edu.tw/
ssl no
tls_cacertdir /etc/openldap/cacerts
pam_password md5
vi /etc/pam.d/system-auth(自行找到以下四列,再去修改)
auth sufficient pam_ldap.so use_first_pass
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
password sufficient pam_ldap.so use_authtok
session optional pam_ldap.so
# add if you need ( create home directory automatically if it's none )
session optional pam_mkhomedir.so skel=/etc/skel umask=077
vi /etc/nsswitch.conf
passwd: files ldap # line 33: add
shadow: files ldap # add
group: files ldap # add
netgroup: ldap # line 57: change
automount: files ldap # line 61: change
vi /etc/sysconfig/authconfig
USELDAP= yes # line 18: change
设定开机启用
chkconfig nslcd on
shutdown -r now
3.用户端无法立即重新启动,必须重新开机。
4.重新开机后,在Client端本机,用其他帐号登入测试看看!会出现没有家目录,是正常的,除非有安装nfs,或自动建立本机的目录。
LDAP 用户端,启用SSHD + VSFTPD
之前已经完成LDAP Client端的设定与启用。
接下来,我们再来将 VSFTPD 及 SSHD 也启用服务吧!
VSFTPD(启用FTP功能,好用!)
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bk
vi /etc/pam.d/vsftpd
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
session optional pam_keyinit.so force revoke
session include system-auth
session required pam_loginuid.so
SSHD(其实,这个功能可以不用启用,没事开给使用者,没什麽作用...)
cp /etc/pam.d/sshd /etc/pam.d/sshd.bk
vi /etc/pam.d/sshd
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
session optional pam_keyinit.so force revoke
session include system-auth
session required pam_loginuid.so
LDAP 用户端,结合openwebmail
设定整合之前,先确认perl-Authen-PAM有无安装
yum -y install perl-Authen-PAM
1.修改openwebmail的设定档,使用pam认证
vi /var/www/cgi-bin/openwebmail/etc/openwebmail.conf
auth_module auth_unix.pl 修改为 auth_module auth_pam.pl
另外再新增一行,这样让使用者登入时可以自动建立相关的目录与档案
create_syshomedir yes
2.在auth_pam.pl内参数,将login修改为 openwebmail
vi /var/www/cgi-bin/openwebmail/auth/auth_pam.pl
my $servicename = $conf{'servicename'} || "openwebmail";
3.??auth_pam.conf到主要位置
cp /var/www/cgi-bin/openwebmail/etc/defaults/auth_pam.conf /var/www/cgi-bin/openwebmail/etc/auth_pam.conf
4.修改auth_pam.conf内参数,servicename为openwebmail
vi /var/www/cgi-bin/openwebmail/etc/auth_pam.conf
servicename openwebmail
passwdfile_plaintext /etc/passwd
check_nologin no
check_shell no
check_cobaltuser no
4.在/etc/pam.d/内新增openwebmail
vi /etc/pam.d/openwebmail
auth include system-auth
account include system-auth
password include system-auth
session include system-auth
5.(可以不用修改,测试用)修改auth_ldap.conf
vi /var/www/cgi-bin/openwebmail/etc/defaults/auth_ldap.conf
ldaphost 192.168.0.1 # LDAP SERVER IP
ou user # LDAP ORGANIZATIONAL UNIT
cn Manager # LDAP USER
dc1 domain
dc2 kh
dc3 edu
dc4 tw
password secret
另外,不要乱改,因为系统启动时尚未启用ldap服务,所以先做原先的认证即可。我修改顺序后,导致开机异常。
vi /etc/nsswitch.conf
passwd: files ldap shadow: files ldap group: files ldap
5.重新启动openwebmail
/var/www/cgi-bin/openwebmail/openwebmail-tool.pl --init
openwebmail与LDAP问题:无法更改密码
问题描述
全部正常后,发现无法在openwebmail内修改个人档案,出现讯息change password error auth_pam.pl, ret -4, pam_authtok() err 6, Permission denied 。
在ldap伺服器中加入以下权限参数
vi /etc/openldap/slapd.conf
#使用者密码只能由自己变更, 对于?棵?褂谜咧幌抻糜诿苈胙橹? 其馀禁止取用
access to attrs=userPassword
by self write
by users read
by anonymous auth
#以上没有规范到的部份, 都授予读取权限
access to * by * read
次要LDAP
Step1.停止 「主要LDAP」
service slapd stop
Step2.修改 「主要LDAP」 slapd.conf 内容
vi /etc/openldap/slapd.conf
replogfile /var/lib/ldap/slapd.replog //指定 slurpd 更新档路径
replica host=server.kh.edu.tw:389 // Slaver LDAP 主机
suffix="dc=server,dc=kh,dc=edu,dc=tw" //更新的 DN
binddn="uid=admin2,cn=Manager,dc=shsps,dc=kh,dc=edu,dc=tw" // Slaver LDAP RootDN
bindmethod=simple //认证方式
credentials=123456 //Manager2的密码(注意须为明码)
tls=yes //开启 TLS 支援
Step3. 将 「主要LDAP」 BDB Copy To Slaver LDAP
方法一:直接??
在?? Master LDAP BDB 之前记得执行 db_checkpoint 已确保所有资料已写入 BDB 资料库中,本次我的实作为直接把 BDB 资料库??到 Slaver LDAP 的 BDB 资料库路径。
先确保资料写入资料库中
db_checkpoint-4.3 -1 -h /var/db/openldap-data/
scp /var/lib/ldap/* root@wwww.shsps.kh.edu.tw:/var/lib/ldap/
方法二:按照步骤来
汇出「主要LDAP」资料库资料
slapcat -b "dc=server,dc=kh,dc=edu,dc=tw" -l /tmp/contents.ldif
??资料到「次要LDAP」
scp /tmp/contents.ldif root@server.kh.edu.tw:/tmp/contents.ldif
汇入资料到「次要LDAP」
slapadd -l /tmp/contents.ldif
修该资料库拥有者
chown ldap.ldap /var/lib/ldap/*.*
Step4. 修改 Slaver LDAP slapd.conf 内容
vi /etc/openldap/slapd.conf
rootdn "uid=donlboy,cn=Manager,dc=domain,dc=kh,dc=edu,dc=tw" //Slaver LDAP RootDN
rootpw {MD5}FkyWuaT5c+FdMK43DGG6GA== //( MD5加密)
updatedn "uid=admin2,cn=Manager,dc=domain,dc=kh,dc=edu,dc=tw" //Master LDAP slurpd ??
updateref ldap:// www.111cn.net //更新要求送给 Master LDAP
Step5. 先启动 Slaver LDAP slapd daemon
service slapd start
Step6.后启动 Master LDAP slapd daemon
service slapd start
测试验证是否成功
ldapsearch -x -b "cn=Manager,dc=domain,dc=kh,dc=edu,dc=tw" uid=*