LDAP环境搭建 OpenLDAP和phpLDAPadmin -- yum版

 

前言:
前两天公司要求做一个使用LDAP和Kerberos做一个认证授权系统,然后开始学习LDAP相关知识,期间找了不少博客按照步骤来安装,可是很多博客在配置的时候,都会遇到安装过程中一两个问题卡住了,然后就无法进行下去了,坑了我不少时间,其实我只是想先搭建好环境然后来深入浅出的学习,总结这两天的坑,便有了这篇博文,本次主要是快速上手篇,大部分会采用yum方式安装 力求快速上手,尽量少修改官方配置 最小化的环境,为了详细,文章中图片可能会多一点
正式使用还是要基于源码安装,如果你喜欢源码安装,可以等我后续的源码安装的博文.我也是在学习阶段如果遇到问题希望在留言板提出,我会定时查看,一起共同学习,发现我疏忽的地方.

为了确保文章的正确性,在写这篇文章的时候我有重新安装了一遍!好了话不多说,开始了!

环境要求

系统版本:CentOS-6.5-x86_64-minimal

虚拟机版本:VMware10

SSH客户端版本:Xshell 4 Bulid 0131

 

虚拟机实验环境:

名称 服务器名 ip 网址 用途
OpenLDAP服务器 LDAP_Cos6.5_64_01 192.168.1.142 yf01.oyf.xyz openLDAP授权
客户机 Cos6.5_x64_ldap_03 192.168.18.130 yf02.oyf.xyz phpLDAPadmin客户端
         

注:LDAP_Cos6.5_64_02 是为Kerberos预留的,

oyf.xyz是我之前申请的一个域名,你们可以根据自己的域名修改.

例如 example.com

 

yf01配置(OpenLDAP)

复制hosts文件备份

cp /etc/hosts /etc/hosts.bak20141203

生成配置文件

echo 
127.0.0.1    localhost.localdomain yf01.oyf.xyz yf01 oyf.xyz

192.168.1.130   yf02.oyf.xyz yf02

::1   localhost localhost.localdomain localhost6 localhost6.localdomain6

 > /etc/hosts

查看配置文件是否正确

cat /etc/hosts

修改主机名

sed  -i -e2c\HOSTNAME=yf01 /etc/sysconfig/network

查看主机名是否正确

cat /etc/sysconfig/network

关闭防火墙

service iptables stop

chkconfig iptables off

重启服务器 让selinux 生效  

reboot

 

查看状态

sestatus

 返回

SELinux status:                 disabled

显示软件仓库的配置

yum repolist

仓库标识          仓库名称                                       状态

base              CentOS-6 - Base - mirrors.ustc.edu.cn          6,518

extras            CentOS-6 - Extras - mirrors.ustc.edu.cn           35

updates           CentOS-6 - Updates - mirrors.ustc.edu.cn         405

repolist: 6,958

yum 安装openldap

yum install -y openldap-servers openldap-clients

启用日志记录

mkdir /var/log/slapd ; chmod 755 /var/log/slapd/ ;chown ldap:ldap /var/log/slapd/ 

echo local4.* /var/log/slapd.log >> /etc/rsyslog.conf

service rsyslog restart

创建证书

cd /etc/pki/tls/certs 

make slapd.pem

括号里是我填写的值 红色字体

Country Name (2 letter code) [XX]:国家名(CN)

State or Province Name (full name) []:州或省名(CHENGDU)

Locality Name (eg, city) [Default City]:城市名(CHENGHUA)

Organization Name (eg, company) [Default Company Ltd]:单位名(oyf)

Organizational Unit Name (eg, section) []:YFLDAP

Common Name (eg, your name or your servers hostname) []:主机名(yf01)



Email Address []:[email protected]

Country Name (2 letter code) [XX]:CN

State or Province Name (full name) []:CHENGDU  

Locality Name (eg, city) [Default City]:CHENGHUA

Organization Name (eg, company) [Default Company Ltd]:oyf  

Organizational Unit Name (eg, section) []:YFLDAP

Common Name (eg, your name or your servers hostname) []:yf01

Email Address []:[email protected]

PS: 这里输错了如果按住退格键删除会有奇奇怪怪的符号(^H),不能直接按退格键删除,可以按住ctrl+退格键强制删除!!

这条命令可以用来查看生成后的证书的信息

openssl x509 -in /etc/pki/tls/certs/slapd.pem -noout -text

Issuer: C=CN, ST=CHENGDU, L=CHENGHUA, O=oyf, OU=YFLDAP, CN=yf01/emailAddress=[email protected]

chmod 640 slapd.pem 

chown :ldap slapd.pem 

ln -s /etc/pki/tls/certs/slapd.pem /etc/openldap/certs/slapd.pem

创建LDAP加密密码

slappasswd

New password: 

Re-enter new password: 

{SSHA}fdhCKnBnOCuNh9v6cOEh3Xkm6HJbIsuS

cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

 

修改slapd.conf配置文件
vim /etc/openldap/slapd.conf

画框的都是被修改部分

需要注意的是 这里的配置参数前面不能有空格,不然会出莫名其妙的问题,例如 rootpw 前面一定一定不能有空格

所有 dc=my-domain 这个等于自己的主机名 如dc=oyf

70 TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

 71 TLSCertificateFile /etc/pki/tls/certs/slapd.pem

 72 TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

database monitor

110 access to *

111         by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read

112         by dn.exact="cn=Manager,dc=oyf,dc=xyz" read

113         by * none

114 

115 #######################################################################

116 # database definitions

