LDAP协议
需求分析
- 集中管理,更易维护和优化,降低运维成本的需求。
- 实现使用PUSH和PULL的方法复制部分或全部数据的需求。
使用者根据需要使用ACL控制数据的读写权限的需求。
数据从不同地点读取但无需经常更新的需求。
LDAP概述
Light Access Protocol,即轻量级目录访问协议。与目录访问协议X.500相比,LDAP略去X.500中许多不常使用的功能,以TCP/IP协议为基础,使用389端口进行数据传输。LDAP只是一个协议。
与数据库类似,目录服务引入键—值类型格式存储、整理及表达数据。与数据库不同的是,目录服务专门进行了读优化设计,采用树状结构组织数据,面向查找、搜索及读取操作做出优化。目录服务具有优异的读性能,而写性能较差,并且没有事务处理、回滚等复杂功能,不适用于存储修改频繁的数据。
基本模型
常见描述——以果园中的苹果为例
假设你需要树上的一个苹果(一条记录),如何向园丁准确描述它的位置呢?首先需要说明它存在于哪棵树上(dc,相当于MYSQL的DB),然后说明从树根到那个苹果所在位置经过的所有树杈(ou),最后就是这个苹果的名字(uid,相当于MYSQL表主键id)。例如,LDAP的具体位置记录如下:
- 树(dc=ljheeee)
- 分叉(ou=bei,ou=xi,ou=dong)
- 苹果(cn=honglv)
至此,honglvApple的位置可以表示为:
dn:cn=honglv,ou=bei,ou=xi,ou=dong,dcljheee
。我们告诉园丁该苹果就是位于果园内那棵老歪脖树的东边分叉上靠西边那个分叉的再靠北边的分叉上半红半绿的那个苹果。其中dn标识一条记录,描述一条数据的详细路径。
LDAP关键字
Domain Component(dc)
域名的部分,表示过程中将完整域名以点号为界限进行分割(一条记录的所属位置)。例如:Domain Name:example.com<—>DC Format:dc=example,dc=com。
User Id(uid)
用户ID(一条记录的ID),例如:test.wu。
Organization Unit(ou)
组织单位,包括其他各种对象(一条记录的所属组织),例如:oa组。
Common Name(cn)
公共名称(一条记录的名称),例如:Thomas Muller。
Surname(sn)姓氏
Distinguished Name(dn)
一条记录的位置(唯一),例如:”uid=songtao.xu, ou=oa组, dc=example.com”。
Relative dn(rdn)
相对辨别名,类似于文件系统中的相对路径,与目录树结构无关。例如:”uid=Tom”或”cn=Thomas Muller”。
四大基本模型
- 信息模型
- 命名模型
- 功能模型
- 安全模型
LDAP使用
统一身份认证改变原有认证策略,使用LDAP对所有需要认证的软件进行认证。完成统一身份认证之后,用户的所有信息都存储在AD Server中。终端用户在需要使用公司内部服务的时候,都需要通过AD服务器的认证。
LDAP认证过程
LDAP采用C/S架构进行认证,常采用MD5认证方式,具体步骤如下:
客户端发送绑定请求
初始化认证阶段,客户端发送绑定请求(bindRequest),具体内容如下:
- 协议版本:3
- 认证机制:sasl
- 认证方式:DIGEST-MD5
服务器响应绑定结果
与HTTPS通信过程类似,服务器返回一段十六进制加密内容serverSaslCreds,该内容主要包括服务器支持的加密方式、认证方式、算法标准以及验证时间戳等信息,要求客户端选择对应的加密标准并使用相同的sasl机制发送新的绑定请求以继续认证过程。对十六进制数据解码后结果如下:
- 服务器支持的摘要认证qop:auth,auth-int,auth-conf
- 服务器支持的加密方式cipher:3des,cr4
- 服务器支持的加密算法algorithm:md5-sess
- 服务器的验证时间戳nonce:一串随机数,用于防御重放攻击与选择明文攻击,提高数据安全性
- Charset编码:utf-8
- Realm:xxx.com
可以看到,LDAP多采用对称密码与消息摘要算法结合的方式实现身份认证与敏感数据传输。
客户端发送Response
客户端收到服务器的响应之后,从服务器提供的各类标准中选择本次认证使用的标准,返回一段十六进制加密数据credentials,用以请求查询绑定的用户是否存在,发送内容经解码后如下:
- 请求查询的用户登录名:test6
- 查询的整个域realm:xxx.com
- 服务器发来的nonce
- 客户端的验证时间戳cnonce:客户端产生的用于对称校验的随机数
- 客户端发送的请求次数cn:00000001(表示只会发送一次请求)
- 客户端要求使用的qop:auth-conf
- 客户端要求使用的加密方式:rc4
- 客户端支持的最大字节流长度:16777215
- 本次请求的资源位置digest-url:ldap.com
- 最终摘要response:根据以上信息和所用密码,通过预设规律计算出的md5码
服务器返回查询结果
服务器会返回查询结果,若绑定成功,则报文解码如下:
绑定失败则发送错误消息:
AD域
AD域概述
活动目录Active Directory的缩写,面向微软服务器的目录服务,LDAP协议下的一种产品。它为用户管理网络环境各个组成要素的标识和关系提供了一种有力的手段。
特点
- 实现集中式管理。
- 回收并管理普通用户对客户机的权限。
- AD域作为大安全边界,用户只需一次登录身份验证,便可直接访问域林中所有允许访问资源,无需多次身份验证,从而提高效率,减少维护成本。
- 通过文件夹重定向,可将所有用户桌面的”我的文档”重定向到文件服务器上。
常用功能
- 用户账号管理
- 权限管理
- 软件/补丁推送
域信任关系
域信任关系具有方向性,域之间的信任方向决定了资源访问方向。
域的信任关系主动权掌握在被信任域手中。但是如果信任域不对被信任域进行资源分配,则被信任域无法获取任何资源。在Windows2000之后,域树和域林之间的信任关系具有传递特性。
域树
域树的父域和子域之间由于使用了层次分明的DNS域名,使用者可根据域名判断出两个域之间的隶属关系从而方便域之间建立和传递相互信任关系。
组策略
组策略是一个允许执行针对用户或计算机进行配置的基础架构。与注册表相似,组策略也是一项可以修改用户或计算机设置的技术;但与注册表不同的是,注册表只能针对一个用户或一台计算机进行设置,而组策略却可以针对多个用户和多台计算机进行设置。
组策略和AD结合使用,可以部署在OU,站点和域级别上,不同级别之间具有以下优先级:本地计算机 < 站点 < 域 < OU,使用者可根据管理任务,为组策略选择合适的部署级别。
组策略对象
组策略通过组策略对象(GPO)进行设定,只要将GPO连接到指定站点、域或OU,该GPO内的设定值就会影响到对应级别内的全部用户与计算机。
组策略存储位置
- 链接GPO的AD容器
- 域控制器上的Sysvol文件夹
GPO组成
- 组策略容器GPC
- 组策略模板GPT
组策略管理
组策略管理可以通过组策略编辑器和组策略管理控制台(GPMC)。组策略编辑器是Windows操作系统中自带的组策略管理工具,而GPMC则具有创建、管理和部署GPO等更强大的功能的组策略编辑工具。
组策略应用
账户策略的设定
设定用户密码长度、复杂度、使用期限和账号锁定策略等。
本地策略的设定
审核策略的设定、用户权限的指派、安全性的设定等。
部署软件
通过将待部署软件存储在文件服务器的共享文件夹中并运用组策略告知用户或计算机进行下载安装的方法实现软件的批量部署。
搭建AD域
注意事项
- 配置完成后,使用命令Gpresult或gpresult /r获取组策略结果,检查客户端电脑是否加入域,以及加入域之后获取的组策略结果。
- 每次在域服务器上面修改组策略后,若需要组策略立即生效,则需要在域服务器及客户端电脑上执行命令Gpupdate /force强制更新组策略。
常见问题排查
- 域用户认证失败
- 检查用户所属OU是否存在于桌面云设备上配置的搜索入口范围内
- 检查用户是否满足相关过滤条件
- 检查VDC设备与AD域服务器之间网络是否连通
- 检查域用户本身是否存在异常
- 虚拟机加入域失败
- 检查VDC上虚拟机加入域的配置
- 检查虚拟机到域控路由的可达性以及DNS是否能够解析域名
- 尝试将虚拟机手动加入域
- 虚拟机用户登录失败
- 虚拟机未加入域
- 检查虚拟机到域控路由的可达性以及DNS是否能够解析域名
- 检查域内是否存在针对用户的计算机绑定