1 等保2.0关于强制访问控制的规定

1.1. 强制访问控制要求

等保2.0标准在2018年四季度提交国家标准化管理委员会报批,并有望在2019年5月正式出台。等保标准中对计算环境的访问控制做了详细要求,下面表格中列出了等保2.0对访问控制的要求,黑色字体表示是针对上一安全级别增强的要求。

在等级保护体系中,级别越高,对安全性要求越高。

在三级等保系统中,要求对重要的主体、客体采用强制访问控制机制。

在四级等保系统中,要求对所有的主体、客体采用强制访问控制机制。

等保2.0在原来基础上,扩展了对工控系统、大数据、云计算等领域的安全要求。工控系统中很多是涉及国计民生的关键基础设施(比如:发电控制系统、、轨道交通控制系统、自来水控制系统、石油石化生产控制系统等),定级一般比较高,必须采用强制访问控制机制来保证系统的安全性。

1.2. 强制访问控制系统结构

在等保2.0的设计技术要求中,强制访问控制机制的系统结构如下图所示:

强制访问控制系统的工作流程说明:

初始化:管理员根据需求确定强制访问控制策略,对主体、客体进行安全标记。

启动:系统启动时,加载主体、客体安全标记以及访问控制规则表,并对其进行初始化。

访问控制:当执行程序主体发出访问客体的请求后,系统安全机制截获该请求,并从中取出访问控制相关的主体、客体、操作三要素信息,然后查询主体、客体安全标记,得到安全标记信息,并依据强制访问控制策略对该请求实施策略符合性检查。如果该请求符合系统强制访问控制策略,则系统将允许该主体执行资源访问。否则,该请求将被系统拒绝执行。

级别调整:管理员可以根据需要进行级别调整,级别调整后,相关信息及时更新到访问控制内核。

审计:所有安全配置的修改调整及主体对客体的访问信息都支持进行日志审计。

2 强制访问控制的历史

访问控制是一种很古老又很有效的计算机安全解决方案,也是最直观最自然的一种方案,直到目前还是绝大多数系统的基础必配策略。信息安全问题一般归结为三大类:信息保密性(Confidentiality)、信息完整性(Integrity)和信息可用性(Availability),简称CIA。访问控制主要是针对信息保密性和信息完整性问题的解决方案。

上世纪60年代末,Lampson开始对访问控制进行正式定义并进行形式化描述工作。他提出了主体和客体这两个基本概念,并提出需要有一个访问矩阵来描述主体与客体之间的访问关系。

1973年,Bell和LaPadula将军事领域的访问控制形式化为一套数学模型,即BLP模型,这个模型是一个类似于政府文件分级管理策略的多极安全访问模型,侧重于系统的保密性。

1977年,Biba对系统的完整性进行了研究,提出了一种与BLP模型在数学上对偶的完整性保护模型,即BIBA模型。

同期,Boebert和Kain提出了DTE模型(Domain,Type,Entity),把主体分到不同的域(Domain),客体设定不同的类型(Type),主体和客体都被称为实体(Entity),根据域和类型综合判断进行访问控制。

1983年,是访问控制模型标准化最有纪念意义的一年。这一年美国国防部提出了《计算机系统可信赖性评估标准》,即TCSEC,也称为橘皮书。该标准中详细的定义了两种军事系统的访问控制模式:自主访问控制DAC(Discretionary Access Control)和强制访问控制MAC(Mandatory Access Control)。

DAC即自主访问控制,对象(一般指文件等)的属主全权管理该对象的访问控制策略,有权读取、修改、转移对象信息,并且可以把这种权限转移给其他主体。通常DAC使用ACL(访问控制列表)来控制主体对客体的访问权限。DAC的优点:非常简单,在一定程度上实现了多用户的权限隔离和资源保护。DAC的缺点:资源管理过于分散,给控制这个系统的安全造成很大不便;无法防范木马攻击,如果某个管理员登录后带进来一个木马程序,该木马程序将拥有该管理员的全部权限。

