Kerberos身份验证

Kerberos是更现代化的身份验证协议,它比 NTLM 认证更安全,但域内某些服务仍支持 NTLM 认证。Kerberos 和 NTLM 认证一样,都是通过在 SSPI 接口实现的功能,这使得使用第三方协议(如:HTTP、SMB、LDAP)在访问服务之前,Kerberos 和 NTLM 一样,由身份验证阶段转为会话阶段。

我们之前的文章表明,NTLM 身份验证阶段就是客户端和服务端展开的协商、挑战、验证,会话阶段就是使用 HTTP、SMB、LDAP 访问服务,那么这里的会话阶段与 Kerberos 身份验证后的会话阶段没有什么不同,我们把重点放在 Kerberos身份验证阶段。

Kerberos 身份验证阶段分为如下步骤:

  • as-req & as-rep

  • tgs-req & tgs-rep

  • ap-req & ap-rep

经过上述步骤后进入会话阶段。

as-req & as-rep

  • 此步骤用于客户端向 kdc 请求 tgt 认购权证

  • as-req :客户端发送请求

  • as-rep :kdc 返回 tgt 认购权证

 

上图是 as-req 请求内容,和 as-rep 响应内容。我来详细解释其中的细节。

tgt 请求流程
  1. 客户端使用某个域用户的身份凭据(用户密码)生成用户 hash。

  2. 客户端使用用户 hash 加密时间戳,并和一系列其他信息组成 as-req 发送给 kdc 以访问 kdc 的 krbtgt 服务(此服务主要用来颁发 tgt )。

  3. kdc 从活动目录数据库中取出用户凭据并生成用户 hash,并尝试用这个自己运算出来的用户 hash 解密时间戳

    • 解密成功:用户凭据正确

    • 解密失败:用户凭据错误

  1. 解密成功后,利用此用户在活动目录数据库中的信息生成针对此用户的 tgt 认购权证。

as-rep 内容详解
  1. 生成 tgt 的同时,kdc 也生成了一个随机化的 Logon Session Key,其存储位置有两个:

    • Logon Session Key 经过用户 hash 加密后存放在 tgt 之外。

    • Logon Session Key 经过 krbtgt 服务账户 hash 加密后放在 tgt 内部。

  2. 除了 Logon Session Key 之外,tgt 内部最重要的信息就是 PAC。

    • PAC 是 krbtgt 服务在活动目录查询访问用户后,生成的一系列关于此用户的权限信息(例如:所属组等)

    • 通过 PAC,目标服务能获取用户所属组等身份,再根据配置在本地的 ACL ,不需要再次访问 kdc 就能判断用户权限。因此 PAC 不能被用户解密。

  3. PAC 受 serverchecksum 和 privsvrchecksum 两个签名的保护:

    • privsvrchecksum :使用 krbtgt 服务账户 hash 进行签名

    • serverchecksum :使用即将要访问的目标服务的服务账号 hash 进行签名(因为这里这里请求了 tgt 所以此时的目标服务的服务账号 hash 就是 krbtgt 服务账户 hash ,可以说这里的 privsvrchecksum 和 serverchecksum 是一样的)

  4. Logon Session Key 的作用出现在 tgs-req & tgs-rep。

tgs-req & tgs-rep

  • 此步骤用于客户端向 kdc 请求 st 服务票据

  • tgs-req :客户端发送请求

  • tgs-rep :kdc 返回 st 服务票据

 

上图是 as-req 请求内容,和 as-rep 响应内容。我来详细解释其中的细节。

st 请求流程
  1. 客户端接受到 as-rep 后,使用用户 hash 解密被加密的 Logon Session Key。

  2. 客户端使用 Logon Session Key 加密时间戳,并和 tgt 、以及其他一系列其他信息组成 tgs-req 发送给 kdc 以访问 kdc ,此时请求的服务名已不再是 krbtgt 服务账户,而是目标服务的服务账户。

  3. kdc 获取客户端发来的 tgt ,并使用 krbtgt 服务账户的 hash 解密其中的 Logon Session Key ,并尝试用 Logon Session Key 来解密 Logon Session Key 解密时间戳。

    • 解密成功:用户凭据正确

    • 解密失败:用户凭据错误

    • as-rep 中 tgt 外部的 Logon Session Key :供用户使用,作为 tgs-req 中时间戳的密钥来加密的时间戳向 kdc 发起验证。

    • as-rep 中 tgt 内部的 Logon Session Key :供 kdc 使用,用来验证 tgs-req 加密的时间戳。

  1. 解密成功后,通常情况下,kdc 会直接将接受的 tgt 的大部分信息复制到 st中。

  2. 修改 serverchecksum :从 krbtgt 服务账户 hash 进行签名替换为使用目标服务账户 hash 进行签名。

