zoukankan      html  css  js  c++  java
  • Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

     

    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

  • 相关阅读:
    存储结构接收数组
    oracle数据库sql根据查看执行计划优化sql--走不走索引
    多线程--Thread
    java常用集合族谱
    设计模式之二 适配模式
    Tomcat优化问题
    设计模式之一
    C++虚函数表,虚表指针,内存分布
    设计模式
    linux环境下的时间编程
  • 原文地址:https://www.cnblogs.com/AloneSword/p/4758814.html
Copyright © 2011-2022 走看看