• kerberos协议


    学习了解kerberos协议,有助于我们后期理解黄金票据和白银票据的原理

    kerberos协议介绍

    kerberos 是一种由MIT(麻省理工大学)提出的一种网络身份验证协议,它旨在通过使用加密技术为客户端/服务端应用程序提供强大的认证服务。

    kerberos协议中主要由三个角色:

    (1)访问服务的client(一下表述为Client或者用户)

    (2)提供服务的server(一下表述为服务)

    (3)KDC(Key Distribution Center)密钥分发中心

    其中KDC服务默认会安装在一个域的域控中,而Client和Server为域内的用户或者是服务,如HTTP服务,SQL服务,远程桌面服务。在kerberos中Client是否有权限访问Server端的服务有KDC发放的票据决定。

    Kerberos工作过程

    image

    1)AS_REQ:Client向KDC发起AS_REQ请求内容为通过Client密码Hash 加密的时间戳、ClientID、网络地址、加密类型等内容。

    (2)AS_REP:KDC使用Clienthash进行解密,并在ntds.dit中查找该账户,如果结果正确就返回用krbtgtNTLM-hash加密的TGT票据,TGT里面包含PAC,PAC包含Client的sid,Client所在的组。

    PAC的全称是Privilege Attribute Certificate(特权属证书)。不同的账号有不同的权限,PAC就是为了区别不同权限的一种方式。

    (3)TGS_REQ:Client凭借TGT票据向KDC发起针对特定服务的TGS_REQ请求

    (4)TGS_REP:KDC使用krbtgt NTLM-hash进行解密,如果结果正确,就返回用服务NTLM-hash 加密的TGS票据,并带上PAC(这一步不管用户有没有访问服务的权限,只要TGT正确,就返回TGS票据)

    TGT:认证票据

    TGS:票据发放服务

    TGS tikcet:服务票据  后面简称ST(Service ticket)

    (5)AP_REQ:Client拿着TGS票据去请求服务

    (6)AP_REP:服务使用自己的NTLM-hash解密TGS票据。如果解密正确,就拿着PAC去KDC那边问Client有没有访问权限,域控解密PAC。获取Client的sid,以及所在的组,再根据该服务的ACL,判断Client是否有访问服务的权限。

    在Kerberos认证中,主要结局两个问题

    第一个问题:如何证明你本人是XXX用户的问题   由Authentication Server负责

    第二个问题:提供服务的服务器如何知道你有权限访问它提供的服务。当一个Client去访问Server服务器上的某服务时,Server如何判断Client是否有权限来访问自己主机上的服务。 由Ticket Granting Server负责

    image

    kerberos麻省理工学习视频:https://www.bilibili.com/video/av56235859?from=search&seid=16757225213326807674

    个人感觉翻译有点奇怪,特别是专有名词的解释上,英文好的大佬可以去看原版的。

  • 相关阅读:
    命令行颜色换算器(基于python)
    VPS常用操作(自用)
    自动读取虚拟币ETC行情并语音提醒的小工具(mac OSX)
    nginx最基本操作
    一个平庸程序员的自白
    unity 2d游戏 按y坐标排序子对象
    开源输入法推荐
    unity插件,从一段文字中提取中文并去重
    考试总结(CE???)
    螺旋矩阵
  • 原文地址:https://www.cnblogs.com/simon7s/p/12396673.html
Copyright © 2020-2023  润新知