欢迎光临
我们一直在努力

一分钟彻底搞懂 Kerberos

一、Kerberos 是什么?

1.1 定义

Kerberos 是一种基于票据(Ticket)的、三方对称加密网络身份认证协议,由 MIT 开发,是目前企业内网最主流的单点登录(SSO)认证标准。

名字来源:希腊神话中守护地狱之门的三头犬,对应协议三方认证架构(客户端、服务、KDC),缺一不可。

1.2 解决的核心问题

在不可信的公开网络中,解决三个痛点:

  • 密码明文传输被抓包窃取

  • 中间人伪造服务/伪造客户端冒充身份

  • 每次访问不同服务重复输入密码(实现单点登录)

核心设计思想:密码永远不上网传输,全程靠加密票据证明身份。

1.3 核心特性(区别于普通密码登录)

  • 三方认证,而非两方直接校验

  • 全程对称加密,无明文密码

  • 双向认证:客户端验服务、服务验客户端

  • 票据时效性,防永久盗用

  • 一次认证、多服务免密访问(SSO)

二、必记核心角色

Kerberos 所有流程只围绕 三个核心角色,所有复杂报文都是为这三者服务。

2.1 Client(客户端/主体 Principal)

需要访问网络资源的用户、电脑、服务账号。

Kerberos 中所有身份统称为 Principal(主体),格式固定:名称/主机@域名。

示例:

  • 用户:admin@test.com

  • 服务:ldap/win-ad.test.com@test.com

2.2 Server(业务服务端)

客户端要访问的目标服务,比如 AD 域服务、HDFS、SSH、LDAP、数据库服务等。

特点:服务自身不校验用户密码,只校验 KDC 下发的票据。

2.3 KDC(密钥分发中心,核心中枢)

整个 Kerberos 的大脑,所有认证、票据签发都由它完成,默认部署在域控制器上。

KDC 包含两个核心服务,必须区分清楚:

AS(Authentication Service 认证服务)

作用:初次身份校验,发放 TGT 票据。

用户第一次登录时,AS 用用户密码哈希验证身份,通过后返回「入场券 TGT」。

TGS(Ticket Granting Service 票据授予服务)

作用:凭 TGT 兑换具体服务的访问票据 ST。

用户有了 TGT 后,后续访问任意服务,都找 TGS 兑换对应服务票据,无需再次输密码。

三、核心票据与密钥术语

Kerberos 所有安全逻辑,都靠「票据+密钥」支撑,彻底弄懂这几个概念,就掌握 80% 原理。

3.1 TGT(Ticket Granting Ticket 票据授予票据)

全称:入场券/全局通行证

  • 签发方:AS(Authentication Service 认证服务)

  • 加密密钥:KDC 密钥(只有 KDC 密钥分发中心 能解密)

  • 作用:证明「我是合法用户」,用于向 TGS 申请服务票据

  • 时效:通常 10 小时,过期需要重新登录获取

核心:TGT 不能直接访问业务服务,只能用来换服务票据。

3.2 ST / Service Ticket(服务票据)

全称:业务通行证

  • 签发方:TGS

  • 加密密钥:目标服务密钥(只有对应业务服务能解密)

  • 作用:访问具体业务服务的凭证

  • 时效:短时效,通常几分钟到一小时,防止被盗用

3.3 三类核心会话密钥(Session Key)

Kerberos 全程不传输明文密码,靠「临时会话密钥」加密通信:

  • 用户会话密钥(Client Session Key):AS 生成,加密客户端与 TGS 的通信,仅用户和 KDC 知晓

  • 服务会话密钥(Service Session Key):TGS 生成,加密客户端与业务服务的通信

  • 长期密钥:用户密码哈希、服务机器密码哈希、KDC 密钥,永久固定(除非改密码)

3.4 Authenticator(认证器)

很多教程忽略但至关重要的字段。

Authenticator 是客户端生成的、带时间戳的加密数据包,作用:

  • 证明:当前请求是「实时在线发起」,不是别人截获重放的旧票据

  • 实现防重放攻击

核心逻辑:票据是固定的,Authenticator 每次请求都不一样(靠时间戳)。

3.5 PAC(Privilege Attribute Certificate 权限属性证书)

Windows 域环境特有核心字段,嵌入在票据中。

作用:存储用户权限信息、用户组、SID、管理员标识。

业务服务拿到票据后,解析 PAC 就能知道「这个用户有什么权限」,决定允许/拒绝访问。

⚠️ 内网安全重点:黄金票据、白银票据攻击,本质都是伪造 PAC 权限信息。

四、完整版 Kerberos 认证五步流程

行业标准分为 三大阶段、五次报文交互(AS阶段、TGS阶段、服务访问阶段),所有抓包(Wireshark)都是这五个包。

阶段一:AS 认证阶段(获取 TGT,登录账号)

1. AS-REQ(客户端 → KDC-AS)

