具体实施方式
参见图1,本发明具体实施可基于一个异常文件访问监控系统ADSAFA(an AdaptiveDetection System for Abnormal File Accesses)进行。在ADSAFA中,文件访问传感器同时连接被监控系统、审计数据库及预处理模块,并通过预处理模块与检测模块连接,检测模块与正常文件访问模型互联,并通过报警模块与安全控制终端和警报数据库相连,安全控制终端和报警模块通过人工或自动响应机制与被监控系统连接,更新模块与正常文件访问模型相连接,对正常模型进行自动的或在安全控制终端命令下的强制修正。
所述的被监控系统为个人计算机、各种网络服务器(例如WWW、DNS、邮件、数据库服务器等)及各种专用计算机(例如巨型机、大型机、专用工作站等)等配备有文件系统的计算机。
ADSAFA中的文件访问传感器负责实时记录被监控系统中产生的文件资源访问请求,即对发生的每一个文件资源访问请求记录如下信息:
1)发生时间;
2)被访问文件的绝对路径名;
3)描述访问权限的访问用户真实ID、有效ID、真实组ID及有效组ID;
4)访问进程的进程ID及该进程对应的可执行文件的绝对路径名;
5)访问操作的操作类型、操作参数及操作结果(此次文件访问是成功还是失败)。
预处理模块对记录的文件资源访问请求进行预处理,生成文件访问记录,具体包括:
1)只使用访问用户有效ID描述访问权限;
2)只使用访问进程对应的可执行文件的绝对路径名描述访问进程;
3)同时使用操作类型,操作参数及操作结果描述访问操作,得到一个扩充的访问操作属性;
4)生成文件访问记录,文件访问记录是具有如下格式的五元组:
发生时间,被访问文件,访问用户,访问进程,访问操作
其中被访问文件用被访问文件的绝对路径名描述;访问用户也即访问权限用访问用户有效ID描述;访问进程用访问进程对应的可执行文件的绝对路径名描述;访问操作用3)中得到的扩充访问操作属性描述。
文件访问记录中的访问操作属性是由文件访问传感器所记录的文件资源访问请求中包括的操作类型、操作参数及操作结果合并得到的。例如,一次文件访问的操作类型是“打开文件”,操作参数是“写模式”,操作结果是“成功”,经过数据转换后三者被合并成访问操作:“成功的写模式文件打开”,该访问操作与“失败的写模式文件打开”以及“成功的读模式文件打开”是不同的访问操作。
参见图2,正常文件访问模型为文件访问关系树,记录了正常的文件访问记录中描述的文件访问关系。这里文件访问关系是指由文件访问记录所反映的被访文件,访问用户、访问进程以及访问操作的各种属性值之间的组合关系。文件访问关系树是依据如下的数据结构建立的:
1)基本记录结构为文件访问结构FAS(File Access Structure)和目录访问结构DAS(Directory Access Structure)。
文件访问结构FAS分三种类型:
用户文件访问结构u-FAS(FAS of users)
进程文件访问结构p-FAS(FAS of processes)
操作文件访问结构o-FAS(FAS of operations)
目录访问结构DAS分四种类型:
文件组成结构f-DAS(DAS of files)
用户目录访问结构u-DAS(DAS of users)
进程目录访问结构p-DAS(DAS of processes)
操作目录访问结构o-DAS(DAS of operations)
2)文件组成结构f-DAS是一些由被访文件或目录组成的集合,每一个f-DAS都对应于文件系统中的一个目录,记录了所有被访问到的直接下属于该目录的文件或子目录。根据f-DAS中的目录元素同其它f-DAS的对应关系,所有的f-DAS组成了一个树形或森林形结构,该结构被称为文件树,文件树是文件访问关系树的第一个层次。
3)文件树上的每一个文件或目录(f-DAS中的元素)都有一个用户文件访问结构u-FAS和进程文件访问结构p-FAS,用于分别记录访问该文件或目录的用户或进程以及一个操作文件访问结构O-FAS用于记录访问该文件或目录时所使用的访问操作。对于目录元素,还另有一个用户目录访问结构u-DAS、一个进程目录访问结构p-DAS,分别为访问该目录下文件或子目录的用户或进程的总的集合;以及一个操作目录访问结构o-DAS,为访问该目录下文件或子目录时所使用的访问操作的总的集合。这些u-FAS、p-FAS、o-FAS、u-DAS、p-DAS和o-DAS组成了关系树的第二个层次。
4)在第二个层次的FAS和DAS之下,还有组成文件访问关系树第三个层次的FAS和DAS:
在第二个层次u-FAS和p-FAS中的每一个用户或进程之下都有一个o-FAS用于记录所属用户或进程访问相关文件或目录时使用的操作;相关文件或目录为第二个层次的u-FAS和p-FAS所属文件或目录;
在第二个层次o-FAS中的每一个访问操作之下都有一个u-FAS和一个p-FAS分别用于记录使用所属操作访问相关文件或目录的用户或进程。相关文件或目录为第二个层次的o-FAS所属文件或目录;
在第二个层次u-DAS和p-DAS中的每一个用户或进程之下都有一个o-DAS用于记录所属用户或进程对相关目录下的文件或子目录进行访问时使用的所有操作;相关目录为第二个层次的u-DAS和p-DAS所属目录;
在第二个层次o-DAS中的每一个访问操作都有一个u-DAS和一个p-DAS分别用于记录使用所属操作访问相关目录下文件或子目录的所有用户或进程。相关目录为第二个层次的o-DAS所属目录。
5)每一个FAS或DAS都有一个时间稀缺度t-Rarity属性及一个惩罚时间属性。t-Rarity用于描述该FAS或DAS随时间的变化情况;惩罚时间用以表示t-Rarity是否处于惩罚期及剩余惩罚时间的长短。
6)FAS或DAS中的每一个元素都有一个年龄属性,一个记忆时间属性以及一个最大记忆时间属性。
年龄属性记录了该元素在文件访问关系树中已经存在的时间;
记忆时间属性描述了该元素在文件访问关系树中还会存在的时间;
最大记忆时间属性限定了该元素的记忆时间属性所能取到的最大值。
文件访问关系树中的每个FAS或DAS的时间稀缺度t-Rarity属性值被用来描述该FAS或DAS的固定程度。在文件访问关系树记录正常文件访问记录所描述的文件访问关系的时候,可能会有新(原先不存在的)元素被加入到一些相关的FAS或DAS中,或者说一些FAS或DAS可能会被扩充。t-Rarity是一个基于时间的启发式因子,刻画了对应FAS或DAS扩充的频繁程度,更准确的说是基于时间尺度刻画了FAS或DAS扩充事件的稀缺度(Rarity inTime)。在本发明中,t-Rarity的计算包括以下两步:
1、惩罚时间的计算
每次有新元素被加入到一个FAS或DAS中,该FAS或DAS的t-Rarity的增长进入惩罚期,惩罚期长短由惩罚时间描述,且有
惩罚时间=t-Rarity*惩罚系数
惩罚系数为根据实际情况设定的大于零常数,一般可取2.0
2、周期性的对时间稀缺度t-Rarity值进行更新
每隔一定时间对t-Rarity值进行更新,更新时根据惩罚时间的属性值,如果该值大于0,则将惩罚时间减1,而t-Rarity的增长被惩罚,该属性值不变化;如果该值小于或等于0,则对FAS或DAS的t-Rarity属性值加1,并将惩罚时间设置为0;
参见图3,当FAS或DAS刚创建的时候,其对应的t-Rarity属性值为0。一个频繁被扩充的FAS或DAS的t-Rarity经常处于惩罚期,始终比较小;而一个很少被扩充的FAS或DAS的t-Rarity值则会随时间逐渐增大。由于固定的FAS或DAS,一般不会在长时间内被频繁的扩充,因此可以根据一段时间后t-Rarity的大小,将固定的FAS或DAS同固定程度较低的FAS或DAS区分开来。
ADSAFA中预先设定一固定程度阈值,t-Rarity属性值大于该阈值的FAS或DAS,被认为是固定的FAS或DAS并组成了文件访问关系树的固定部分;文件访问关系树中其它的FAS或DAS被认为是不稳定的FAS或DAS,组成了文件访问关系树的变化部分。
检测模块根据文件访问关系树对文件访问记录进行分析,如果发现异常行为就会触发报警模块通过安全控制终端向安全管理员发出警告;如果未发现文件访问记录有异常,便在文件访问关系树中记录下该文件访问记录中描述的文件访问关系。
检测模块根据文件访问关系树对文件访问记录进行分析,包括以下步骤:
1)检查被访文件绝对路径上的各目录以及被访问文件自身是否被记录在文件访问关系树中与它们各自的父目录对应的f-DAS中;
2)检查访问用户是否被记录在位于文件访问关系树第二个层次的相关u-FAS或u-DAS中。相关的u-FAS是指直接下属于被访文件的u-FAS;相关u-DAS是指直接下属于被访文件绝对路径上各目录的u-DAS;
3)检查访问进程是否被记录在位于文件访问关系树第二个层次的相关p-FAS或p-DAS中。相关的p-FAS是指直接下属于被访文件的p-FAS;相关p-DAS是指直接下属于被访文件绝对路径上各目录的p-DAS;
4)检查访问操作是否被记录在位于文件访问关系树第二个层次的相关o-FAS或o-DAS中。相关的o-FAS是指直接下属于被访文件的o-FAS;相关o-DAS是指直接下属于被访文件绝对路径上各目录的o-DAS;
5)检查访问用户是否被记录在位于文件访问关系树第三个层次的相关u-FAS或u-DAS中。相关u-FAS指作为第4步中相关o-FAS中元素的本次访问操作下属的u-FAS;相关u-DAS指作为第4步中相关o-DAS中元素的本次访问操作下属的u-DAS;
6)检查访问进程是否被记录在位于文件访问关系树第三个层次的相关p-FAS或p-DAS中。相关p-FAS指作为第4步中相关o-FAS中元素的本次访问操作下属的p-FAS;相关p-DAS指作为第4步中相关o-DAS中元素的本次访问操作下属的p-DAS;
7)检查访问操作是否被记录在位于文件访问关系树第三个层次的相关o-FAS或o-DAS中。相关o-FAS指作为第2步中相关u-FAS中元素的本次访问用户下属的o-FAS,或者作为第3步中相关p-FAS中元素的本次访问进程下属的o-FAS;相关o-DAS指作为第2步中相关u-DAS中元素的本次访问用户下属的o-DAS,或者作为第3步中相关p-DAS中元素本次访问进程下属的o-DAS。
上述步骤涉及的FAS或DAS被称为与本次文件访问记录相关的FAS或DAS。如果文件访问记录的属性值在相关的FAS或DAS中不存在,则称此文件访问记录同这些FAS或DAS不相符。当前文件访问记录的异常度定义为同其不相符的FAS或DAS的t-Rarity的最大值。如果文件访问记录的异常度大于固定程度阈值,即该记录同固定的FAS或DAS不相符,则该条文件访问记录被标记为异常。否则,则该条文件访问记录被标记为正常。
检测模块在文件访问关系树中记录下文件访问记录中描述的文件访问关系,包括以下步骤:
1)检查当前被访问文件绝对路径上的各目录及被访文件本身,是否分别存在于与它们各自的父目录对应的f-DAS中。如果已经存在,则激活对应f-DAS中已经存在的元素;如果不存在,则将该目录或文件加入对应的f-DAS中;当前被访文件指记录于该条文件访问记录中的被访文件属性值;
2)检查当前访问用户,是否存在于相关u-FAS及相关u-DAS中。如果已经存在,则激活对应u-FAS或u-DAS中已经存在的元素;如果不存在,则将该访问用户加入对应的u-FAS或u-DAS中;当前访问用户指记录于该条文件访问记录中的访问用户属性值;
3)检查当前访问进程,是否存在于相关p-FAS及相关p-DAS中。如果已经存在,则激活对应p-FAS或p-DAS中已经存在的元素;如果不存在,则将该访问进程加入对应的p-FAS或p-DAS中;当前访问进程指记录于该条文件访问记录中的访问进程的属性值;
4)检查当前访问操作,是否存在于相关o-FAS及相关o-DAS中。如果已经存在,则激活对应o-FAS或o-DAS中已经存在的元素;如果不存在,则将该访问操作加入对应的o-FAS或o-DAS中;当前访问操作指记录于该条文件访问记录中的访问操作的属性值。
在上述步骤中,激活FAS或DAS中已经存在的元素是指将该元素的记忆时间属性值重新设定为该元素的最大记忆时间属性值。将新元素加入对应的FAS或DAS是指进行如下操作:
1)该元素加入对应FAS或DAS表示的集合中;
2)新元素的相关属性值设置如下:
最大记忆时间=所属FAS或DAS的t-Rarity属性值*记忆强度系数+基本记忆时间;
记忆时间=最大记忆时间
年龄=0
其中记忆强度系数、基本记忆时间为大于零常数,根据实际需要设定,记忆强度系数一般可取为2.0,基本记忆时间一般可取为24小时;
3)被加入新元素的FAS或DAS的t-Rarity进入惩罚期并且重新设定该FAS或DAS的惩罚时间属性值:
惩罚时间=t-Rarity*惩罚系数
更新模块负责周期性的更新文件访问关系树各部分的t-Rarity尺度值、其它相关参数及删除文件访问关系树中记录的过时文件访问关系,具体包括如下操作:
1)判断文件访问记录中的发生时间属性值与上次更新时间之差是否大于预先设定的更新周期,如果是则进行步骤2)、3)、4),并把上次更新时间设置为当前的发生时间属性值;如果否,则什么也不做;
2)检查文件访问关系树中每个FAS或DAS的惩罚时间属性值,如果该值大于0,则将惩罚时间减1;如果该值小于或等于0,则对FAS或DAS的t-Rarity属性值加1,并将惩罚时间设置为0;
3)对所有FAS或DAS中元素的年龄,记忆时间及最大记忆时间进行更新:
对年龄值加1;
对记忆时间减1;
最大记忆时间设定为:MAX(年龄值,所属FAS或DAS的t-Rarity属性值)×记忆强度系数+基本记忆时间;
4)检查所有FAS或DAS中元素的记忆时间属性值,如果记忆时间小于0,则将该元素从其所属FAS或DAS中删除,并依据如下情况删除该元素下属的FAS或DAS:
a)如果被删除元素位于文件访问关系树第三个层次的FAS或DAS中,则无下属FAS或DAS被删除;
b)如果被删除元素位于文件访问关系树第二个层次的FAS或DAS中,则删除下属于该元素的文件访问关系树第三个层次中的FAS或DAS及其所属元素;
c)如果被删除元素为文件,则删除下属于该文件的所有第二个层次的FAS及其所属元素;同时根据a),b)删除所有被删除元素的下属FAS;
d)如果被删除元素为目录,则删除对应于该目录的f-DAS、下属于该目录的所有第二个层次的FAS和DAS及其这些FAS和DAS中包含的所属元素;同时根据a),b),c),d)删除所有被删除元素的下属FAS或DAS。
报警模块向安全管理员发出的警告中包括文件访问传感器所采集到的关于此次异常文件资源访问请求的所有信息:文件访问发生时间,被访文件绝对路径名,访问用户的真实ID、有效ID、真实用户组ID、有效用户组ID,访问进程的进程ID、进程可执行文件的绝对路径名,操作类型,操作参数,操作结果;警告中还包括ADSAFA给出的此次文件访问的四个子异常度值:被访文件异常度、访问用户异常度、访问进程异常度、访问操作异常度,它们分别为与此次文件访问相冲突的t-Rarity值最大的f-DAS,u-FAS(或u-DAS),p-FAS(或p-DAS),o-FAS(或o-DAS)的t-Rarity值(或者为0表示没有冲突的情况)。
安全控制终端将ADSAFA的报警结果呈现给管理员,并提供多种方式实现报警信息的查询与关联,使报警信息的分析非常容易。安全控制终端还使安全管理员可以对ADSAFA进行管理,通过人工的方式使文件访问关系树记录下误判的文件访问记录中描述的正常文件访问关系。
以下结合ADSAFA处理正常及异常文件访问事件的过程对本发明作进一步的详细说明。
2.1.1之前版本的OpenSSH存在一个严重的安全漏洞(http://www.securityfocus.com/bid/3614),OpenSSH通过login对用户进行认证时会使用用户自定义的环境变量。这样,攻击者通过将LD_PRELOAD环境变量设置为一个木马共享函数库,就可以将Login设置用户权限时使用的setuid函数重载,从而使以普通用户身份登录系统的攻击者能够拥有管理员的权限访问受害计算机。该攻击的步骤如下:
1).攻击者小李将一个木马共享函数库libroot.so安装到计算机系统A中/home/li目录下;
2).攻击者小李在/home/li/.ssh/authorized_keys2中将LD_PRELOAD环境变量设为/home/li/libroot.so
3).小李通过OpenSSH重新登录,由于/sbin/login根据用户自定义的环境变量LD_PRELOAD加载了库函数/home/li/libroot.so,login进程所使用的setuid函数被libroot.so中的setuid重载了
4).身份验证成功后,/sbin/login给了小李一个具有root权限的shell(/bin/bash)。(正常情况下,/sbin/login运行/bin/bash时,访问用户有效ID应已经通过setuid函数设置为小李)
表1是与以上各步对应的文件访问操作:
表1 OpenSSH攻击中的文件访问事件
步骤 |
访问时间 |
被访问文件 |
访问用户有效ID |
访问进程 |
操作类型 |
操作参数 |
操作结果 |
1 |
2003.11.202:12:23 |
/home/li/libroot.so |
小李 |
/bin/bash |
Open |
CreateMode |
成功 |
2 |
2003.11.202:14:23 |
/home/li/.sst/authorized_keys2 |
小李 |
/bin/vi |
Open |
WriteMode |
成功 |
3 |
2003.11.202:17:23 |
/home/li/libroot.so |
Root |
/sbin/login |
Mmap |
|
成功 |
4 |
2003.11.202:17:23 |
/bin/bash |
Root |
/sbin/login |
Exec |
|
成功 |
虽然上述四步组成了整个攻击过程,但攻击第1步小李在自己的目录中创建文件和第4步/sbin/login以root身份运行一个shell,仅从文件访问操作自身来看并无任何异常,可以认为是正常是的文件访问请求。而与第2、3两步相关的文件访问操作则表现出比较明显的异常性:普通使用者一般不会改动sshd的配置文件,/sbin/login也通常只在固定的库函数目录下加载函数库。下面以ADSAFA对第1步和第3步的文件访问事件的处理为例,对本发明处理正常和异常文件访问记录的过程作具体说明。
参见图4,文件访问传感器记录下的小李第1步操作时产生的文件资源访问请求如下:
发生时间:2003.11.20 2:12:23,被访问文件的绝对路径名:/home/li/libroot.so,访问用户真实ID、有效ID、真实组ID及有效组ID均为小李,访问进程的进程ID:113,该进程对应的可执行文件的绝对路径名:/bin/bash,操作类型:打开、操作参数:写模式,操作结果:成功。
预处理模块生成文件访问记录:
2003.11.20 2:12:23,/home/li/libroot.so,小李,/bin/bash,成功的创建打开文件
检测模块对此记录进行分析,发现其同文件访问关系树中下属于目录“/home/li”的f-DAS不相符,即文件libroot.so未被记录在“/home/li”对应的f-DAS中,显然文件访问关系树中也不会存在下属于“/home/li/libroot.so”的FAS。但由于用户通常都会在自己的目录下创建一些文件,/home/li目录对应的f-DAS的t-Rarity值不会太高,不妨设为100。而本次文件访问行为除了访问新的文件之外,其它方面反映出的文件访问关系均均为正常的访问关系,应早已被记录在文件访问关系树中,因此本次文件访问的异常度即为100。一般情况下,ADSAFA固定程度阈值被设为240,本次文件访问的异常度小于固定程度阈值,因此ADSAFA会认定本次文件访问为正常,并将本次文件访问记录所描述的文件访问关系记录于文件访问关系树中:将“libroot.so”加入“/home/li”对应的f-DAS,并且将“小李”、“/bin/bash”、“成功的创建打开文件”分别加入为“libroot.so”新建的u-FAS、p-FAS和o-FAS中。同时,已经记录在与该文件访问相关DAS(如目录“/”,“/home”及“/home/li”下属的u-DAS,p-DAS及o-DAS)中的元素“小李”,“/bin/bash”及“成功的创建打开文件”会被激活。相关f-DAS中路径“/home/li/”上的目录“home”和“li”会被激活。
接下来ADSAFA中的更新模块会检查本次文件访问记录中的发生时间与上次更新时间之差是否超过了更新周期,如果是则更新文件访问关系树各部分的t-Rarity尺度值、其它相关参数及删除文件访问关系树中记录的过时文件访问关系,并将上次更新时间设置为本次文件访问记录中的发生时间;否则什么也不做,并结束本次文件访问记录的处理。
ADSAFA对攻击第3步涉及的文件资源访问请求的处理,同上述对第1步的相关处理类似。文件访问传感器采集到的与该次文件资源访问请求经预处理模块处理后得到如下记录:2003.11.20 2:12:23,/home/li/libroot.so,Root,/sbin/login,成功的内存映射检测模块对该事件进行分析,由于通常情况下进程“/sbin/login”只会对“/usr/lib”目录下的文件进行“内存映射”操作,文件访问关系树中记录进程“/sbin/login”在“/home”目录下行为的任何o-FAS或o-DAS中都不会出现访问操作“成功的内存映射”,而且由于进程“/sbin/login”的正常运行模式规范,描述进程“/sbin/login”对目录“/home”及“/home/li”总体访问行为的两个o-DAS的t-Rarity值会很大,在这里我们可假设这两个值均为480。本次文件访问记录与这两个o-DAS不相符,其异常度至少为480,高于设定固定程度阈值240,因此ADSAFA会认定该次文件访问为异常,并触发报警模块产生报警。这样攻击最关键的第三步就会被ADSAFA成功检测出来。
以下是基于ADSAFA实施本发明的一些具体细节:
表2、表3、表4为本实施例所采用的具体实现技术及基本设定及参数设置。
表2文件访问数据的采集机制
操作系统 |
文件访问数据采集机制 |
Windows |
“钩子(hooks)”技术 |
Linux |
内核可加载模块(LKM) |
Solaris |
Solaris系统的BSM审计模块 |
其它的UNIX系统(如HP-UX,SGI IRIX,IBM AIX,CompaqTru64,OpenBSD,FreeBSD,NetBSD等) |
内核可加载模块(LKM) |
表3UNIX系统中重要的文件访问操作
操作类别 |
操作名称 |
操作描述 |
文件创建 |
Link |
建立文件链接 |
symlink |
建立文件符号链接 |
Mkdir |
创建目录 |
mknod |
创建节点文件 |
Create |
创建文件 |
Open-create |
以创建模式打开文件 |
process dumped core |
进程运行出错生成出错日志文件 |
文件读取 |
Open-read |
以读模式打开文件 |
Chdir |
切换目录 |
Chroot |
设定根目录位置 |
Readlink |
读符号链接文件 |
文件修改 |
Acl |
获取或设置文件的访问控制列表 |
Chmod |
改变文件的访问权限 |
Chown |
改变文件的属主 |
Fcntl |
对已经打开的文件进行控制 |
Flock |
访问同步控制:锁文件 |
Utime |
设置文件的访问或修改时间 |
|
Rename |
文件重命名 |
Open-write |
以写模式打开文件 |
文件删除 |
rmdir |
删除目录 |
Unlink |
删除文件 |
truncate |
截断文件 |
open-truncate |
以截断模式打开文件 |
文件查询 |
Access |
查询对某文件拥有的操作权限 |
Stat |
查询文件信息 |
statfs |
查询文件系统信息 |
pathconf |
查询文件配置参数 |
文件执行 |
Execve |
执行文件 |
其它的文件访问事件 |
Mmap |
将文件内容映射到内存中 |
Umount |
卸载文件系统 |
表4ADSAFA的基本参数设置
参数 |
设置 |
文件访问关系树更新周期 |
1小时 |
基本记忆时间 |
24小时 |
记忆强度系数 |
2.0 |
t-Rarity增长的惩罚系数 |
2.0 |
ADSAFA的实际部署参照图5,在分别以Linux、Solaris和Windows为操作系统的三台服务器上安装ADSAFA,对这些服务器中的文件访问行为进行安全监控,检测的结果上报给位于局域网内另一台服务器上的安全控制终端。
图5所示的安装于A、B、C三台服务器中的ADSAFA,除文件传感器因为会从操作系统中采集数据,需要针对具体的操作系统专门设计之外,其它部分在功能和结构上都是与操作系统无关的。表2是文件访问传感器在各种操作系统中采集文件访问数据所使用的机制。
表3是ADSAFA在UNIX系统(包括Solaris和Linux)中所关注的重要文件访问操作。ADSAFA启动后,即进入检测模式,并同时根据从被监控系统中观察到的文件访问行为,安全可靠的自动建立正常行为模型以及不断的对模型进行实时更新,在此过程中基本上不需要人为的干涉。ADSAFA中基本参数的设置如表4所示。
t-Rarity阈值是ADSAFA实现自适应学习和异常检测的关键参数,文件访问关系树中t-Rarity值超过该阈值的FAS或DAS被认为是固定的,组成文件访问关系树的固定部分,并作为检测异常文件访问的依据,同时ADSAFA只允许那些非固定的FAS和DAS在线进行自适应学习(记录下新出现的文件访问关系)。在ADSAFA启动的初期,文件访问关系树中所有FAS或DAS的t-Rarity属性值都比较小,此时只能根据t-Rarity值增长的快慢,粗略区分固定与非固定的FAS或DAS,因此检测系统投入使用的头14天,t-Rarity阈值被设置成是随时间线性增长的,线性系数为0.7。之后,固定与非固定的FAS或DAS的t-Rarity值差别日趋显著,从第14天起t-Rarity阈值被设置为一个固定值240(单位小时)。t-Rarity阈值的选取如图6所示。
ADSAFA检测到异常行为,会通过网络实时上报给位于另一台服务器上的安全控制终端,以便安全管理员对可能发生的攻击及时作出处置。安全控制终端提供多种方式对这些报警信息进行关联,使报警信息的分析非常容易。
实施效果
严重威胁系统安全的攻击行为一般都涉及异常的文件访问行为,如网络黑客利用安全漏洞获得本地系统直接访问权限,内部人员数据窃取和破坏行为等等。基于实际系统中采集得到的大量正常行为数据,以及系统选择的数十种典型的攻击行为,对本发明方法进行的测试结果表明本发明方法可以以0.005%的误报率检测出90%以上攻击。而对于同样的数据,哥伦比亚大学的FWRAP模型检测出90%的攻击时的误报率为7%。考虑到实际系统中每天的文件访问事件数一般在100万条左右,ADSAFA误报水平基本可以控制在每天100条以下,而FWRAP则每天会产生数万条误报。
此外实验还表明,在正常情况下,实现的ADSAFA原型系统对CPU的占用在2%左右,内存消耗在20-30MB之间,可以为大多数实际系统所接受。而FWRAP仅内存消耗就会超过400MB。
实施例中的Solaris系统(图6中的服务器A)是中国教育科研网(CERNET)西北网络中心的一台核心服务器,上面运行了许多重要的服务。ADSAFA在该服务器上完成了长达半年时间的试运行。在此期间,ADSAFA多次成功检测出WWW cgi扫描,邮件服务非法使用等异常行为,产生的虚警数量基本在每天100个左右(该服务器每天产生的正常文件访问事件数量超过200万个)。而且在试运行期间,ADSAFA没有对该服务器的正常运行造成任何不良影响。