前言:

kerberos是一种网络协议,其设计目标是通过密钥系统为客户机 / 服务器应用程序提供强大的认证服务。该认证过程的实现不依赖于主机操作系统的认证,无需基于主机地址的信任,不要求网络上所有主机的物理安全,并假定网络上传送的数据包可以被任意地读取、修改和插入数据。在以上情况下, Kerberos 作为一种可信任的第三方认证服务,是通过传统的密码技术(如:共享密钥)执行认证服务的。

实现原理

Kerberos认证是一个双向认证的方式(你要确认我不是冒牌的,我也要确认你不是冒牌的),但是有有个问题出现了,如果在一个已经设定好的公司中,如果想要再加一个员工,那么要所有机器上都要更新信息,这样的话是非常麻烦的,所以kerberos引入了一个新的角色---KDC(Key Distribution Center)密钥分发中心。假如账号A想要访问资源B,那么利用KDC就可以验证双方的身份了。因此,A和B都不需要知道对方的密码,可以完全依赖于KDC。
所以在kerberos协议框架中,主要有三个角色存在:

  1. 访问服务的Client
  2. 提供服务的server
  3. KDC(密钥分发中心)

其中KDC安装在域控中。

  • KDC(key distributed center-密钥分发中心)
    作用:整个安全认证过程的票据生成管理服务,其中包含两个服务,AS和TGS
  • AS(authentication service-认证服务器)
    作用:为client生成TGT的服务
  • TGS(ticket granting service-票据授权服务器)
    作用:为client生成某个服务的ticket
  • AD(account database)
    作用:存储所有client的白名单,只有存在于白名单的client才能顺利申请到TGT
  • TGT(ticket-granting ticket-票据授权票据)
    作用:用于获取ticket的票据
  • client
    想访问某个server的客户端
  • server
    提供某种业务的服务

Kerberos简化认证如下图
Alt text

  1. AS-REQ: client向KDC的AS发送client hash加密的时间戳,ClientID,加密类型等内容。
  2. AS-REP: AS收到请求后,KDC对client hash加密后的时间戳进行解密,如果解密成功,则返回由client对sessionkey加密后的密文和用krbtgt hash加密的TGT票据。
  3. TGS-REQ: Client将TGT发送给KDC中的TGS换取能够访问Server的票据
  4. TGS-REP: KDC使用krbtgt hash进行解密,如果结果正确则就返回服务hash加密的TGS票据。
  5. AP-REQ: Client使用TGS票据直接请求服务
  6. AP-REP:对TGS票据进行解密,解密后进行验证授权

缺点:

  1. 失败于单点:它需要中心服务器的持续响应。当Kerberos服务宕机时,没有人可以连接到服务器。这个缺陷可以通过使用复合Kerberos服务器和缺陷认证机制弥补。
  2. Kerberos要求参与通信的主机的时钟同步。票据具有一定有效期,因此,如果主机的时钟与Kerberos服务器的时钟不同步,认证会失败。默认设置要求时钟的时间相差不超过10分钟。在实践中,通常用网络时间协议后台程序来保持主机时钟同步。
  3. 管理协议并没有标准化,在服务器实现工具中有一些差别。
  4. 因为所有用户使用的密钥都存储于中心服务器中,危及服务器的安全的行为将危及所有用户的密钥。
  5. 一个危险客户机将危及用户密码

参考链接:
https://www.cnblogs.com/Erma/p/10338675.html
https://www.freebuf.com/articles/system/196434.html
https://www.anquanke.com/post/id/190261

最后修改:2020 年 01 月 09 日 10 : 47 PM
如果觉得我的文章对你有用,请随意赞赏