MAC即强制访问控制,它可以弥补DAC在防范木马型攻击方面不足。在MAC系统中强制执行访问控制策略,每一个主体(包括用户和程序)和客体都拥有固定的安全标记,主体能否对客体进行相关操作,取决于主体和客体所拥有安全标记的关系(如:安全标记同为“机密”则可以执行操作)。MAC的优点:可以防范木马攻击,木马程序无法继承该用户的安全级别,必须按强制访问控制策略进行相关访问。MAC的缺点:适用于等级观念明显的行业(如军队等一些机要部门)或安全性要求极高的系统,适用范围比较小;不够灵活,易用性比较差。

BLP、BIBA和DTE都属于MAC模型。

在上世纪80年代到90年代初这段时期,计算机越来越普及,在企业中很多权限是和职位或角色直接绑定的。于是,一些研究人员开始将角色(Role)作为一个管理对象抽象出来,这时角色被认为是组织中的一个职位或位置。角色和用户开始分离,通过给用户指定角色来获得相应的权限。

1992年,David Ferraiolo和Rick Kuhn合作提出了RBAC(Role-Based Access Control)模型,参见注【1】。在RBAC中,在用户和访问权限之间引入角色的概念,用户与特定的一个或多个角色相关联,角色与一个或多个访问许可权相关联,角色可以根据工作需要创建或删除。

RBAC在2004年2月被美国国家标准委员会(ANSI)和IT国际标准委员会(INCITS)接纳为ANSI INCITS 359-2004标准。RBAC在管理大型网络应用时表现出很强的灵活性和经济性,迅速成为当前最具影响的高级访问控制模型。

现在随着分布式计算等新兴技术的快速发展,企业应用大集成、应用边界逐渐消失,传统的面向封闭环境的RBAC模型面临着新的难题。比如:在业务数据集成的场景,角色呈爆炸式增长,导致访问控制的配置复杂度也呈指数式提升,RBAC要随需求的变化不断进行策略的变更维护,工作量巨大且很难保证及时性,也无法保证数据被安全访问。一种新型的基于属性的访问控制技术ABAC(Attribute-Based Access Control)随之诞生,这也是目前关于访问控制方面的最新研究方向。

可以看出,访问控制技术始终在随着计算机技术一起发展。早期的计算机非常昂贵,主要应用于军事、金融等特殊应用场景,当时访问控制技术也比较严格,以MAC模型为主。随着计算机在企业的广泛应用,针对企业内按角色分配权限的场景,RBAC模型成为主流。现在,分布式计算、云服务、互联网、物联网逐渐得到广泛应用,对访问控制的灵活性要求越来越高,ABAC模型成为大家研究的焦点。

3 强制访问控制模型和标记技术

3.1. 基本概念

强制访问控制机制的核心是为主体、客体做标记,根据标记的安全级别,参照策略模型决定访问控制权限,保证数据的单向流动。

客体(Objects),是一种既包含有信息,又可以被访问的实体(文件、目录、记录、程序、网络节点等)。

主体(Subjects),是一种可以操作客体,使信息在客体之间流动的实体(进程或用户)。通常,主体同时也是一个客体。因为当一个程序存放在内存或硬盘上时,那么它就与其它数据一样被当作客体,可供其它主体访问,但当这个程序运行起来去访问别的客体,它就成为了主体。

安全标记,可能是安全级别或者其他用于策略判断的标记,典型的安全级别从低到高包括:公开(Unclassified)、秘密(Confidential)、机密(Secret)、高密(Top Secret)。

3.2. BLP模型

强制访问控制模型中最经典的是Bell和LaPadula提出的BLP模型,主要用于保证数据的机密性。该模型的核心规则是“不上读、不下写”,即低级别不能读取高级别的数据,高级别不能修改低级别的数据,保证数据只能从低级别往高级别流动。该模型的示意图如下:

BLP模型的来源是军事安全策略,也受到美国国防部的特别推崇,是一种多级安全策略模型。

BLP模型的优缺点分析

3.3. Biba模型

和BLP完全对应的另外一个经典模型是Biba模型,主要用于保证数据的完整性,该模型的核心规则是“不下读、不上写”,即低级别不能修改高级别的数据,高级别不能读取低级别的数据,保证数据只能从高级别往低级别流动。

Biba模型的优缺点分析

3.4. DTE模型