用户第一次登录时,需要主动向 AS 发送 AS-REQ 认证请求,请求中仅携带两类明文信息

  • 客户端身份信息:当前登录用户的 Principal 主体账号(如 admin@test.com),用于KDC检索用户信息

  • 目标服务标识:固定为KDC的TGS服务身份(告知AS是为了申请登录票据、兑换后续服务权限)

2. AS-REP(KDC-AS → 客户端)

AS 校验账号存在后,做两件事:

  • AS会立刻从数据库中调取该用户的密码哈希,生成 用户会话密钥

  • 返回两个加密内容:

  • TGT 票据(用 KDC 密钥加密,客户端无法解密)

  • 会话密钥数据包(用用户密码哈希加密,客户端输对密码才能解密)

  • 只有客户端输入正确密码,本地计算出匹配的哈希值,才能解密数据包、获取会话密钥,最终完成完整身份认证,拿到合法TGT入场券。本地缓存 TGT。

    阶段二:TGS 票据兑换阶段(获取 ST,准备访问服务)

    3. TGS-REQ(客户端 → KDC-TGS)

    客户端要访问某业务服务,携带:缓存的 TGT + 自己生成的 Authenticator,向 TGS 申请服务票据。

    4. TGS-REP(KDC-TGS → 客户端)

    TGS 校验 TGT 和时间戳合法后:

  • 生成 服务会话密钥

  • 签发对应业务服务的 ST 票据(用服务密钥加密)

  • 返回 ST + 服务会话密钥

  • 此时客户端拿到访问目标服务的「专属通行证 ST」。

    阶段三:业务服务访问阶段(正式通信)

    5. AP-REQ / AP-REP(客户端 ↔ 业务服务)

    客户端携带:ST 票据 + 全新 Authenticator,发送给业务服务。

    服务校验流程:

  • 用自身密钥解密 ST

  • 校验票据有效期、时间戳防重放

  • 解析 PAC 获取用户权限

  • 校验通过,建立加密通信,允许访问资源

  • 五、Kerberos 核心安全机制

    5.1 无明文密码传输

    全网数据包中永远没有明文密码,仅本地哈希校验,抓包完全无法窃取密码。

    5.2 防重放攻击(时间戳+临时票据)

    所有认证请求带时间戳,票据短期有效,攻击者截获旧票据也无法二次使用。

    5.3 双向认证机制

    不仅服务验证用户,用户也可验证服务票据合法性,防止伪造钓鱼服务。

    5.4 对称加密高效安全

    全程对称加密,速度远快于非对称加密,适配企业大规模内网高并发场景。

    六、Kerberos 优缺点深度分析

    6.1 核心优点

    • 极致安全:无明文、防窃听、防重放、防伪造

    • 完美单点登录:一次登录,全域服务免密访问

    • 高性能:对称加密,认证速度快,支撑大规模集群

    • 跨平台通用:Windows AD、Linux、Hadoop、K8s、SSH 全支持

    6.2 不可避免的缺点

    • 强依赖 KDC 单点:KDC 宕机,全网认证瘫痪(企业多部署备用 KDC 解决)

    • 时间同步要求极高:依赖时间戳,全网设备时间必须一致(默认误差 5 分钟内)

    • 配置复杂、排障困难:票据过期、密钥不匹配、时间偏差都会导致登录失败

    • 存在经典安全漏洞:黄金票据、白银票据、AS-REP Roasting、Kerberoast 等攻击

    七、主流应用场景

    • Windows 域环境:企业电脑域登录、文件共享、域服务认证(最核心场景)

    • 大数据集群:Hadoop、Spark、Hive、Kafka 集群安全认证

    • 运维服务:SSH、LDAP、Samba 免密单点登录

    • 云原生/企业 SSO:企业统一身份认证、跨系统免密登录

    八、高频面试/工作问答

    Q1:TGT 和 ST 的区别?

    TGT 是「KDC 通行证」,用来换服务票据;ST 是「具体服务通行证」,用来访问业务资源。TGT 全局通用,ST 一对一专属服务。

    Q2:为什么需要 Authenticator?

    票据是固定的,可被截获;Authenticator 带实时时间戳,防止攻击者重放旧票据冒充身份。

    Q3:Kerberos 为什么要求全网时间同步?

    所有票据、认证器都依赖时间戳校验有效性,时间偏差过大会直接认证失败。

    Q4:Kerberos 和 NTLM 区别?

    NTLM 是旧式哈希认证,易被重放攻击、无票据、不安全;Kerberos 是新一代票据认证,安全性、性能、SSO 能力全面碾压,是目前域环境默认认证协议。

    九、总结

    用一句话终极总结 Kerberos:

    通过 KDC 三方授信、分层票据(TGT+ST)、时间戳防重放、对称加密保安全,实现不可信网络中的安全单点登录认证协议。

    只要记住:先拿入场券 TGT,再换服务票 ST,带时间戳验真身,就能彻底吃透 Kerberos 所有核心逻辑。

    赞(0)
    未经允许不得转载:171主机测评 » 一分钟彻底搞懂 Kerberos
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址