Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
运维安全中心(堡垒机),免费版 6个月
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%85%8D%E7%BD%AE.
 

 

1.概念介绍

 

LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP。它是基于X.500标准的,但是简单多了并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,所有与LDAP相关的RFC都可以在LDAPman RFC网页中找到。 简单说来,LDAP是一个得到关于人或者资源的集中、静态数据的快速方式。 LDAP是一个用来发布目录信息到许多不同资源的协议。通常它都作为一个集中的地址本使用,不过根据组织者的需要,它可以做得更加强大

 

现在市场上有关LDAP的产品已有很多,各大软件公司都在他们的产品中集成了LDAP服务,如Microsoft的ActiveDirectory、Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服务。LDAP的开源实现是OpenLDAP,它比商业产品一点也不差,而且源码开放。

OpenLDAP 是最常用的目录服务之一,它是一个由开源社区及志愿者开发和管理的一个开源项目,提供了目录服务的所有功能,包括目录搜索、身份认证、安全通道、过滤器等等。大多数的 Linux 发行版里面都带有 OpenLDAP 的安装包。OpenLDAP 服务默认使用非加密的 TCP/IP 协议来接收服务的请求,并将查询结果传回到客户端。由于大多数目录服务都是用于系统的安全认证部分比如:用户登录和身份验证,所以它也支持使用基于 SSL/TLS 的加密协议来保证数据传送的保密性和完整性。OpenLDAP 是使用 OpenSSL 来实现 SSL/TLS 加密通信的

这里引申一下LDAP主要的简称含义:

  • o– organization(组织-公司)
  • ou – organization unit(组织单元-部门)
  • c – countryName(国家)
  • dc – domainComponent(域名)
  • sn – suer name(真实名称)
  • cn – common name(常用名称)

 

2. 环境介绍

 

这里准备3台虚拟机,在cloudstack上生成很方便,当然可以根据自己需求来部署,可以只部署简单的ldap,也可以部署ldap+ca,也可以部署ldap复制,前2个都可以在一台服务器上进行。

openldap master:         192.168.1.137            域名:openldap.54im.com

openldap slave:             192.168.1.143             域名:openldap2.54im.com

ca+openldap client:    192.168.1.111              域名:openldap-ca.54im.com

 

2. 准备工作

 

在3台服务器上均进行如下操作。

  • dns配置


vi /etc/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

  • selinux配置
当然生产环境建议还是开启,我这里偷懒下先关掉。
 
setenforce  0
 
  • epel配置
 
rpm -Uvh http://mirror-fpt-telecom.fpt.net/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
 

 

3. yum部署ldap

 

 

  • yum安装openldap:

 

 

  • 日志配置:

 

 

  • 创建管理员密码,尽量使用高强度密码
这里我设置的密码为 54im.com,生存的{SSHA}DOS0VOBzmvD3beMsuFllLBOi6CAt4Kcj一会配置文件要用

 

 

修改slapd.conf配置


vi /etc/openldap/slapd.conf 我这里列出要修改的项

 

修改suffix 和rootdn,rootpw,suffix我这里用了二级域名,如果你想用主域名也可以,写成dc=54im,dc=com,其中rootpw可以是明文,这里我们经过SSHA算法加密下,

 

  • 测试下配置文件是否修改成功

 

 

这里有个日志级别的问题

你可以同时设置几种日志级别,方法是将日志级别的数字加起来。 比如同时设置Trace和Stats级别,那么在slapd.conf中:

loglevel 257

或者启动OpenLDAP时,使用命令参数-d 257来指定

 

  • 创建数据库文件(从模版复制)生成DB_CONFIG
 

 

 

启动ldap服务,自动创建数据库文件

服务启动后,可以看到生成了几个数据库文件

 

  •  检查搜索域
-x 信息排序
-b 指定搜索范围起点

 

  • 数据录入
服务器正常运作后,就可以录入信息了。信息的录入有三种方法,一种是手工录入,一种是.ldif文件格式录入,一种是web界面录入(下面会介绍phpldapadmin录入)。信息录入用到ldapadd这个程序。这里我们介绍用.ldif方式录入
  • 创建待认证的用户 

 

 

  •  安装及配置迁移工具

 

  •  创建认证账户文件

主要的概念:

dn:唯一区分名