DTE是另外一种强制访问控制的模型,基于访问控制矩阵,通过增加域(Domain)和类型(Type)的概念,达到分域分类型控制的目的。

在DTE模型里,所有的控制集合为<D,T,P>,D代表域,T代表类型,P代表访问授权,L代表安全级别。DTE的保密性模型判断条件类似下面表格:

在DTE模型的访问矩阵里,每一个域是一行,每一个类型是一列,所有的主体都属于一个域,所有的客体都关联一种类型。当然,前面讲过,主体也是客体,所有也关联一种类型。通过规则模型判断后生成的访问控制矩阵类似下图:

可以看出,DTE模型是一种更灵活的并且兼容了BLP和BIBA的MAC模型。

DTE模型的优缺点分析

3.5. 安全标记技术

确定了访问控制模型后,还有一个重要的技术点就是设立安全标记。安全标记需要针对每个主体和客体分别设定,并且需要随主体、客体在系统内的迁移而迁移,不能因为主体、客体的位置转移而丢失或破坏安全标记。在DTE模型里,主要是设定域和类型。比如一个发送邮件的程序作为主体所具有的安全级别,不会因为该程序被拷贝到另外一个目录就发生改变。

目前对主体、客体进行安全标记的方法可以归为2种,基于数据本身做标记和基于数据的唯一性标识做标记,对比说明如下:

具体来讲可以参考下面的几个具体做法:

1. 对用户基于用户名进行标记,因为用户名在系统里面都是唯一标识并不允许改动的。

2. 对文件基于文件全路径(有时需要附加Hash值)进行安全标记。文件的全路径(有时需要附加Hash值)是文件的唯一标识,类似家里的门牌号。该方案的难点在于跟踪文件的拷贝、修改、重命名等操作,确保数据全程安全标记的一致性。类似家里搬家或者有人员的增加减少都需要及时跟踪调整相关安全标记。

3. 对文件基于文件本身进行安全标记,安全标记记录在文件的属性内。这个方案可以很容易的保证安全标记在各种情况下的全程一致性。该方案的难点在于需要研究各种操作系统的文件数据结构(包括硬盘存储数据结构和内存映像数据结构),和操作系统的耦合比较紧。

4. 另外,还有一些像数据库表之类的应用数据,适合采用独立安全标记的方法。主要原因是我们很难研究搞懂各种应用数据的结构,其他应用的数据结构不一定有合适的扩展方案供我们做标记。

4 当前主流产品的相关实现

强制访问控制模式自提出以来,在目前的主流产品上都有相关实现,主要包括:Linux系统上的SELinux、Windows系统上的MIC(Mandatory Integrity Control)、FreeBSD系统的TrustedBSD、Oracle为Solaris系统提供的Trusted Extensions等。

4.1. SELinux on Linux

SELinux主要由美国国家安全局NSA开发,是一个内核模块,现在已经被集成在版本号为2.6以后的Linux内核版本中,可以控制打开或关闭。SELinux有三种工作模式:强制模式(违反规则被阻止并记录日志)、容忍模式(违反规则不阻止只记录日志)、关闭模式(不生效)。

SELinux主要扩展了类型Type标签,实现强制访问控制策略。SELinux提供了各种常见的MAC模型,比如BLP、Biba都有现成的模板可以使用。

SELinux在Linux内核以安全模块LSM(Linux Security Modules)的形式集成进来,系统的架构如下图:

SELinux默认是关闭的,要打开该功能需要修配置文件并重启,配置文件修改见下图:

SELinux的开源项目社区为:https://github.com/SELinuxProject

4.2. MIC on Windows

从Windows Vista和Windows 2008开始,微软在Windows内建了强制完整性保护机制,即MIC(Mandatory Integrity Control)。MIC采用类似Biba的模型实现,保护Windows内核模块的安全。

Windows系统对外主要使用自主访问控制模型DAC,MIC运行在DAC的下层,即优先根据MIC策略进行控制,再根据DAC策略进行控制。

MIC模型中共分为4个安全级别:低、中、高、系统级。Windows系统服务运行在系统级,管理员运行的进程运行在高安全级别,其他进程运行在中安全级别。当一个进程试图访问另一个文件时,其安全级别必须高于被访问对象。

