openldap服务端安装与配置以及原理(代码片段)

author author     2022-11-20     352

关键词:

OpenLDAP 服务端安装与配置

一、什么是LDAP

目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关 系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字 一样
?

二、LDAP特点

?

  • LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
  • LDAP可以很快地得到查询结果,不过在写方面,就慢得多
  • LDAP提供了静态数据的快速查询方式
  • Client/server模型,Server 用于存储数据,Client提供操作目录信息树的工具
  • 这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
  • LDAP是一种开放Internet标准,LDAP协议是跨平台的Interent协议

三、LDAP组织数据结构

技术分享图片
?

  • DC (Domain Component) :可以理解给域名 -> baidu.com
  • CN (Common Name) : 可以理解为域名里的三级域名,或者上图中的、用户名称、组名……
  • OU (Organizational Unit) :可以理解为组别,组
    ?

四、OpenLDAP 安装方式

基于UNIX 发行操作系统环境下安装OpenLDAP 软件一般有两种方式:通过源码编译安装或是通过yum源直接安装rpm包。下面会笔者仅正对与yum的方式安装。这里就不在赘述安装方式,yum源可以使用阿里云源,安装OpenLDAP服务器需要提供守护进程和传统的OpenLDAP 管理配置工具,主要是slapd 和ldap-utils 套件。
?

前置条件

操作系统 所需软件包
CentOS 6.8 X 64 openldap,openldap-clients,openldap-devel,openldap-servers,openldap-servers-sql

?

# 获取配置文件
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

# 修改权限
chown -R ldap.ldap /etc/openldap  
chown -R ldap.ldap /var/lib/ldap

?

五、OpenLDAP 配置

1、slapd.conf配置文件参数

[[email protected] ~]# egrep -v "#|^$" /etc/openldap/slapd.conf

# include 行代表当前OpenLDAP 服务包含的schema 文件    
include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/duaconf.schema
include         /etc/openldap/schema/dyngroup.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/java.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
include         /etc/openldap/schema/ppolicy.schema
include         /etc/openldap/schema/collective.schema
include         /etc/openldap/schema/sudo.schema
include         /etc/openldap/schema/openssh-lpk-openldap.schema

# OpenLDAP 服务允许连接的客户端版本。
allow bind_v2

# OpenLDAP 进程启动时,pid 文件存放路径。
pidfile         /var/run/openldap/slapd.pid

# OpenLDAP 参数文件存放的路径。
argsfile        /var/run/openldap/slapd.args

# 传输加密的配置信息
TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile "\"OpenLDAP Server\""
TLSCertificateKeyFile /etc/openldap/certs/password

database config
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none
database monitor
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=root,dc=company,dc=com" read
        by * none

# 指定OpenLDAP 数据库类型。
database        bdb

# 指定OpenLDAP 服务域名(DN)
suffix          "dc=company,dc=com"
checkpoint      1024 15

# 指定OpenLDAP 服务管理员信息(可以理解为创建高级管理员root)。
rootdn          "cn=root,dc=company,dc=com"

# 指定OpenLDAP 服务管理员密码,使用slappasswd -s your_password来获取加密密码
rootpw          SSHAhjqcrGsPL6H58QAS0QHBvihVS7x2HHKG

# 指定OpenLDAP 数据库文件的存放目录。
directory       /var/lib/ldap

# 创建OpenLDAP 索引。
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

?

2、启动服务并查询

启动ldap服务:

service slapd start

查询LDAP的目录条目,首先我们介绍一下ldapsearch命令,具体可以使用man帮助手册查看。
-b:指定查找的节点
-D:指定查找的DN
-x:使用简单认证
-W:查询是输入密码,或者使用-w password
-h:OpenLDAP的主机地址,可以使用IP或者域名
-H:使用LDAP服务器的URI地址进行操作

查询,看看结果返回是否正常,我们可以看到No such object,因为我们什么数据也没有添加,所以查询的结果为零,到此我们的配置都是正常的。

[[email protected] ~]# ldapsearch -x -D "cn=root,dc=company,dc=com" -h 10.0.40.21 -W
Enter LDAP Password: 
# extended LDIF
#
# LDAPv3
# base <> (default) with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#

# search result
search: 2
result: 32 No such object

# numResponses: 1

?

3、为ldap server添加数据

为ldap添加用户数据,有四种方法,分别如下,我们选择第四种方法进行试验。

  • 可以直接修改slapd.d目录下面的数据文件,好处是不用重启服务,直接生效;
  • 安装开源工具migrationtools来生成ldfi文件,并通过ldapadd来添加;
  • 安装ldap 客户端,这种方法最为简单;
  • 直接编辑ldfi文件,然后通过ldapadd添加。
    手动编辑base.ldif文件:

[[email protected] ~]# vim base.ldif
#基本DN
dn: dc=company,dc=com
objectClass: organization
objectClass: dcObject
dc: company
ou: company

#用户
dn: ou=people,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: people