tgs-rep 详细内容
  1. 生成 tgt 的同时,kdc 也生成了一个随机化的 Server Session Key,其存储位置有两个:

    • Server Session Key 经过Logon Session Key加密后存放在 tgt 之外。

    • Server Session Key 经过目标服务 hash 加密后放在 tgt 内部。

  2. 除了 Server Session Key 之外,tgt 内部最重要的信息就是 PAC,PAC 通常直接从 tgt 中复制。

  3. PAC 受 serverchecksum 和 privsvrchecksum 两个签名的保护:

    • privsvrchecksum :使用 krbtgt 服务账户 hash 进行签名

    • serverchecksum :从 krbtgt 服务账户 hash 进行签名替换为使用目标服务账户 hash 进行签名。

  4. Server Session Key 的作用出现在 tgs-req & tgs-rep。

ap-req & ap-rep

发送服务票据,服务器进行验证流程如下:

  1. 客户端接受到 tgs-rep 后,使用用户 Logon Session Key 解密被加密的 Server Session Key。

  2. 客户端使用 Server Session Key 加密时间戳,并和 st、以及其他一系列其他信息组成 ap-req 发送给服务器以访问目标服务。

  3. 服务器提前会在本地缓存服务账户 hash,使用服务账户 hash 解密 st 中被加密的 Server Session Key,并使用 Server Session Key 来验证客户端的加密时间戳,如果能解密成功,则客户身份验证成功

  4. 身份验证成功进入会话阶段。

  5. 服务器提取 st 的 pac 信息,并根据自身缓存的 acl 判断用户所具有的权限。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/491402.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

达梦8-达梦数据的示例用户和表

1、示例库说明: 创建达梦数据的示例用户和表,导入测试数据。 在完成达梦数据库的安装之后,在/opt/dmdbms/samples/instance_script目录下有用于创建示例用户的SQL文件。samples目录前的路径根据实际安装情况进行修改,本文将达梦…

认识javascript中的模块化

什么是模块化? 将程序⽂件依据⼀定规则拆分成多个文件,拆分出来每个⽂件就是⼀个模块,模块中的数据都是私有的,模块之间互相隔离。如果不进行隔离,可能会造成模块间的变量定义有冲突,导致程序崩溃 为啥要使…

EasyExcel 动态设置表格的背景颜色和排列

项目中使用EasyExcel把数据以excel格式导出&#xff0c;其中设置某一行、某一列单元格的背景颜色、排列方式十分常用&#xff0c;记录下来方便以后查阅。 1. 导入maven依赖&#xff1a; <dependency><groupId>com.alibaba</groupId><artifactId>easy…

AccessClient在苹果电脑闪退,解决方法

AccessClient 2 年前突然闪退了&#xff0c;一直没管&#xff0c;最近弄一个 electron打包&#xff0c;一直提示找不到 python&#xff0c;解决了 python 解释器后&#xff0c;顺手把AccessClient闪退解决了&#xff0c;解决思路如下&#xff1a; 1.在AccessClient点击鼠标右…

NVM:安装配置使用(详细教程)

文章目录 一、简介二、安装 nvm三、配置 nvm 镜像四、配置环境变量五、使用教程5.1 常用命令5.2 具体案例 六、结语 一、简介 在实际的开发和学习中可能会遇到不同项目的 node 版本不同&#xff0c;而出现的兼容性问题。 而 nvm 就可以很好的解决这个问题&#xff0c;它可以在…

ActiveMQ 反序列化漏洞CVE-2015-5254复现

文章目录 一、产生原因二、利用条件三、利用过程四、PoC&#xff08;概念验证&#xff09;五、poc环境验证使用find搜索vulhub已安装目录打开activeMQ组件查看配置文件端口启动镜像-文件配置好后对于Docker 镜像下载问题及解决办法设置好镜像源地址&#xff0c;进行重启docker查…

【Python】【数据分析】深入探索 Python 数据可视化:Seaborn 可视化库详解

目录 引言一、Seaborn 简介二、安装 Seaborn三、Seaborn 的基本图形3.1 散点图&#xff08;Scatter Plot&#xff09;3.2 线图&#xff08;Line Plot&#xff09;3.3 条形图&#xff08;Bar Plot&#xff09;3.4 箱型图&#xff08;Box Plot&#xff09;3.5 小提琴图&#xff0…

某药业数据中心与重工集团灾备中心SAP监测实战应用

在当今数字化转型的浪潮中&#xff0c;企业的IT系统承载着前所未有的业务压力。作为业务运营的核心支撑&#xff0c;SAP系统的稳定性和性能优化成为运维团队关注的重点。本文将结合两个实际案例——某药业集团数据中心&#xff08;以下简称“药业数据中心”&#xff09;与某重工…

