CSDN博客

img yako

信息安全-六: 审计

发表于2004/10/23 13:25:00  3775人阅读

分类: Research

第四章 审计

41 审计概述

审计是现代安全计算机系统必不可少的组成部分。它在身份鉴别、访问控制、信息流控制和加密技术等多种安全措施的基础上,进一步提高系统的可信度。计算机系统的审计跟踪技术与电子数据处理系统(EDP)的安全审计是两个不同的概念。后者是一种计算机系统安全评估方法,通过对被调查系统及其环境连续性和完整性管理方法进行评估,对已获得的数据进行评估,从而评估计算机系统的安全性。在这里,审计是模拟社会监察机构在计算机系统中监视、记录和控制用户活动的一种机制。其目标是检测和判定对系统的恶意攻击和误操作,作为一种事后分析和追查的有效手段来保护系统的安全。它对用户的非法活动起到威慑作用,为系统提供进一步的安全可靠性。

早在70年代,伴随着多用户、分时计算机系统的普及,审计作为一种保障计算机系统安全的技术也逐渐发展起来。早期的Burrough’s MCPHoneywell’s GCOSIBM’s MVSICL’s VME 2900等计算机均带有审计功能,随着计算机技术的广泛应用,传统的审计技术不断发展和强化,现代的许多计算机系统,如VAX/VMSUNIXORACLE等都带有审计功能。

审计作为一种有效的安全措施,是基于用户行为层次而不仅仅根据各个独立的用户操作。所谓用户行为是指在一段时间内用户的一系列操作以及这些操作之间的逻辑关系。许多危及系统安全的行为,在操作时并不表现出危害性,而在整个行为级上则隐含着攻击性和破坏(比如滥用特权或推断行为),在安全计算机系统中,审计通常设计成一个相对独立的子系统。另外,在系统中,设置有系统审计员(System auditor)这一特权用户,专门负责管理与系统审计有关的事务。

42审计子系统的功能

要完成审计的功能,即对用户行为进行有效的监视、记录和控制,审计子系统应包含以下功能:

1. 事件收集功能

在频繁的用户活动中,并不是所有的事件都对系统的安全构成危害,审计子系统应根据系统审计员或用户的要求,将与系统安全有关的事件收集起来进行分析。实现的方法往往是采用对事件设置审计开关。开关的开或关状态决定该事件是否属于收集范围,亦即是否属于监规范围。

2.       事件过滤功能

由于事件的结果不同,对系统安全影响的严重程度也不相同。审计子系统应根据系统审计员或用户的要求,对收集来的事件进行过滤,将需要记录下来的事件的内容写入审计日志。实现的方法往往是通过对事件设置审计阈值。审计阈值是事件结果严重度的某一取值,当事件的结果比审计阈值的取值更为严重时,则认为事件符合事件过滤的标准,必须记录下来。这样的事件称为审计事件,否则称为非审计事件。审计事件是同时满足设定的审计开关和审计阈值的事件。

3.       对事件的分析和控制功能

审计子系统要能对严重危及系统安全的事件具有控制功能,在违法事件的发生频率超过设定的值的时候,能够及时对用户提出警告;在事件发生得极其恶劣的时候,把该用户逐出系统并不再允许他登录,除非有系统管理员的干预,再次授予他登录权。这一部分功能往往通过在系统中设置报警阈值和惩罚阈值来实现。

报警阈值定义为用户在一定的时间内(如1小时内)出现的系统可容忍的违法事件发生的最多次数(如10次)。惩罚阈值定义为用户在一定的时间内,出现的系统可容忍的报警事件发生的最多次数。

4.       日志维护和查询功能

危及系统安全的行为可能持续时间很长,而且往往不能即时发现,同时也为了日后分析、追查的需要,经过收集、过滤而得到的有关事件的信息不能轻易丢掉,必须长期保存,并随时提供查询。用来记录审计信息的载体称为是审计日志。另一方面,经过收集、过滤后的审计事件,其信息量是非常大的,因此在审计日志的维护中,还必须进行事件的再过滤和数据压缩。

5.       审计信息安全性保护功能