#群组
dn: ou=group,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: group

通过ldapadd导入数据:

[[email protected] ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f base.ldif 

adding new entry "dc=company,dc=com"

adding new entry "ou=people,dc=company,dc=com"

adding new entry "ou=group,dc=company,dc=com"

回显反馈的结果添加成功,使用另一台机验证添加结果:

[[email protected] ~]# ldapsearch -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -b "dc=company,dc=com" -LLL
dn: dc=company,dc=com
objectClass: organization
objectClass: dcObject
dc: company
o: company

dn: ou=people,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: people

dn: ou=group,dc=company,dc=com
objectClass: top
objectClass: organizationalUnit
ou: group

?
然后我们通过user.ldif和group.ldif增加一个用户和一个组。

 [[email protected] ~]# cat user.ldif group.ldif 
dn: uid=test1,ou=people,dc=company,dc=com
objectClass: posixAccount
objectClass: top
objectClass: inetOrgPerson
objectClass: shadowAccount
gidNumber: 0
givenName: test1
sn: test1
uid: test1
homeDirectory: /home/test1
loginShell: /bin/bash
shadowFlag: 0
shadowMin: 0
shadowMax: 99999
shadowWarning: 0
shadowInactive: 99999
shadowLastChange: 12011
shadowExpire: 99999
cn: test1
uidNumber: 24422
userPassword:: e1NIQX10RVNzQm1FL3lOWTNsYjZhMEw2dlZRRVpOcXc9

dn: cn=devops,ou=group,dc=company,dc=com
objectClass: posixGroup
objectClass: top
cn: DBA
memberUid: test1
gidNumber: 10673

?
添加用户和用户组:

[[email protected] ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f group.ldif 
adding new entry "cn=devops,ou=group,dc=company,dc=com"

[[email protected] ~]# ldapadd -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -f user.ldif 
adding new entry "uid=test1,ou=people,dc=company,dc=com"

?
然后通过下面的命令查看自己是否添加成功。

ldapsearch -x -D "cn=root,dc=company,dc=com" -w password -h 10.0.40.21 -b "dc=company,dc=com" -LLL

?

六、集成图形界面phpldapadmin

?

1.安装rpm包

yum -y install phpldapadmin

2.修改http配置文件

?

修改/etc/httpd/conf.d/phpldapadmin.conf

#
#  Web-based tool for managing LDAP servers
#

Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs

<Directory /usr/share/phpldapadmin/htdocs>
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require local
  </IfModule>
  <IfModule !mod_authz_core.c>
    # Apache 2.2
    Order Deny,Allow
    Deny from all
    Allow from 127.0.0.1
    Allow from ::1
  </IfModule>
</Directory>

3.修改登录用户变量

?

vim /etc/phpldapadmin/config.php
#找到用户名变量
$servers->setValue(‘login‘,‘attr‘,‘uid‘);
#修改为
$servers->setValue(‘login‘,‘attr‘,‘dn‘);

4.启动httpd服务器

?

service httpd start

5.登录游览器验证

?
技术分享图片
?
配置界面:
?
技术分享图片

openldap客户端配置,实现用户认证(原创)(代码片段)

1.工作过程OpenLDAP服务分为客户端和服务端两个部分,服务端的配置过程这里不再赘述。当服务端配置结束后,在服务端的ldap数据库中,应存放着用户的信息,客户端通过安装nss-pam-ldapd(一个瘦身版本的PAM模块和一个瘦身版本的... 查看详情

集成openldap与kerberos实现统一认证:基于sasl/gssapi深度集成(代码片段)

...d3.5Kerberos化4.核心原理4.1基于SASL/GSSAPI实现Kerberos账号登录OpenLDAP4.2基于olcAuthzRegexp规则映射Kerberos与OpenLDAP账号4.3基于saslauthd进行委托认证5.安装操作5.1安装客户端5.1.1安装客户端软件包5.1.2配置Kerberos5.1.3配置SSH5.1.4配置SASL/GSSAPI5.2... 查看详情

04-openldap客户端安装(代码片段)

...户端验证ssh登录自动创建家目录1.基础环境准备本文承接openldap服务端安装配置,基础环境请参考openldap服务端安装配置2.关闭sssd及安装nslcd客户端关闭sssd进程,由于我这最小化安装,并没有sssd进程[[email protected]~]#servicesssdsto 查看详情

openldap服务端配置(一):基本配置

参考技术A本文基于OpenLDAP的安装后整理。需要注意的是,在slaptest命令生成的文件为root用户所有,需要用chown命令修改其属主,然后再重启slapd服务可以借助开源工具migrationtools将已有的用户、密码以及用户组添加到openldap中。具体... 查看详情

centos6.9下openldap的安装与配置(代码片段)

LDAP基础教程LDAP全称轻量级目录访问协议(英文:LightweightDirectoryAccessProtocol),是一个运行在TCP/IP上的目录访问协议。LDAP实现提供被称为目录服务的信息服务,可以看做是一张特殊的数据库系统。可以有效的解决众多网络服务... 查看详情

apachedsldap安装,配置,增删查该及备份恢复(代码片段)

...配置五、增删查改六、备份七、还原一、说明之前看了看openldap的文章,能用,但是不太好用。包括安装,部署以及web页面phpadminldap的安装,环境比较麻烦。也找了找apacheDSldap的文章,真心没多少人有写,... 查看详情

openldap服务端安装

参照此文章配置成功http://blog.sina.com.cn/s/blog_64aac6750101gwst.html/etc/sysconfig/network#主机名/etc/hosts#172.16.16.22 ldap.zxsoft.com#主机名setenforce 0chkconfig iptables offservice ipt 查看详情

集成openldap与kerberos实现统一认证:整合后台数据库(代码片段)

...章目录1.写作背景2.既定目标3.环境说明4.安装操作4.1安装OpenLDAP4.1.1安装软件包4.1.2启动服务4.1.3初始化4.1.4禁止匿名访问4.1.5创建O和OU4.2迁移Kerberos数据库4.2.1导入KerberosSchema4.2.2创建Kerberos在OpenLDAP上的服务账号4.2.3添加索引4.2.4备份... 查看详情

05-sudo权限配置(代码片段)

...sudo常见属性介绍常见错误分析1.基础环境准备本文接文章openldap服务端安装配置2.服务端配置导入sudoschemaopenldap默认schema中不包含sudo所需要的数据结构,这时需要我们自行导入sudoschema文件。操作如下[[email protected]tmp]#rpm-qlsudo-... 查看详情

apollo服务端设计原理剖析(代码片段)

本文摘自于《SpringCloud微服务入门实战与进阶》一书。1配置发布后的实时推送设计配置中心最重要的一个特性就是实时推送了,正因为有这个特性,我们可以依赖配置中心做很多事情。在我自己开发的Smconf这个配置中心,Smconf是... 查看详情

集成openldap与kerberos实现统一认证:基于sssd同步ldap账号(代码片段)

...#xff09;Kerberos账号与企业用户账号的统一管理。当我们想在OpenLDAP+Kerberos上实现同样的目标时,发现这一领域的知识与方案琐碎而凌乱,缺少统一连贯,脉络清晰的讲解,在经过大量技术调研和系统梳理后,... 查看详情

django底层原理简介与安装(代码片段)

...境目录搭建一栏: 利用wsgiref模块封装好的socket搭建服务端:#利用wsgiref模块封装好的socket演示操作(例如acceptecv)#也可以实现socket服务端的功能fromwsgiref.simple_serverimportmake_server#拆分开之后需要导入关联相应表格importmy_urlsfro... 查看详情

openldap搭建全过程(待补充

一、OpenLDAP服务端安装部署1.安装OpenLDAP服务[[email protected]~]#yumlist|grepopenldap[[email protected]~]#yuminstall-yopenldapopenldap-serversopenldap-clientsopenldap-develcompat-openldap//其中compat-openldap这个包与主从配置有关。安装完成后自动创建了ldap... 查看详情

53次课(nfs介绍nfs服务端安装配置nfs配置选项)(代码片段)

NFS服务搭建与配置NFS介绍NFS服务端安装配置安装测试2个操作系统一个服务端一个客户端,服务端IP为192.168.63.100客户端192.168.63.101,这两个系统许安装nfs-utilsrpcbind[[email protected]~]#yuminstall-ynfs-utilsrpcbind安装完成后在服务端配置e... 查看详情

svn(subversion)版本控制软件的安装与配置(代码片段)

...与阿里云liunx(centos)的安装与配置SVN工作原理:客户端-服务端  代码的提交、更新  每一个版本都会在svn的安装配置目录下SVN下载地址:http://subversion.apache.org/packages.html 一.windows系统SVN配置(1)配置Path(bin)(... 查看详情

openldap安装与配置

1.安装1.1查看#yumlist|grepopenldap1.2安装#yuminstall-yopenldap-serversopenldap-clients2.配置2.1准备数据库目录,openldap配置文件#cp/usr/share/openldap-servers/slapd.conf.obsolete/etc/openldap/slapd.conf#cp/usr/share/openl 查看详情

dhcp协议原理以及如何配置dhcp(代码片段)

...协议原理DHCP-定义-作用-原理DHCP工作过程是c/s,即客服端/服务器模式;-设备角色区分:DHCP客户端-终端设备(PC、网络摄像头、IP电话、网络打印机等)#DHCP服务器-软件:DHCP服务器软件-硬件:服务器Linux:直接开启DHCP服务;Windows-... 查看详情

centos7下openldap编译安装及配置(代码片段)

原文地址:https://blog.csdn.net/panjinxiang4217/article/details/79998890 #安装http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=26168435&id=5746284 #安装加使用一.环境 CentOS-7-x86_64-151 查看详情