117 #######################################################################

118 

119 database        bdb

120 suffix          "dc=oyf,dc=xyz"

121 checkpoint      1024 15

122 rootdn          "cn=Manager,dc=oyf,dc=xyz"

rootpw {SSHA}Xrb/0bdbww7pz7Jr+kVSv3LW4PSdyqgu

70 TLSCACertificateFile /etc/pki/tls/certs/ca-bundle.crt

71 TLSCertificateFile /etc/pki/tls/certs/slapd.pem

72 TLSCertificateKeyFile /etc/pki/tls/certs/slapd.pem

database monitor

110 access to *

111         by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read

112         by dn.exact="cn=Manager,dc=oyf,dc=xyz" read

113         by * none

114

115 #######################################################################

116 # database definitions

117 #######################################################################

118

119 database        bdb

120 suffix          "dc=oyf,dc=xyz"

121 checkpoint      1024 15

122 rootdn          "cn=Manager,dc=oyf,dc=xyz"

 

 

开启加密
vim /etc/sysconfig/ldap

SLAPD_LDAPS=yes

vim /etc/openldap/ldap.conf

这几个粘贴到最后几行

BASE dc=oyf,dc=xyz

URI ldap://localhost

TLS_REQCERT never

 

rm -rf /etc/openldap/slapd.d/*

vim /tmp/root.ldif

dn: dc=oyf,dc=xyz

dc: oyf

objectClass: dcObject

objectClass: organizationalUnit

ou: oyf.xyz

dn: ou=yafei,dc=oyf,dc=xyz

ou: yafei

objectClass: organizationalUnit

dn: ou=groups,dc=oyf,dc=xyz

ou: groups

objectClass: organizationalUnit

dn: ou=php,dc=oyf,dc=xyz

ou: php

objectClass: organizationalUnit

slapadd -v -n 2 -l /tmp/root.ldif

正常情况下会出现下面的提示:

slapadd -v -n 2 -l /tmp/root.ldif

added: "dc=oyf,dc=xyz" (00000001)

added: "ou=yafei,dc=oyf,dc=xyz" (00000002)

added: "ou=groups,dc=oyf,dc=xyz" (00000003)

added: "ou=php,dc=oyf,dc=xyz" (00000004)

_#################### 100.00% eta   none elapsed            none fast!         

Closing DB...

slapadd 这个主要用于 ldap服务没有启动的时候导入

添加一次就够了 第二次会出错

chown -R ldap:ldap /var/lib/ldap

chown -R ldap:ldap /etc/openldap/slapd.d

测试LDAP配置

rm -rf /etc/openldap/slapd.d/*

slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d

chown -R ldap:ldap /etc/openldap/slapd.d

设置SLAPD服务

chkconfig --level 235 slapd on

service slapd restart

测试 LDAP

ldapsearch -x -ZZ -h localhost

ldapsearch -x -H ldaps://localhost

ldapsearch -x -H ldaps://192.168.18.142

 

yf03配置(phpLDAPadmin)

 

cp /etc/hosts /etc/hosts.bak20141203 

echo  

127.0.0.1    localhost.localdomain yf03.oyf.xyz yf03 

192.168.18.142  yf01.oyf.xyz yf01 oyf.xyz 

::1  localhost localhost.localdomain localhost6 localhost6.localdomain6 

 > /etc/hosts 

cat /etc/hosts 

sed  -i -e2c\HOSTNAME=yf03 /etc/sysconfig/network 

cat /etc/sysconfig/network 

cp /etc/sysconfig/selinux /etc/sysconfig/selinux.bak 

sed -i s#SELINUX=enforcing#SELINUX=disabled#g /etc/sysconfig/selinux 

cat /etc/sysconfig/selinux 

关闭防火墙 

service iptables stop 

chkconfig iptables off 

重启服务器 让selinux 生效   

reboot

 

phpLDAPadmin安装

1 安装EPEL仓库

rpm -ivh http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

安装phpLDAPadmin

yum install -y phpldapadmin

修改 phpldapadmin配置文件 添加访问权限

vim /etc/httpd/conf.d/phpldapadmin.conf

Order Deny,Allow

Deny from all

Allow from 127.0.0.1

Allow from ::1

Allow from 192.168.18 //这里修改为你自己的ip段

修改禁止自动登录

vim /etc/phpldapadmin/config.php

目前这个参数在389行

//$servers->setValue(‘login‘,‘attr‘,‘uid‘);

$servers->setValue(server,host,192.168.18.142);

$servers->setValue(server,port,389);

$servers->setValue(server,base,array(dc=oyf,dc=xyz));

$servers->setValue(login,auth_type,cookie);

$servers->setValue(login,bind_id,cn=Manager,dc=oyf,dc=xyz);

$servers->setValue(login,bind_pass, );

输入之前slappasswd 设置的密码,然后就登录成功了!

 

 

 

好了就写到这里,睡觉觉去了!

参考资料

[1]CentOS 6安装配置LDAP

http://www.zhukun.net/archives/7548

[2]在 CentOS 6 初始化 LDAP Server

http://jamyy.us.to/blog/2012/01/3506.html

[3]【備忘】在 CentOS 6 安裝 phpMyAdmin 與 phpLDAPAdmin

http://jamyy.us.to/blog/2012/10/4172.html

[4]LDAP 入門

http://www.l-penguin.idv.tw/article/ldap-1.htm

[5][翻译]OpenLDAP管理员指南(仅前七章)

http://bbs.chinaunix.net/forum.php?mod=viewthread&action=printable&tid=422726

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。