在CISSP的成长之路的上一篇文章《逻辑访问控制方案》,J0ker向大家介绍了访问控制中的集中式访问控制方式,以及目前广泛使用的3种集中式访问控制技术。集中式访问控制技术通常对某个网络的访问进行控制,其作用相当于高速公路上的入口,因此,集中式访问控制并不能胜任对其他资源的访问控制任务。如果用户要对特定的资源进行访问控制,就需要用到本文中提到的分布式访问控制方法。
在CISSP的CBK内容中,提到了3种目前广泛使用的分布式访问控制方法:单点登录(Single Sign On,SSO)、Kerberos和SESAME,同时还介绍了安全域(Security Domain)和瘦客户端(Thin Client)的概念,下面J0ker就逐一为大家介绍:
单点登录(Single Sign On):
在日常的工作中,我们常常会遇到这样的情况:需要访问多个不同的计算机系统或应用程序,才能获取完成某项特定工作所需的所有条件。在涉及的不同计算机系统和应用程序较多的情况下,记住对应的用户名和密码成为一项不容易的任务,许多用户为了简化这一流程,往往会使用简单的密码,或将密码写在纸上,从而对系统的安全留下了不小的隐患。为了降低和消除这一隐患,安全厂商推出了单点登录技术,单点登录技术将不同的系统和应用程序所需的访问控制功能抽离出来,用户在使用时只需要在统一的单点登录方案下进行一次验证,便可以访问到自己所需的网络、信息和其他资源。由于应用单点登录技术之后,用户在IT环境中使用的用户名密码对和需要进行的验证次数大为减少,用户可以使用(也通常会被建议)使用较为复杂的密码,在某种程度上提升了IT环境的安全性,也简化了用户的访问控制难度。
单点登录技术的对应是企业IT环境复杂度提升、多种平台和应用程序投入使用的对应,单点登录技术能够用于以下的场合:
◆一组系统和应用程序的多个入口点,包括互联网访问
◆对数量巨大的客户端的管理需求
◆同时使用多个应用程序的企业
◆简化企业访问控制方案的管理和控制
我们现在可以从越来越多的场合看到单点登录技术的使用,如Hotmail、yahoo、163等知名网站上使用的通行证(Passport)技术,开源社区中的OpenID等等,LDAP、Microsoft的活动目录等目录管理系统,也可以作为企业单点登录方案的组成部分。
下图是一个单点登录实现的示意图:
图1:单点登录实现的示意图,用户通过一个统一的验证服务器来访问一组资源。
单点登录技术的优点在于:
提供一个更为有效的用户登录流程,用户只需输入一次用户名和密码,就能访问到多个他需要的资源,降低了用户名密码的记忆难度并减少了用户验证所需的时间;
由于用户要记忆的密码数目减少,用户可以使用更为复杂更难破解的密码,从而提升IT环境的安全性;
消除了多个系统中的用户密码进行同步时的风险;
用户账户超时和登录尝试能够更密切的和登录入口相结合;
简化了管理员的账户管理流程,管理员只需要进行一次操作就可以完成用户账户的添加、修改、禁用和删除等操作。
但单点登录技术也有其与生俱来的3个缺点,就是:
当用户的用户名和密码被入侵者窃取的时候,入侵者能够访问到该用户所授权的所有系统和资源,这种危害在管理员密码被入侵者窃取的时候尤其明显。
在部署单点登录技术时必须严格遵守企业的安全策略,并细致的分配用户权限,否则很容易造成用户权限过大等问题。
使用单点登录技术后,企业要部署不支持该方案的计算机系统或应用程序会遇到相当多的问题。
为了降低和消除单点登录技术密码失窃导致的风险,企业在使用时还可以使用双因素或者多因素验证方法来增强单点登录技术的安全性。对于移动用户多的应用场景,企业还可以使用一次性加密的加密算法来保证用户密码传输时的安全性。
SESAME:
SESAME是多厂商环境下的欧洲安全系统的缩写,是一个由欧盟委员会资助的研究项目,SESAME同时也是该项目所产生的技术的名称。SESAME技术能够提供单点登录功能和分布式的访问控制,所有在网络上传输的数据都可以使用对称和非对称加密方法进行处理。SESAME的认证过程类似于Kerberos,实际上SESAME也能够使用Kerberos 第5版协议。下图是SESAME的验证过程示意图:
除了上述3种最为常见的分布式访问控制方法外,CISSP CBK中还介绍了其他两个与分布式访问控制有关的设计:安全域(Security Domain)和瘦客户端(Thin Client)。
安全域:安全域的概念常见于ERP系统中的访问控制,它把资源和客户端根据其权限的不同,分成不同类别不同等级的域中,高权限客户端能够访问同类别的不同等级域,而低权限的客户端只能访问低级别的域。特定权限的资源,也能够由不同等级的客户端组成的域所访问。
下图是安全域的两种实现示意图:
瘦客户端(Thin Client)
瘦客户端是从2002年开始兴起的一个新技术,它以更高的安全性和较低的成本而著称。把瘦客户端归类为分布式访问控制的理由是,瘦客户端类似于用户进行身份验证和访问数据的一个前端。
在希腊神话中,Kerberos是守卫地狱入口的三头犬。如同神话传说中的Kerberos,现代信息系统中有一种验证协议也通过三个参素来保护网络入口,因此开发者将这种协议命名为Kerberos。Kerberos可能是至今为止使用最为广泛的身份验证协议,它在上个世纪80年代由麻省理工学院(MIT)设计并在雅典娜计划中使用,适用于大规模的异构网络中。
Kerberos协议设计的核心是,在用户的验证过程中引入一个可信的第三方,Kerberos验证服务器,它通常也称为密钥发放服务器(KDC),负责执行用户和服务的安全验证。Kerberos协议在网络上传输的数据都是用DES加密方法进行处理。Kerberos除了提供验证服务外,还能够提供网络信息的保密性和完整性保障。
在一个封闭的小型网络,所有的节点都有一个组织所拥有并维护的情况下,使用Kerberos并不是部署验证服务的必然选项。但在一个开放的,分布式的网络环境中,尤其是有许多异构系统,用户必须向每个要访问的服务器或服务提供凭证的情况下,使用Kerberos协议能够有效的简化网络的验证过程。Kerberos服务可以采取多个服务器的分布式部署方式,以冗余的方式来保证Kerberos验证服务不成为网络的单点故障。Kerberos服务通过核对用户及其要使用的服务之间的授权状态,来确定用户是否能访问服务,核对通过后,Kerberos会为用户提供访问服务所需的“票据”(Ticket),票据有使用时限并保存在用户系统的缓存中。
Kerberos协议的设计中,有如下的四个需求:
◆安全:即使网络通信被非法用户监听,也不会泄漏能够危害合法用户的信息;
◆可靠性:能够提供可靠的服务,在必要时可以使用分布式的部署方式;
◆透明:在需要用户交互的初始验证之后,用户无需关心接下去的验证过程是如何进行的;
◆适应性:能够适应小规模或大规模的网络部署。
Kerberos协议包含了许多组成部分,有兴趣的朋友可以在RFC1510中找到更为详细的描述。为了大家能够更容易的理解Kerberos的实现机制,J0ker在下面介绍了Kerberos实现提供功能的几个步骤:
1)用户保存有和KDC一致的一对密钥,应用服务器与KDC也保存有相同的一对密钥。如果用户要访问应用服务器,必须首先向KDC发出验证请求,KDC回应请求并发送给用户一个访问票据和一个会话密钥。这时候,KDC兼具验证服务器(AS)和票据分发服务(Ticket Granting Service,TGS)这两个功能。
2)用户在包含有Kerberos客户端的本地工作站上输入用户名和密码,Kerberos客户端将使用用户输入的密码生成一个临时存储于本地的密钥,并将用户名传送给TGS以获取一个票据获取凭证(Ticket Granting Ticket)
3)TGS向用户返回使用用户密钥加密一个客户端会话密钥(TGS-Client Session Key,KTGSC)和使用TGS的密钥加密过的TGT,此时用户将会被提示输入密码,以解密KTGSC。
4)当用户需要使用某个特定的资源时,用户的系统会向KDC发送用在上一步获取的会话密钥加密过的访问请求,访问请求包含有用户的时间信息和验证标志。
5)KDC将用户的访问请求转发给资源,资源解密会话密钥,并使用会话密钥来解密访问请求中包含的信息。如果访问请求中的信息和资源的授权信息相符,则用户可以使用该资源。因为所有的验证信息都有时间戳,因此可以执行超时操作。
下图是Kerberos协议执行验证功能的流程示意图:
Kerberos服务的可靠程度取决于用户是如何部署Kerberos的,Kerberos需要在整个网络中进行时间同步,如果用户减小授权票据的存活时间,将可以降低入侵者通过替换票据获取访问权限的风险。此外,由于Kerberos服务中的KDC保存了所有客户端的访问密钥,因此,KDC需要在物理和网络安全上进行双重的加固,以保证整个网络的安全。
使用Kerberos服务的另外一个局限性是,客户端上软件需要有Kerberos支持或有对应的客户端。