dc:所属区域

ou:所属组织

cn/uid:全名/登录ID

 

运行脚本migrate_base.pl,它会创建根项,并为 Hosts、Networks、Group和 People 等创建低一级的组织单元,指定为base.ldif文件,这里我们只有下面这3个

创建用户和组的数据库文件

 

  •  迁移系统用户到ldap数据库

如果出现错误:
ldap_bind: Invalid credentials (49)
就表示你要么给出了错误的”cn=”条目,要么给出了错误的密码
Enter LDAP Password:(输入你刚才设置的密码),正确之后会显示:

如果有防火墙,记得打开389端口

 

 

4. phpldapadmin安装

 

yum安装apache+php环境

 

yum安装phpldapadmin

 

我这里是yum安装的,所以config.d下面有phpldapadmin.conf,改下httpd.conf中的servername就可以。

注意:如果是下载的phpldapadmin包接下的话需要修改httpd.conf配置文件,最文件最后新增

修改phpldapadmin配置文件

 

重启httpd服务后访问

 

登录ldap

登录后即可新增用户和组等操作,看了到我们迁移进去的3个用户和组

 

 

5.ldap客户端配置

 

我这里客户端安装在192.168.1.111 这台服务器上,这台后面也会做证书服务器。

 

我们可以在终端使用图像化界面配置,在crt里面输入  authconfig-tui

 

这里注意,如果有dns的情况下话,可以用域名,否则要绑定hosts或者用IP,TLS这里我们先不选,后面再介绍

authconfig-tui会修改很多配置文件,先来检查下

 

 

 

 

 

启动nslcd服务,并设置为开机启动

验证:

显示如上信息,说明账户可以登录,但没找到用户主目录。这需要在本地配置nfs并通过autofs自动挂载服务器家目录到本地客户端

 

6.用户目录自动挂载

 

6.1 服务器端配置

nfs在openldap服务器上配置,默认centos 6上已经安装了nfs

配置nfs

如果开了selinux,则需要 setsebool  -P    use_nfs_home_dirs   on

vi /etc/sysconfig/nfs,去掉一些端口的注释符(可选,如果不取消这些端口注释,客户端showmount的时候会报错,不影响挂载)

重启nfs

配置防火墙

在客户端检查下nfs输出

 

6.2 客户端配置

默认情况下,centos 6已经安装了nfs及autofs,如果没有,则使用yum –y install nfs-utils autofs

配置autofs服务

重启下autofs服务:service autofs restart

客户端测试:

 

注意事项:

  对/etc/auto.nfs文件使用*及&通配符时,则/etc/auto.master里的挂载点必须与服务器的挂载点同名同目录/nfshome,否则客户端su – 切换时会提示找不到目录。

  不建议把ldap用户直接创建在/home文件夹里。否则由于/etc/auto.nfs文件里的*及&符号的自动匹配的作用,客户autofs会自动在内存中创建/home目录,会隐藏掉实际的/home目录

 

7.配置TLS传输加密

配置openldap的加密,可以用自签名证书,也可以用CA中心签名,这里我的CA中心签名,CA服务器是 192.168.1.111

前言:

为啥要用TLS?

Openldap默认使用简单验证,对slapd的所有访问都使用明文密码通过未加密通道进行。为了确保信息安全,需要对信息进行加密传输,SSL(Secure Sockets Layer)是一个可靠的解决方案。

它使用 X.509 证书,由可信任第三方(Certificate Authority (CA))进行数字签名的一个标准格式的数据。有效的数字签名意味着已签名的数据没有被篡改。如果签名的数据被更改,将不会通过验证

SSL/TLS 加密原理简介

SSL/TLS 是基于 PKI 机制的加密方式,包括证书认证、密钥交换、非对称加密、对称加密。SSL/TLS 采用 CA 作为服务端和客户端都信赖的具有权威性的组织,证书的颁发和认证都依赖于 CA,并假定 CA 颁发的证书是可靠的、可信赖的,证书里面的内容是真实的、有效的,并可用于客户机和服务器进行安全的可靠的通信加密。

