Fork me on GitHub

Kerberos认证机制分析与突破练习

 

传统网络服务大多基于口令的身份验证,即用户提供口令,服务端验证通过后,方可访问网络服务。但是在实际实施过程中,存在很多服务的身份验证信息是不加密的,导致隐私泄露。

为了解决上述难题,有很多方案可以使用。Kerberos协议就是采用可信任第三方的方式,解决通信安全的问题。接下来我们详细讲解一下kerberos协议原理以及其优缺点。

 

一、Kerberos原理

Kerberos原本是西方神话中守卫地狱之门的三头犬的名字。这里之所以使用这个名字,是因为Kerberos需要三方共同参与才能完成一次认证流程。目前主流使用的Kerberos版本为2005年RFC4120(https://www.rfc-editor.org/rfc/rfc4120.html)标准定义的KerberosV5版本,Windows、Linux和Mac OS均支持Kerberos协议。

Kerberos的神秘之处在于,它并不要求通信双方所在的网络环境是安全的,即使通信过程中数据被截取或者篡改依然不会影响它的正常工作,它提供的认证是双向的,不仅能保证Server不被错误的Client使用,同时也能保证Client不使用错误的Server。同时Kerberos又严重依赖于时间,时间戳也是Kerberos用来保证通信安全的重要手段,这个一般通过通信双方同时访问同一个时间服务器来实现。Kerberos也能达到单点登录的效果,即当Client通过了Kerberos server的认证后,便可以访问多个Real Server。

在实际的应用场景中通常有三个角色,即需要访问服务的Client,提供服务的Application Server,以及提供安全认证的第三方Kerberos服务器KDC(Key Distribution Center)。它们彼此之间认证、通信的数据流如下图所示。

 

Client从KDC获取TGT,Client利用获取的TGT向KDC请求其他Service的Ticket(通过获取的session进行访问)。

1、User向KDC中的AS请求身份验证,AS为user和TGS生成一个session key:SK_TGS,并发送{TGT,SK_TGS} K_USER;其中,{TGT,SK_TGS}K_USER表示使用user的密码加密的packet,包含了TGT和用户与TGS的session key;这个请求验证的过程实际上是使用kinit来完成的,kinit将username传给AS,AS查找username的密码,将TGT和SK_TGS使用用户密码加密后发送给kinit,kinit要求用户输入密码,解密后得到TGT和SK;其中,TGT使用TGS的密码加密,信息内容为{user,address,tgs_name,start_time,lisftime,SK_TGS} K_TGS。

2、User向KDC中的TGS请求访问某个Service的ST,发送[ TGT,Authenticator];其中,Authenticator用于验证发送该请求的user就是TGT中所声明的user,内容为:{user,address,start_time,lifetime};Authenticator使用的TGS和user之间的session key加密的,防止TGT被盗。TGS先使用自己的密码解开TGT,获得它与user之间的session key,然后使用session key解密Authenticator,验证用户和有效期。

3、TGS判断无误后,为user和Service之间生成一个新的session key:SK_Service;然后发送给user一个包:[{ SK_Service } SK_TGS, ST];其中,ST是使用Service的密码加密,SK_Service使用TGS和user之间的session key加密;ST的内容为:{user, address, start_time, lifetime, SK_Service } K_Service。

4、User使用与TGS之间的会话密钥解开包得到与Service之间的会话密钥SK_Service,然后使用SK_Service生成一个Authenticator,向Service发送[ ST,Authenticator ];其中,此处的Authenticator是使用user和service之间的会话密钥加密,Service收到包后先使用自己的密码解密ST,或者会话密钥SK_Service,然后使用SK_Service解密Authenticator来验证发送请求的用户就是票据中所声明的用户。

5、Service向用户发送一个包以证明自己的身份,这个包使用SK_Service加密。User client会等待service server发送确认信息,并使用SK_Service对其解密。如果对方不是正确的service server,就无法解开ST,也就无法使用正确的SK_Service向User client发送确认信息,从而避免User client使用错误的服务器。

此后user与Service之间使用SK_Service进行通信,且在TGT有效期内,user跳过第一步直接从第二步使用TGT向TGS证明自己的身份。

至此,kerberos的基本原理已向大家讲解完毕,仅仅通过枯燥的图文讲解,相信对于想要对kerberos进一步了解并进行实战的朋友来说是稍微有点抽象的,虽然网上有很多kerberos安装部署教程,但是需要大家自行准备配置足够的计算机或者虚拟化软件。为了方便大家通过实操对kerberos有更加形象且印象深刻的了解,赛格睿特的密界仿真实训平台为大家准备了kerberos的实操环境,支持大家从kerberos集群安装部署到应用,以及对kerberos认证体系中各个成员之间的流量进行抓包分析的全过程练习。为了保证感兴趣的朋友能够顺利完成实操,我们贴心地准备了全流程的实操步骤与讲解课件。

 

赛格睿特的密界仿真实训平台是一款致力于为IT行业提供可学可练的网络空间虚拟仿真教培实训平台,对平台或者实操课程感兴趣的朋友,可扫描下方二维码,获取体验名额:

一、Kerberos存在的优缺点

Kerberos 认证系统在开放式网络环境中的应用具有以下优点:

1、第三方认证服务:Kerberos 作为独立的认证服务,专业负责验证用户身份,提高了网络环境的安全性。

2、兼容性和灵活性:Kerberos 允许代理访问,支持跨平台和跨网络的认证服务,使用户可以在不同设备和网络环境下使用统一的认证凭证访问受保护的资源。

3、资源访问控制:Kerberos 确保只有拥有合法身份的用户才能访问受保护的资源,通过集成访问控制机制,有效地管理网络环境中的资源访问权限。

4、数据库管理:Kerberos 参与数据库的管理,保证数据库的安全访问,并实现数据库的复制和同步,确保数据在多个服务器间的一致性。

5、安全性扩展:Kerberos 可以应用于 SUN 网络文件系统等其他网络服务,提高整个网络环境的安全性。

6、用户体验优化:通过代理允许,Kerberos 能够实现用户在不同工作站之间的无缝切换,提高用户体验。

总之,Kerberos 认证系统在开放式网络环境中具有多项优点,可以为用户提供一个安全、高效、便捷的认证解决方案。

Kerberos 认证系统在开放式网络环境中的应用存在以下问题:

1、正确工作站密码的确定:在使用 Kerberos 认证时,如何确保用户输入正确的工作站密码。为了解决这个问题,可以采用密码策略和惩罚机制,提高用户对密码安全的重视。

2、代理允许:在 Kerberos 认证过程中,如何允许合法的代理访问。代理允许有助于实现跨平台和跨网络的认证服务,但同时也增加了安全挑战。通过设置合适的认证策略和访问控制列表,可以有效地管理代理访问。

3、工作站安全性:在开放式网络环境中,保证工作站的安全性是一个重要问题。Kerberos 认证系统可以确保用户身份的真实性,但并不能直接解决工作站的安全问题。为此,需要结合其他安全措施,如防病毒软件、防火墙等,来提高工作站的安全性。

4、数据库管理:在 Kerberos 认证环境中,如何实现数据库的安全访问和管理。通过集成访问控制机制和加密技术,可以确保数据库的安全访问。此外,还需要关注数据库复制和同步等问题。

5、兼容性和扩展性:在不同的网络环境和平台上,如何实现 Kerberos 认证系统的兼容性和扩展性是一个严峻挑战。这需要不断完善和优化 Kerberos 认证系统,以适应不断变化的网络环境。

总之,Kerberos 认证系统在开放式网络环境中的应用存在一定的问题。通过不断优化和完善认证策略、访问控制机制和安全措施,可以逐步解决这些问题,提高 Kerberos 认证系统的安全性和稳定性。

未知攻焉知防,赛格睿特的密界仿真实训平台同样为大家准备了存在漏洞的kerberos认证网络环境,供对网络安全感兴趣的朋友进行kerberos攻击练习。

 

赛格睿特的密界仿真实训平台是一款致力于为IT行业提供可学可练的网络空间虚拟仿真教培实训平台,对平台或者实操课程感兴趣的朋友,可扫描下方二维码,获取体验名额:

posted @ 2024-06-07 11:20  子墨·咖啡  阅读(41)  评论(0编辑  收藏  举报