Qt编译MySQL数据库驱动

目录 Qt编译MySQL数据库驱动 测试程序 Qt编译MySQL数据库驱动 &#xff08;1&#xff09;先找到MySQL安装路径以及Qt安装路径 C:\Program Files\MySQL\MySQL Server 8.0 D:\qt\5.12.12 &#xff08;2&#xff09;在D:\qt\5.12.12\Src\qtbase\src\plugins\sqldrivers\mysql下…

开发布局总结

线性布局 (Row/Column) 概述&#xff1a; 线性容器Row和Column构建。线性布局是其他布局的基础&#xff0c;其子元素在线性方向上&#xff08;水平方向和垂直方向&#xff09;依次排列。线性布局的排列方向由所选容器组件决定&#xff0c;Column容器内子元素按照垂直方向排列…

网络数据包分析

Target 实践内容&#xff1a;使用 Wireshark 捕获和分析网络流量。 涉及知识点&#xff1a;Wireshark 基本使用、数据包结构、理解网络协议分析、网络流量分析。 Trial Wireshark使用WinPCAP作为接口&#xff0c;直接与网卡进行数据报文交换。 Wireshark基本使用 勾选 WLA…

游戏引擎学习第45天

仓库: https://gitee.com/mrxiao_com/2d_game 回顾 我们刚刚开始研究运动方程&#xff0c;展示了如何处理当人物遇到障碍物时的情况。有一种版本是角色会从障碍物上反弹&#xff0c;而另一版本是角色会完全停下来。这种方式感觉不太自然&#xff0c;因为在游戏中&#xff0c;…

微知-C语言如何指定弱符号?(#define WEAK __attribute__((weak)); WEAK int foo(void))

背景 在C语言中&#xff0c;弱符号是一种特殊的符号&#xff0c;它可以被重定义&#xff0c;但在链接时&#xff0c;只会使用被重定义的符号。 在某些情况下&#xff0c;我们需要在多个文件中定义相同的函数&#xff0c;但只使用其中一个函数。本文将介绍如何在C语言中实现弱符…

windos系统安装-mysql 5.7 zip压缩包教程

一, 安装包下载 在mysql官网上下载mysql5.7版本的压缩包 官方网址: https://dev.mysql.com/downloads/mysql/5.7.html#downloads选择历史版本 选择系统和数据库版本下载 下载完成后解压到安装的目录 二, 新增数据目录,配置文件, 配置环境变量 新建data文件夹用于存放数据库…

Tengine 搭建手册

简介 官网&#xff1a; tengine.taobao.org/ Tengine是由[淘宝](http://en.wikipedia.org/wiki/Taobao)发起的Web服务器项目。它在[Nginx](https://nginx.org/)的基础上&#xff0c;针对大访问量网站的需求&#xff0c;添加了很多高级功能和特性。Tengine的性能和稳定性已经在…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文&#xff0c;如果开发人员发生流动&#xff0c;很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先&#xff0c;我们利用AES工具生成一个随机秘钥&#…

【机器学习(五)】分类和回归任务-AdaBoost算法-Sentosa_DSML社区版 (2)11

文章目录 一、算法概念11一、算法原理&#xff08;一&#xff09;分类算法基本思路1、训练集和权重初始化2、弱分类器的加权误差3、弱分类器的权重4、Adaboost 分类损失函数5、样本权重更新6、AdaBoost 的强分类器 &#xff08;二&#xff09;回归算法基本思路1、最大误差的计算…

前端入门之VUE--ajax、vuex、router,最后的前端总结

前言 VUE是前端用的最多的框架&#xff1b;这篇文章是本人大一上学习前端的笔记&#xff1b;欢迎点赞 收藏 关注&#xff0c;本人将会持续更新。本人不是学前端的&#xff0c;这个是大一的时候上学的和做的笔记&#xff0c;那个时候学的也蒙&#xff0c;故这里对前端做一个总…

GB28181系列三:GB28181流媒体服务器ZLMediaKit

我的音视频/流媒体开源项目(github) GB28181系列目录 目录 一、ZLMediaKit介绍 二、 ZLMediaKit安装、运行(Ubuntu) 1、安装 2、运行 3、配置 三、ZLMediaKit使用 一、ZLMediaKit介绍 ZLMediaKit是一个基于C11的高性能运营级流媒体服务框架&#xff0c;项目地址&#xf…

人工智能增强的音频和聊天协作服务

论文标题&#xff1a;AI-enabled Audio and Chat Collaboration Services 中文标题&#xff1a;人工智能增强的音频和聊天协作服务 作者信息&#xff1a; Emil P. Andersen, Norwegian Defence Research Establishment (FFI), Kjeller, NorwayJesper R. Goksr, Sindre E. Ha…