SSL/TLS 证书用来认证服务器和客户机双方的身份,并用于密钥交换时候的非对称加密。密钥交换完毕之后,就可以用这个密钥做通信数据的对称加密了,具体的加密算法是由客户机和服务器互相协商得来。服务器和客户机由于 SSL/TLS 库的不同以及用户的配置不同,双方支持的算法列表不完全相同,当双方做 SSL/TLS 握手的时候,就需要将自己支持的算法列表及优先顺序告知对方,一旦对方按照优先顺序找到了第一个支持的算法,那么协商完成,否则双方协商失败,SSL/TLS 连接断开

  • 安装openssl

yum install openssl

  • 准备工作

 

 

  •  CA服务器生存自己的私钥,公钥(证书)

利用刚才创建的RSA私钥创建自签署的根证书

 

  •  openldap服务器生成私钥,并生成证书请求文件
在192.168.1.137这台服务器上执行,生成私钥的时候我选择了不要密码,否则启动服务的时候还要输入次密码

 

  •  向CA服务器请求证书

 

  •  CA服务器颁发证书
 

 

 

  •  openldap服务器下载自己的证书

 

 

  • openldap服务器安装证书:

 

 

  • CA服务器发布自己的公钥,openldap客户端下载公钥
客户端有图像界面的话可以用setup配置,运行system-config-authentication,然后勾选使用TLS,输入证书链接(可以用ftp或者http把CA服务器的公钥共享出来)
我这里直接scp过去(由于客户端和我ca服务器在一台,这里我只要复制下就可以,其他同学该rz的rz,该scp的scp吧)
cp /etc/pki/CA/private/CA.key /etc/openldap/cacerts/
  • openldap客户端修改配置
之前的是ldap,现在改为ldaps

然后重启/etc/init.d/nslcd restart

 

  •  openldap客户端测试

 

 

 

如果遇到如下错误:

在客户端的ldap.conf中加了“TLS_REQCERT allow”,重启nslcd 后出现了正常结果

  •  ldap验证帐号密码
这里的密码就是之前在openldap服务器端创建的系统帐号密码

 

 

  •  搜索ldap服务器域信息

 

 

 

8.配置openldap双主实现高可用 mirrorMode

 

首先我们来配置一台和主一样的openldap,保证以下条件

一、保证两台服务器里都配置的一样的根dc,比如我的是:dc=openldap,dc=54im,dc=com。

二、两边的管理帐户都有cn=Manager,dc=openldap,dc=54im,dc=com,密码都为54im.com。

三、保证目前AB两台服务器的数据完全一致。如果闲麻烦可以先导出所有数据,然后删除当作全新安装,待同步完成后从其中一台导入即可。

前言:

Openldap 2.4的同步机制已经和2.3完全不同,我这里的同步机制采用的是镜像模式,并且双向镜像。

  • yum安装ldap和http php phpldapadmin

 

  •  配置slapd.conf

 

 

我这里是yum安装的,所以config.d下面有phpldapadmin.conf,改下httpd.conf中的servername就可以。

注意:如果是下载的phpldapadmin包接下的话需要修改httpd.conf配置文件,最文件最后新增

  • 配置phpldapadmin

 

最后启动slpad服务

/etc/init.d/slapd start

  • 访问openldap2.54im.com 的phpldapadmin
 
  • 在openldap.54im.com上导出下数据
 
导出后会是文本的形式显示在界面上,我们把内容负责到一个文件里面叫 openldap.ldif
  • 在openldap2.54im.com上导入数据
在openldap 节点2上我们可以看到 把openldap.54im.com 上的数据导入进去了,目前为止2边的数据已经完全一致了。
  • 配置openldap.54im.com上的slapd.conf
注意先备份下原来的配置文件

由于openldap2上我没有配置TLS,所以这里主主同步我用ldap 389来同步。当然我openldap上同时开了 ldap和ldaps

 

 这里解释下各参数含义

 

 

重启ldap服务
killall -9 slapd
slapd -h ldap:/// ldaps:///
  • 配置openldap2.54im.com上的slapd.conf
openldap2 服务器上我没有配置TLS,这里我可以直接重启ldap服务  /etc/init.d/slapd restart
  • 在openldap.54im.com上新增用户
 
这里可以指定用户所属组,用户的shell
 
确定信息无误,点提交就完成新建用户
 
 
可以看到在People这个ou已经有我们新建的用户了
 
  • 在openldap2.54im.com上查看用户是否同步,并删掉用户,
  • 在openldap2.54im.com上新增组,然后看openldap.54im.com上是否也进行同步

 