审计信息是关于用户行为的,往往含有许多机密信息,审计子系统要确保它们不会被窃取。在系统中,允许用户具有对审计日志的查询权力,但在提供用户查询时,应该使得用户只能查询到他有权看到的信息。另外,为了给日后的追查提供可靠的依据,审计信息必须是不可更改的,这就要求审计子系统具有保护审计信息机密性和完整性的功能。

审计子系统的工作流程如图4.1所示。

 

分析结果

控制命令

   

用户

收集

分析

控制

过滤

日志维护

日志

审计事件

用户行为

 

 

 

 

 

 

 

 

 

 


4.1    审计子系统工作流程图

 

43审计子系统的实现机制

审计子系统应包含以下功能模块:

1.       初始化

为了使审计准确地实现收集、过滤、分析和控制等方面的功能,审计子系统需要许多参照信息,这些信息以数据字典的形式存放,另外为能完整地记录审计事件的内容,审计子系统还需要建立审计临时日志表。建立与审计有关的数据字典,生成参照信息和建立临时日志表的工作都须在系统的安装过程中,由审计的初始化模块完成。

2.       审计功能的开启与关闭

审计功能在开启之前,整个系统不具有任何对用户行为的监控作用。审计功能一旦开启,则时刻对系统中发生的事件进行监视和记录,直到被关闭。有权开启审计功能的用户应是审计员。对于系统中创建有客体的一般用户,如果需要也可以给予开启审计功能的权力,但仅有审计员才有权力关闭审计功能。系统中其他任何用户(包括系统管理员和系统安全员)都无权关闭审计功能。审计功能的开启和关闭状态由一个开关量来表示。

3. 开关和阈值的设置

计算机系统中涉及系统安全的事件可分为两大类:用户级事件和系统级事件,与之对应可设置两类开关:用户级开关和系统级开关。

用户级事件是系统中发生得最多、最为普遍的事件。例如在数据库系统中,数据的插入、删除、修改和查询等,这类事件以事件为粒度进行审计较为合适。在数据库系统中,可对修改表的结构,授权或回收,插入、改名、查询、修改、删除等设置开关。系统中创建有客体的任一用户可以对自己所拥有的客体,利用这些开关进行审计设置。系统审计员可以对系统中任一客体进行审计设置。因此对于不同的客体,这些开关的状态可以是不同的。

系统级事件的发生次数比用户级事件要少得多,但它们对整个系统的安全影响很大,例如,用户的登录和退出,系统管理员、系统安全员和系统审计员的活动,以及创建客体等涉及系统资源的活动。这种事件以事件类为粒度进行监控较为合适,创建时对上述五类操作可各对应设置一种开关。

对于事件的结果,可按其对系统安全性的影响程度进行分类,作为审计阈值的取值范围。例如,可将事件结果分为四种:

①成功:操作成功完成。

②失败:操作的过程中出现一般性错误,对系统安全构成的威胁较轻微。诸如语法错误、主体或客体的名称长度出错、对一个表设置过多的列等。

③出错:操作执行时,违反安全策略,但不对系统安全构成严重威胁。诸如创建已存在的客体、删除不为空的表、登录时口令出错等。

④违法:操作执行时,违反安全策略,且对系统安全构成严重威胁。诸如无系统审计员特权关闭审计功能、企图写访问安全级低的客体等。

一般将事件结果定义为一个全序关系,如:成功 < 失败 < 出错 < 违法

审计阈值定义为上述四种结果中的一种,当事件结果≥审计阈值时,该事件便为审计事件,需记录下来。例如,若定义某事件的审计阈值为出错,则凡结果为出错和违法的事件发生时均要记录下来。

只有当某事件的审计开关打开的情况下,审计阈值、报警阈值和惩罚阈值才有意义。当然,即使审计开关打开,若不设置报警和惩罚阈值,则可认为默认不要求进行报警和惩罚。

4. 事件收集、过滤和控制

事件收集和过滤的目的是判别当前事件是否为一审计事件,审计子系统是否要将该事件的有关信息记录下来。

对于系统级事件,其判别时可先从表中读出该事件的类别号,根据类别号在相应的表中找出与之相对应的审计阈值,若审计阈值不为空,则表示该事件满足审计开关的设置,进一步判别事件结果≥审计阈值是否成立,若成立则该事件是一审计事件。

对于用户级事件,其判别时先从系统字典表中查看是否有关于该事件所涉及的客体的审计设置,若有则通过操作号找到与其相对应的审计阈值,进一步通过判别事件结果类别≥审计阈值是否成立,来确定该事件是否为一审计事件。

