LDAP目录服务

1、ldap目录服务介绍:

目录是一类为了浏览和搜索数据而设计的特殊的数据库,目录服务是按树状形式存储信息的,目录包含基于属性的描述信息,并且支持高级的过滤功能,一般来说,目录不支持大多数事务型数据库所支持的高吞吐量和复杂的更新操作。如果是更新操作,要么全部更新,要么就不更新,存在的业务范围在于可以大量的读取和搜索,并不适大量的写入。

2、什么是ldap:

目录服务通常有两个国际标准,分别是X.500和LDAP,X.500是ITU定义的目录标准,而LDAP是基于TCP/IP的目录访问协议,是Internet上目录服务的通用访问协议。

LDAP是Lightweight Directory Access Protocol(轻量级目录访问协议)的缩写,特指基于X.500的目录访问协议的简化运行在TCP/IP或者其他的面向连接的传输服务之上

3、LDAP目录服务的特点:

1)是一个跨平台的,标准的协议,近几年来得到业界的广泛的认可。

2)LDAP的结构是用树形结构来表示的,而不是表格,所以不需要SQL语句来维护。

3)提供了静态数据的快速查询方式,但是在写数据方面并不擅长。

4)可以使用基于“推”或“拉”的赋值信息技术,用简单的或基于安全证书的安全认证,复制部分或全部数据,寄保证了数据的安全性也提高了数据的访问效率。

5)LDAP是一个安全的协议,LDAP v3支持SASL、SSL和TLS,使用认证来确保事务的安全性,另外,LDAP提供了不同层次的访问控制,以限制不同用户的访问权限。

6)LDAP支持异类数据存储,存储的数据可以是文本资料,二进制图片等。

7)Client/Server模型,Server端用于存储树,Client端提供操作目录信息树的工具可以将数据库的内容一文本格式呈现在我们面前。

8)LDAP是一种开放的Internet标准,是跨平台的Internet协议,它是基于X.500标准的,与X.500不同,LDAP支持TCP/IP。

4、LDAP是怎样工作的:

LDAP目录服务是基于Client/Server模式的,一个或者多个LDAP服务器包含着组成整个目录信息树的数据,ldap客户端连接到服务器并且发出一个请求,然后获取到所需要的数据(通常该指针是指向另一个LDAP服务器),无论客户端连接到哪个LDAP服务器,它看到的都是同一个目录视图,这是LDAP这类全局目录服务的一个重要特征。

5、LDAP的几个重要功能:

1)基本的目录查询服务

2)目录查询代理服务

3)异机复制数据(主从同步)

6、安装ldap server:

[root@ldap-server ~]# cat /etc/redhat-release   #查看系统版本
CentOS release 6.5 (Final) [root@ldap-server ~]# uname -rm #查看内核版本和位数
2.6.32-431.el6.x86_64 x86_64
[root@ldap-server ~]# ntpdate pool.ntp.org #时间同步
15 Sep 16:39:10 ntpdate[8237]: adjust time server 46.101.50.70 offset -0.049546 sec [root@ldap-server ~]# date #查看时间
Fri Sep 15 16:39:42 CST 2017 [root@ldap-server ~]# crontab -e #编辑定时任务,把时间同步命令添加进去
*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1 [root@ldap-server ~]# crontab -l #查看定时任务
*/10 * * * * /usr/sbin/ntpdate pool.ntp.org >/dev/null 2>&1
[root@ldap-server ~]# echo "192.168.2.128 xyanp.org" >>/etc/hosts #编辑hosts文件***** [root@ldap-server ~]# tail -1 /etc/hosts #查看添加的内容
192.168.2.128 xyanp.or

安装前查看是否有安装:

[root@ldap-server ~]# rpm -qa |grep openldap  #rpm查看
openldap-2.4.23-32.el6_4.1.x86_64 [root@ldap-server ~]# yum -y install openldap openldap-* nscd nss-pam-ldapd nss-* pcre pcre-* #yum安装依赖软件和ldap软件 [root@ldap-server ~]# cd /etc/openldap/ #切换目录 [root@ldap-server openldap]# cp /usr/share/openldap-servers/slapd.conf.obsplete ./slapd.conf #拷贝配置文件 [root@ldap-server openldap]# ll slapd.conf #查看拷贝后的文件
-rw-r--r--. 1 root root 4635 Sep 15 17:15 slapd.conf [root@ldap-server openldap]# slappasswd -s xyp #生成ldap的密码
{SSHA}P9utUoQsJvAIIeFTV6pd1u0pWMAr5bTW [root@ldap-server openldap]# echo "rootpw {SSHA}P9utUoQsJvAIIeFTV6pd1u0pWMAr5bTW" >>slapd.conf #把生成的密码追加到slapd.conf里面去 [root@ldap-server openldap]# tail -1 slapd.conf #查看是否追加成功
rootpw {SSHA}P9utUoQsJvAIIeFTV6pd1u0pWMAr5bTW
[root@ldap-server openldap]# cp slapd.conf slapd.conf.bak #备份配置文件 [root@ldap-server openldap]# vim slapd.conf #编辑配置文,蓝色部分的注释掉,添加红色部分的内容
114 # database bdb
115 # suffix "dc=my-domain,dc=com"
116 # checkpoint 1024 15
117 # rootdn "cn=Manager,dc=my-domain,dc=com"
118 119 database bdb
120 suffix "dc=xyanp,dc=org"
121 rootdn "cn=admin,dc=xyanp,dc=org" [root@ldap-server openldap]# cat >>slapd.conf<<EOF #添加内容到配置文件
> loglevel 296
> cachesize 1000
> checkpoint 2048 10
> EOF [root@ldap-server openldap]# tail -4 slapd.conf #查看添加的内容
rootpw {SSHA}P9utUoQsJvAIIeFTV6pd1u0pWMAr5bTW #这条是之前添加的
loglevel 296 #日志级别
cachesize 1000 #缓存条数
checkpoint 2048 10 #2048表示写入内存的文件大小,10表示每10分钟写一次 [root@ldap-server openldap]# vim slapd.conf #设置访问权限,将原来的全部删掉,重新添加下面部分
98 access to *
99 by self write
100 by anonymous auth
101 by * read

企业里的设置权限方式:(限于2.3版本)