MIC在Windows里没有对外的图形化操作界面,仅提供了命令行来设置文件的安全级别。命令行参考下图:

4.3. TrustedBSD on FreeBSD

TrustedBSD 也是以内核扩展的形式集成在FreeBSD 系统中,为强制访问控制策略提供支持。从FreeBSD 5.0 RC2版本开始,FreeBSD就开始内部集成TrustedBSD,但是缺省情况下,内核二进制代码中并没有包括对MAC框架的支持。

MAC 框架是一个插入式的访问控制框架,允许新的安全策略更方便地融入内核。安全策略可以编译时静态链接到内核中,也可以在引导时加载,甚至在运行时动态加载。该框架所提供的标准化接口,使得运行在其上的安全策略模块能对系统对象进行安全标记,从而实现各种强制访问控制的安全模型。

安全策略作为一个独立的动态内核链接(KLD)模块,可以独立于内核进行编译,再在使用的时候挂接到MAC框架上。在主体访问客体时,MAC框架会调用所有的安全策略,只有当所有的安全策略均表示同意,MAC框架才会授权这次访问,TrustedBSD的系统结构如下图:

关于TrustedBSD的详细内容请参考注【2】官方网站相关文档

4.4. Trusted Extensions on Solaris

Oracle提供可信扩展Trusted Extensions 加入 Solaris 系统,保护系统的安全性。Trusted Extensions可以提供自主访问控制和强制强制访问控制两种控制模型。

Trusted Extensions提供的强制访问控制模型在经典的DTE模型基础上进行了改进:

1.增加了区域(Zone)的概念,保证数据的隔离,不同区域之间不能通信。

2.支持同级别的多个安全标签。比如设定绝密级别的安全标记可以包括:绝密、绝密A、绝密B、绝密AB,如下图:

则不同标签之间的比较关系为:绝密 AB支配自身并且严格支配其他标签,绝密A支配自身并且严格支配绝密,绝密 B支配自身并且严格支配绝密,绝密 A和绝密B不相交无法比较。

综合来看,Trusted Extensions的强制访问控制模型有点像DTE模型但又不是DTE模型,应该是Oracle结合自身业务设计出来的模型。

基于LSM框架的SELinux作为Linux的一个安全模块,可以禁用,或将其设置为容忍或强制执行模式。而Trusted Extensions是Solaris的一个配置,无法禁用,权限策略可扩展,但始终强制执行。这两个框架都利用内核解释的进程权限管理(特权)来进行访问控制。

Trusted Extensions为Solaris添加了区域的安全标签,而SELinux则扩展了类型的安全标签。Trusted Extensions的区域概念可以提供完全虚拟化的环境,标记区域中的应用程序无需修改即可运行,同时提供了一套图形化界面来配置安全策略和标记,易用性更好一些。

5 威努特的相关产品和技术

威努特工控主机卫士产品是国内首款针对操作员站、工程师站、 数据服务器等工业现场主机进行安全加固的软件产品。产品颠覆了传统防病毒软件的“黑名单” 思想,采用与其相反的轻量级“白名单” 机制,可以有效阻止包括震网病毒、Flame、 Havex、 BlackEnergy 等在内的工控恶意程序或代码在工控主机上的感染、执行和扩散。

2018年,工控主机卫士融合了BLP、Biba和DTE三种强制访问控制模型,为用户提供针对计算环境的强制访问控制解决方案,可以满足等保三级和四级的强访要求。

工控主机卫士支持目前工业场景的所有操作系统,包括几十种Linux分支系统及版本、国产的麒麟等操作系统、Windows 2000以后的所有Windows版本,满足各种苛刻的工业现场需求。

工控主机卫士结合集中安全管理平台,可以实现大量客户端的安全策略配置和监控,从而达到整个网络的强制访问控制。

注【1】:关于RBAC模型

https://csrc.nist.gov/CSRC/media/Publications/conference-paper/1992/10/13/role-based-access-controls/documents/ferraiolo-kuhn-92.pdf

注【2】:关于TrustedBSD

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/mac.html

作者:石凌志

声明:本文来自威努特工控安全,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。