对于结果为违法的事件,不论审计开关是否打开或阈值是否设置,均应视为审计事件。

若某一用户在系统设定的时间段内,违法或报警事件发生的次数≥相应的阈值,则该事件即为一报警或惩罚事件,为此系统中为每一个用户维护着一个报警链表和一个惩罚链表,用于记录每次发生违法和报警事件的时间。

若当前事件被判定为惩罚事件,则除显示相应的信息外,审计子系统将回收用户的登录权力并终止程序的运行,使他再也无法进入系统,直至系统管理员重新授予他进入系统的权力。

5. 审计日志的维护

审计日志是记录审计内容的载体,分为两级:临时日志和归档日志。

各个审计事件发生的时间、涉及的主体和客体、事件的操作类型、事件的结果以及与系统安全有关的一些内容一起构成审计内容,按照一定的格式写入审计日志。审计日志应能方便地进行查询,临时日志是最近一段时期产生的审计内容临时存放的区域,相当于一个缓冲区,它可以数据库中表的形式存放在联机系统中。可由一个主表和若干个辅表组成,主表中存放所有事件的公共内容以及与审计日志有关的各种标志。事件的公共内容包括:事件的主体和客体的标识、事件的操作号、结果类、发生的时间等。与审计日志有关的标志包括:相关辅助表名、相关辅助表中的记录数、相关辅助表中的记录标志、报警事件标志、惩罚事件标志等。辅助表中存放事件中除了公共内容以外的其它内容,这些内容可能随事件的不同而不同(如授权操作中的被授权主体标识)。

在临时日志膨胀到一定限度时,系统将停止工作,并提示系统审计员卸出临时日志。将其存放到归档日志中,只有审计员才有权归档。虽然经过了收集和过滤,被记录下来的信息,其数据量仍是非常大,长期保存它们需要大量的空间,对此可采用数据压缩技术。另外,这些信息都是十分敏感的,必须采取加密手段进行处理。由于文件需要长期保存,因此对文件加密的密钥也需要长期保存。如果直接保存密钥,这是十分不安全的。可采取密钥动态生成的方法,只保存生成密钥的参数,若直接利用文件中的数据作为参数,则连参数也不用保存,这种生成密钥的方法,可使得同一个文件中不同的文件段采用不同的密钥,在一定程度上也增强了日志的安全性。

6.       审计日志的查询

审计日志按时间顺序记入审计事件的内容,但审计日志应提供多种方式的查询。如按时间顺序、按客体对象、按用户或按事件类型等,甚至多条件查询。为了得到完整的审计内容,在从主表中读出一条记录的同时,将相应的辅助信息从辅助表中读出来,形成完整的审计信息提交给用户。一般来说,用户可以查询他本人进行设置而产生的临时日志中的审计内容,系统审计员可以查询所有的临时日志和归档日志。

7.       安全自维护

审计子系统应有一个安全模块对与审计功能相关的事件进行安全检查和控制,以在一定程度上保证审计子系统和审计日志的安全,其安全维护的内容如下:

系统中任一至少拥有一个客体的用户和系统审计员可执行审计功能开启命令,但只有系统审计员才可以使用审计功能关闭命令。

用户只能对自己所拥有的客体设置审计,而系统审计员可以对系统中所有的客体设置审计。仅系统审计员才可以对系统级事件设置审计。

一般用户只能察看由他本人设置而获得的审计内容,不能察看系统审计员设置而获得的审计信息。系统审计员可以查询所有的审计信息。

审计日志的维护和归档,只能由系统审计员来完成。

审计子系统的结构和各功能模块之间的关系如图4.2所示。

总控模块

设置模

日志维护模

收集过滤模

日志查询模

开启关闭模

安全自维护模块

数据字典

审计日志

 

 

 

 

 

 

 

 

 

 

 

 

 


4.2  审计子系统结构图

 

44相关的问题

441审计粒度

审计开关决定对事件的收集范围。根据实际系统的不同需求,可以选择不同的对象作为审计粒度进行不同的开关设置。对于用户级事件可考虑以下几种审计粒度的选择:

(1) 以客体(如文件和关系)为审计粒度