access to *
by self write
by dn.exact="uid=auth,ou=sysusers,dc=intra,dc=qq,dc=com" peername.regex=127\.0\.0\.1 write
by dn.subtree="ou=sysusers,dc=intra,dc=qq,dc=com" read
by anonymous auth
[root@ldap-server openldap]# vim /etc/rsyslog.conf  #配置rsyslog保存ldap的日志信息,在rsyslog最下面添加下面内容
# save ldap journal to ldap.log
local4.* /var/log/ldap.log [root@ldap-server openldap]# /etc/init.d/rsyslog restart #重启rsyslog
[root@ldap-server openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG #配置ldap的数据库 [root@ldap-server openldap]# ll /var/lib/ldap/DB_CONFIG #查看数据库结果
-rw-r--r--. 1 root root 845 Sep 19 11:26 /var/lib/ldap/DB_CONFIG [root@ldap-server openldap]# chown -R ldap:ldap /var/lib/ldap/DB_CONFIG #授权 [root@ldap-server openldap]# chmod 700 /var/lib/ldap/DB_CONFIG #授权 [root@ldap-server openldap]# ll /var/lib/ldap/ #查看
-rwx------. 1 ldap ldap 845 Sep 19 11:26 DB_CONFIG [root@ldap-server openldap]# slaptest -u #测试配置文件是否成功
config file testing succeeded [root@ldap-server openldap]# /etc/init.d/slapd start #启动ldap
Starting slapd: [ OK ] [root@ldap-server openldap]# chkconfig slapd on #加入开机自启动 [root@ldap-server openldap]# chkconfig --list slapd #查看
slapd 0:off 1:off 2:on 3:on 4:on 5:on 6:off [root@ldap-server openldap]# cat /var/log/ldap.log #查看日志
Sep 19 11:50:08 ldap-server slapd[18680]: @(#) $OpenLDAP: slapd 2.4.40 (Mar 22 2017 06:29:21) $#012#011mockbuild@c1bm.rdu2.centos.org:/builddir/build/BUILD/openldap-2.4.40/openldap-2.4.40/build-servers/servers/slapd [root@ldap-server openldap]# ldapsearch -LLL -W -x -H ldap://xyanp.org -D "cn=admin,dc=xyanp,dc=org" -b "dc=xyanp,dc=org" "(uid=*)" #查询数据库内容
Enter LDAP Password: #输入最开始设置的密码
ldap_bind: Invalid credentials (49) #报错信息

解决办法:

[root@ldap-server openldap]# rm -rf  slapd.d/*   #删除原来默认的配置文件

[root@ldap-server openldap]# slaptest -f slapd.conf -F slapd.d/  #重新生成配 置文件
config file testing succeeded [root@ldap-server openldap]# ll slapd.d/ #查看
total 8
drwxr-x---. 3 root root 4096 Sep 19 16:00 cn=config
-rw-------. 1 root root 1274 Sep 19 16:00 cn=config.ldif [root@ldap-server openldap]# chown -R ldap:ldap slapd.d #重新授权 [root@ldap-server openldap]# /etc/init.d/slapd restart #重启服务
Stopping slapd: [ OK ]
Starting slapd: [ OK ] [root@ldap-server openldap]# netstat -utpln|grep 389 #查看ldap端口
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 19013/slapd
tcp 0 0 :::389 :::* LISTEN 19013/slapd [root@ldap-server openldap]# ldapsearch -LLL -W -x -H ldap://xyanp.org -D "cn=admin,dc=xyanp,dc=org" -b "dc=xyanp,dc=org" "(uid=*)"#再测试时,故障解决
Enter LDAP Password: #输入密码
No such object (32) #提示没有数据内容

7、安装ldap客户端:

software:ldap-account-manager-3.7.tar.gz

[root@ldap-server openldap]# yum -y install httpd php php-ldap php-gd  #安装lamp环境
[root@ldap-server tools]# tar xf ldap-account-manager-3.7.tar.gz -C /var/www/html/ #解压 [root@ldap-server tools]# cd /var/www/html/ [root@ldap-server html]# mv ldap-account-manager-3.7 ldap [root@ldap-server html]# cd ldap/config #切换目录 [root@ldap-server config]# ll #查看
total 36
-rw-r--r--. 1 root root 241 Sep 19 18:18 config.cfg
-rw-r--r--. 1 root root 241 Mar 26 2012 config.cfg_sample
-rw-r--r--. 1 root root 2408 Sep 19 18:18 lam.conf
-rw-r--r--. 1 root root 2408 Mar 26 2012 lam.conf_sample
-rw-r--r--. 1 root root 1041 Mar 26 2012 language
drwxr-xr-x. 3 root root 4096 Mar 26 2012 pdf
drwxr-xr-x. 2 root root 4096 Mar 26 2012 profiles
drwxr-xr-x. 2 root root 4096 Mar 26 2012 selfService
-rw-r--r--. 1 root root 183 Mar 26 2012 shells [root@ldap-server config]# cp config.cfg_sample config.cfg #拷贝并备份 [root@ldap-server config]# cp lam.conf_sample lam.conf #拷贝并备份 [root@ldap-server config]# sed -i "s#cn=Manager#cn=admin#g" lam.conf #文件替换 [root@ldap-server config]# sed -i "s#dc=my-domain#dc=xyanp#g" lam.conf [root@ldap-server config]# sed -i "s#dc=com#dc=org#g" lam.conf [root@ldap-server config]# diff lam.conf lam.conf_sample #文件对比修改
13c13
< admins: cn=admin,dc=xyanp,dc=org
---
> admins: cn=Manager,dc=my-domain,dc=com
55c55
< types: suffix_user: ou=People,dc=xyanp,dc=org
---
> types: suffix_user: ou=People,dc=my-domain,dc=com
59c59
< types: suffix_group: ou=group,dc=xyanp,dc=org
---
> types: suffix_group: ou=group,dc=my-domain,dc=com
63c63
< types: suffix_host: ou=machines,dc=xyanp,dc=org
---
> types: suffix_host: ou=machines,dc=my-domain,dc=com
67c67
< types: suffix_smbDomain: dc=xyanp,dc=org
---
> types: suffix_smbDomain: dc=my-domain,dc=com [root@ldap-server html]# chown -R apache.apache ldap/ #授权 [root@ldap-server html]# /etc/init.d/httpd start #启动httpd服务

浏览器登录:

点击右上角的:

linux服务器查看:

[root@ldap-server html]# ldapsearch -LLL -w xyp -x -H ldap://xyanp.org -D "cn=admin,dc=xyanp,dc=org" -b "dc=xyanp,dc=org" "(uid=xyp)"  #只查看新建的用户
dn: uid=xyp,ou=People,dc=xyanp,dc=org
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
homeDirectory: /home/xyp
loginShell: /bin/bash
cn: xyp xyp
userPassword:: e1NTSEF9cU13NVVlbzR6VndWMkU1S0RMdjhiSGZZZ0dwRFJhOVc=
uidNumber: 10008
gidNumber: 10007
sn: xyp
givenName: xyp
uid: xyp

========================================================================================================================到此安装ldap就安装并配置管理成功

LDAP目录服务的更多相关文章

  1. 【LDAP】ldap目录服务的命名模型

    ldap的命名模型 命名模型规定了在目录中如何组织和表示条目 1.   目录信息树(DIT) 目录信息树有点类似于DNS的结构.每一个条目都有自己的父条目(因为主条目的父条目是top,所以这句话是成立 ...

  2. LDAP目录服务折腾之后的总结

    前言 公司管理员工信息以及组织架构的后台系统要和Active Directory目录服务系统打通,后台系统使用PHP开发, 折腾了二十多天,终于上线了,期间碰到过各种疑难问题,不过总算在GOOGLE大 ...

  3. LDAP注入与防御解析

    [目录] 0x1 LDAP介绍 0x2 LDAP注入攻击及防御 0x3 参考资料 0x1 LDAP介绍 1 LDAP出现的背景 LDAP(Lightweight Directory Access Pr ...

  4. 《Linux菜鸟入门2》Ldap

    ldap网络帐号1.ldap是什么ldap目录服务认证,和windows活动目录类似,就是记录数据的一种方式 2.ldap客户端所需软件yum install sssd krb-workstation ...

  5. LDAP是什么

    LDAP的英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.LDAP目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的 ...

  6. LDAP概念和原理介绍

    LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...

  7. LDAP & Implementation

    LDAP & Implementation 一.什么是LDAP? (一)在介绍什么是LDAP之前,我们先来复习一个东西:“什么是目录服务?” 1. 目录服务是一个特殊的数据库,用来保存描述性的 ...

  8. LDAP&it's usage

    LDAP: 的英文全称是Lightweight Directory Access Protocol,简称为LDAP.LDAP是轻量目录访问协议[1],它是基于X.500标准的,但是简单多了并且可以根据 ...

  9. LDAP概念和原理

    LDAP概念和原理介绍 相信对于许多的朋友来说,可能听说过LDAP,但是实际中对LDAP的了解和具体的原理可能还比较模糊,今天就从“什么是LDAP”.“LDAP的主要产品”.“LDAP的基本模型”.“ ...

随机推荐

  1. Python学习之路基础篇--04Python基础+数据类型

    1 int 只需知道 i.bit_length() 是算其二进制的位数, 如3 就是2: 5就是 3. 2 bool 要知道 while True == while 1   :除零以外的所有数都为真 ...

  2. pdf.js 使用实例(app直接预览pdf格式的文档)

    pdf.js可以实现在html下直接浏览pdf文档,是一款开源的pdf文档读取解析插件 pdf.js主要包含两个库文件,一个pdf.js和一个pdf.worker.js,,一个负责API解析,一个负责 ...

  3. jdk的下载

    1.打开oracle的官网https://www.oracle.com/index.html 2.拖动页面到最后,找到java for developer 并点击 3. 4.拖动到最后找到java A ...

  4. 关于使用git上传远程仓库的两种情况(新项目与老项目)

    具体的git配置与github仓库ssh配置在这里就不再赘述,本次只讲自己之前遇到的两个内容 1.还没有项目,将远程仓库clone下来直接在里边写项目. 2.已有项目,将已有的项目直接添加到建立好的远 ...

  5. 去除 chrome 上保存密码后的 input 框的屎黄色背景

    网上找的设置 background-color,background-image 没用,后来找到这个方法测试有效: input:-webkit-autofill { transition: backg ...

  6. 【SQL】 借助游标来实现文本的分列与合并

    有时我们会遇到需要把表中个别字段拆分成多条数据或是把多条数据合并到一起的情况.一般的编程语言都有函数“split”和“join”来实现,而SQL中既没有这些函数也没有类似数组和列表这类方便保存成组数据 ...

  7. 【模板】字符串匹配的三种做法(Hash、KMP、STL)

    题目描述 如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置. 输入输出格式 输入格式: 第一行为一个字符串,即为s1 第二行为一个字符串,即为s2 输出格式: 1行 ...

  8. Spring BOOT的学习笔记

    1,静态文件夹src/main/resources/static下的,图片必须放在images文件夹下才能访问,直接放在static下不能访问 2,配置热部署,否则修改下Html,图片都得重启 htt ...

  9. 使用 AppScan 进行扫描

    针对大型网站的扫描,我们按照戴明环 PDCA 的方法论来进行规划和讨论,建议 AppScan 使用步骤:计划(Plan).执行(Do).检查(check).分析(Analysis and Action ...

  10. Java高级特性 第8节 网络编程技术

    一.网络概述 1.网络的概念和分类 计算机网络是通过传输介质.通信设施和网络通信协议,把分散在不同地点的计算机设备互连起来,实现资源共享和数据传输的系统.网络编程就就是编写程序使联网的两个(或多个)设 ...