9.另一个ldap管理工具 LDAP Account Manager

如果平时帐号操作比较频繁的话,推荐使用ldap account manager这个工具。
LDAPAccountManager(LAM)是一个用来管理储存在一个LDAP目录中的用户的web前端应用程序,管理系统,管理员可以通过加密的方式进行操作,增强了安全性。LAM支持管理的帐号类型有Samba2/3、Unix地址簿接口和计算机需要的信息,包括NIS映射、E-mail假名,MAC地址等。

LDAP Account Manager强大功能

1、使用LAM,可以通过Web接口较为直观的、简便的管理存储在LDAP目录里的用户、用户组和计算机系统账户。

2、管理Unix的用户、用户组、主机、域名。

3、强大的过滤和排序功能。

4、帐号属性管理。

5、多构造属性。

6、直观树状查看模式。

7、计划查看模式。

8、通过文件上传创建帐号。

9、所有帐号可导出为PDF文件格式。

10、管理用户、用户组、配额和自动创建删除用户的Home目录。

11、支持LDAP+SSL加密模式。

12、多国语言支持,如Catalan、Chinese(Traditional)等。

 

安装需求

1、PHP5语言环境和Perl语言环境。

2、OpenLDAP2.0或更高版本。

3、支持CSS的网页浏览器。

4、Apache WebServer,建议安装SSL、PHP-Module(PHP-Module with ldap、Gettext、XML、Mcrypt+mhash)等模块。

 

在CentOS6.5安装LDAP Account Manager比较方便,只用用官方提供的rpm包安装。

  • 下载安装:

这里会自动在httpd.conf生成配置文件,非常方便。

 

cat /etc/httpd/conf.d/lam.apache.conf

  •  配置文件修改

 

  •  登录:
配置文件中有机器这个OU,数据库中没有,所以这里提示创建machines这个OU
 
 
可以按树形结构查看
 
 

10.windown上对openldap进行验证

 

 

在windows想验证自己搭建的openldap是否配置成功,有个图像化的操作界面,首先电脑上得安装java软件jdk-8u5-windows-x64.exe。(不是浏览器那个java插件)

软件下载:http://pan.baidu.com/s/1ntHQF4P

软件解压后,运行lbe.bat这个

 

 

11.关闭openldap匿名查询

 

 

默认openldap匿名查询开了,所以只要别人知道你的openldap服务器ip就可以扫描到你的组织架构,OU,用户等信息,这些对外公布是不安全的。

比如上面这个图,我只输入了openldap的域名,勾上匿名,就可以查到你得额Base DN,然后保存后,就可以连接看到你整个组织架构了。

怎么关闭openldap的匿名查询呢,只要在slapd.conf配置文件中加入disallow bind_anon即可(加在 allow bind_v2 这行后面)。

发现已经连接不上我们的openldap了。

 

 

12.  附录

 

12.1. OpenSSL相关命令:

创建CA中心:( umask 77; openssl genrsa -out private/my-ca.key -des3 2048 )

openssl req -new -x509 -key private/my-ca.key -days 365 > my-ca.crt

私钥加密:openssl rsa -in encrypted.key -out unencrypted.key

私钥解密:openssl rsa -in unencrypted.key -out encrypted.key

生成私钥:( umask 77; openssl genrsa 1024 > dovecot.key )

生成CSR:(umask 77; openssl req -new -key somefile.key -out somefile.csr )

可用/etc/pki/tls/certs/Makefile创建CSR

查看CSR:openssl req -noout -in somefile.csr -text

创建CA签名证书:openssl ca -in my.csr -out my.crt

证书吊销:openssl ca -revoke badcert.crt

生成证书吊销列表CRL:openssl ca -gencrl -out revoked.crl

生成DER供firefox使用:openssl crl -in revoked.crl -outform. DER -out revoked.der.crl

检查CRL内容:openssl crl -in revoked.crl -noout -text

 

12.2 快速清除openldap配置

附:两种快速清除配置、重新导入数据的配置命令

==================     前面五行都是相同的   =====================

 

 

==================     以下为第一种方法   =====================

==================     以下为第二种方法   =====================

 

 

12.3 手工数据录入

 

手动录入方法

第一步是要建立DN:

注意:如果你用复制/粘贴功能把以上内容拷贝过去,一定要注意每行后面不要有空格,建议还是手工输入,按Ctrl+d存盘。

第二步是建立RDN:

输入密码,这里的密码是在配置文件中rootpw项设置的密码,不是操作系统中root用户的密码。验证通过后就可输入以下内容:

输入完所有信息后,按Ctrl+d结束存盘。如果出现出错信息,请查一下对象类和属性的对应关系有没有错或输入失误。初学者就容易出错的地方是对象类和属性的对应关系没有处理好。对象类和属性是在schema文档中定义的。它们之间的关系是这样的,对象类中有些属性是必选的,有些属性是可选的。录入信息的属性必须在对象类中有定义才能用。

输入以下命令可查询到刚才输入的信息。

如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的userPassword and mail。要查询到这些受限内容,需要通过验证才可以:

 

 

本文参考:

http://www.server-world.info/en/note?os=CentOS_6&p=ldap&f=4

http://iceblood.blog.163.com/blog/static/11331322720125843938486/

http://blog.sina.com.cn/s/blog_92dc41ea0101fyh9.html

http://blog.sina.com.cn/s/blog_64aac6750101gwst.html

http://mosquito.blog.51cto.com/2973374/1098456

目录
相关文章
|
1月前
|
存储 缓存 Linux
【Linux】另一种基于rpm安装yum的方式
通过本文的方法,您可以在离线环境中使用RPM包安装YUM并进行必要的配置。这种方法适用于无法直接访问互联网的服务器或需要严格控制软件源的环境。通过配置本地YUM仓库,确保了软件包的安装和更新可以顺利进行。希望本文能够为您在特定环境中部署YUM提供实用的指导。
142 0
|
2月前
OpenEuler配置本地yum源
本文档介绍了如何在服务器和虚拟机上挂载光盘镜像并配置本地Yum仓库,包括创建挂载点、编辑repo文件、实现挂载持久化以及通过FTP共享本地仓库的方法。适用于需要频繁安装软件包或管理多台机器的场景。
433 0
OpenEuler配置本地yum源
|
3月前
|
关系型数据库 MySQL Linux
Linux 安装 mysql【使用yum源进行安装】
这篇文章介绍了在Linux系统中使用yum源安装MySQL数据库的步骤,包括配置yum源、安装MySQL服务、启动服务以及修改root用户的默认密码。
Linux 安装 mysql【使用yum源进行安装】
|
2月前
|
Unix Linux Go
Linux 使用Yum安装Go和配置环境
Linux 使用Yum安装Go和配置环境
|
4月前
|
关系型数据库 MySQL Linux
在CentOS上使用yum安装与使用MySQL
在CentOS操作系统上使用yum包管理器安装和配置MySQL数据库的详细步骤,包括下载MySQL的yum源配置、安装MySQL服务、启动和停止服务、设置开机自启动、获取临时密码、修改root用户密码、授权用户以及处理相关问题。同时,文章还包含了一些操作的截图,帮助用户更直观地理解安装和配置过程。
1140 0
在CentOS上使用yum安装与使用MySQL
|
4月前
|
Oracle Java 关系型数据库
yum安装指定版本的openJDK
yum安装指定版本的openJDK
|
4月前
|
Web App开发 缓存 Ubuntu
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget
226 11
|
4月前
|
网络协议 Linux
CentOS7 yum安装报错“Could not resolve host: mirrorlist.centos.org;"之解决办法(换源)
CentOS7 yum安装报错“Could not resolve host: mirrorlist.centos.org; Name or service not known“之解决办法(换源)
|
4月前
|
Linux Shell Apache
LDAP学习笔记之七:Centos7 搭建openldap+图形界面
LDAP学习笔记之七:Centos7 搭建openldap+图形界面
|
5月前
|
SQL Python
你需要在你的系统上安装`sqlmap`。这通常可以通过下载其源代码并编译,或者使用包管理器(如`apt`、`yum`或`pip`,但请注意,`pip`通常不直接提供`sqlmap`)来完成。
你需要在你的系统上安装`sqlmap`。这通常可以通过下载其源代码并编译,或者使用包管理器(如`apt`、`yum`或`pip`,但请注意,`pip`通常不直接提供`sqlmap`)来完成。