在系统中,以客体为粒度进行审计设置,为每一客体相应配置一组审计开关,实现对客体的全部或部分操作的审计。这种方式可实现对某些客体的重点监护。这是一种最通常的设置方式。

(2) 以用户为审计粒度

在系统中以用户为粒度进行审计设置,为每一用户相应配置一组审计开关,实现对用户的全部或部分行为的审计。这种方式可实现对某些用户的重点监视。该审计方式对于金融部门防止和发现内部不可信主体的犯罪是十分有用的。

(3) 以(用户、客体)为审计粒度

在系统中以(用户、客体)为审计粒度进行审计设置,为其配置一组审计开关,可用以监视不可信主体可能出现的有目标的恶意攻击。

442多级安全系统的审计

在一个实施了多级安全访问控制的系统中,审计子系统的设计必须遵循多级安全策略。因此在用户审计的权力、阈值的设定、日志的维护和查询等方面与一般系统的审计都有所不同。

首先,在系统中,拥有客体的用户虽能开启审计功能,也能对自己拥有的客体设置审计,但他不能对安全级高于自己的用户的行为进行审计,至少他不能看到这些用户的操作及其操作结果。

另外,在多级安全系统中,主体和客体均分配有安全级(即安全标记),对于事件的过滤有时需要根据安全级来进行。为了满足这种需求,可将审计阈值定义为由安全级阈值和严重度阈值两部分组成,安全级阈值的取值范围是系统中主体和客体的安全级,严重度阈值即前面所说的审计阈值,它的取值范围是事件的结果类,若事件返回结果为成功,则表示严重度的最小值,若是违法,则表示严重度的最大值。因此审计阈值由一个二元组K=({c1c2cn}a)给出,其中c1c2cn是安全级阈值,a是严重度阈值。

在以客体为粒度的审计中,利用K的设置可对安全级为cii =12n)的主体且对该客体访问的事件结果的严重程度值大于或等于a的事件进行审计。因为安全级之间往往是偏序关系而不是全序关系,所以这里允许给出若干个安全级阈值可方便审计对象的选择。

在以用户为审计粒度的审计中,利用K的设置,可对安全级为cii=12n)的客体且该用户对其访问的事件结果的严重程度值大于或等于a的事件进行审计。

在以(用户,客体)为审计粒度的审计中,由于用户和客体均已指定,因此只要对收集的事件的结果进行判别,即可决定是否为审计事件。所以相应的审计阈值K=(φ,a),即只需要给出严重度阈值。

在多级安全系统中,事件的审计内容不仅包含事件的主、客体,往往还需要记录主、客体的安全级。同时审计子系统还必须为每一条审计信息定义安全级,以保证低安全级用户不会从审计日志中获得他不应该获得的有关高安全级用户的信息。在审计日志的查询中,还应该提供按安全级查询的方式,使系统审计员或用户能查询具有指定安全级的用户或指定安全级的客体所涉及到的事件的审计内容。

443 冲突问题

关于审计功能的开启,最为简单的设计是只允许系统审计员有开启的权力,其他用户均不能开启。这种集中管理模式简化了系统的管理且具有较好的安全性,但对用户来说不方便。让系统中至少拥有一个客体的用户具有开启审计功能的权力,在现代大型企业和办公自动化系统中是必要的。但系统审计员有关闭审计功能的权力,这有可能引起冲突,特别是当用户还需要审计而系统审计员却关闭了审计的情形下。另外,用户可对自己拥有的客体设置审计,系统审计员可对系统中所有的客体设置审计,若他们都对同一对象设置审计,而设置的阈值不相同时,也会出现冲突。对于这些冲突,审计子系统都必须根据应用背景给出相应的优先策略,是系统审计优先,还是审计阈值大的优先。审计占用系统大量的时间与空间,在实际系统中为不使系统效率大幅度下降,往往不能对所有的事件进行收集和审计,这就必须取其重,弃其轻。

 

习题四

41 审计在计算机信息系统安全中的地位和作用是什么?

42 审计子系统应具有些什么功能?

43 审计过程中需要设置哪些阈值?它们各起什么作用?

44 什么是审计日志?它在审计中起何作用?

45 为什么系统管理员和系统安全员的行为一定要审计?

阅读全文
0 0

相关文章推荐

img
取 消
img