数据库审计系统的设计与实现路径探析

2021-01-23 05:10李红丽
关键词:数据包排序规则

李红丽

(阳泉师范高等专科学校,山西 阳泉 045200)

数据库审计系统(简称DBAudit System),作为数据库的安全技术之一,可以实时记录在线的数据库的各种活动,对数据库遭受到非正常操作行为和风险实时告警,对正在对其发起的攻击行为阻断处理。数据库审计系统对用户访问数据库行为进行记录、统计和研究,为用户生成相关事故报告,可以对事故进行追根溯源,同时还加强了数据库内部和外部网络行为的记录和存储,有效保障了数据资产安全。

一、研究背景

1980年,James P.Anderson在由其撰写的题名为《计算机风险监控》的技术报告中提出了数据库审计的概念和理论,James指出当时所有的数据库系统存在的两种风险:系统外部的入侵和来自数据库系统内人员的异常操作举动。基于这两种风险,他指出可以通过对数据库系统施行安全审计,监测各种异常操作行为,以此来保证数据库的安全性和可靠性。

国际安全评价标准为TCSEC和CC,我国的计算机系统安全标准为《计算机信息系统安全保护等级划分规则》,这些国内外标准都对安全审计功能作出了相应的规定[1]。根据国内外标准,本文认为数据库审计系统应达到以下目标:1.能准确记录对数据库访问行为的相关数据,并能随时查询数据库安全保护结果数据;2.在发现超越数据库规定权限的用户对数据库实施越权行为的时候,能实施准确及时的定位,并采取相关措施来处理;3.可以发现和排除数据库系统存在的安全漏洞;4.在发生了越过系统安全保护系统的行为时,可以记录并留存证据;5.当数据库系统受到破坏,可以进行损失评估和系统恢复。

二、研究现状

目前,国外非常有名的数据库安全审计产品主要有下面几种:Application Security Inc公司的入侵检测系统-AppRadar、Imperva公司的安全审计系统-SecureSphere和美国IBM公司的数据库安全审计系统-Guardium等系统[2]。上述系统的功能都很强大,包含内容覆盖面广。其中,AppRadar系统就可以针对不同种类的数据库系统而设计出不同的数据库入侵检测系统;Imperva公司在数据库安全审计行业内属于元老,在数据库安全审计领域尤其精通,其SecureSphere系统功能优于同类产品;该系统应用数据库防火墙的思路,能够在线处理数据库的安全威胁,但SecureSphere支持的数据库相关协议较少,同时对数据库的本地访问支持力度不足,因此限制了其发展规模。Guardium系统通过使用代理服务器,还可以通过在服务器上安装数据引擎,设置旁路监听,能够实时分析和判断用户的数据库操作行为是否合规,但该系统缺乏灵活度,只能够在同一时间支持一个审计策略,因而用户数量发展缓慢。上述国外这些数据库审计类系统产品都是按照国外公司的使用要求而设的,系统价格相当昂贵,对于绝大多数国内企业用户来说,实际使用价值并不高。

国内数据库审计系统中的佼佼者有绿盟的DAS、安恒信息的明御系列数据库安全审计系统、天融信的Top Audit-DB和深圳昂楷的AAS等。其中绿盟的DAS通过监听网络数据库的操作活动和数据包,智能识别SQL语句类别,可以实现对数据库操作记录进行事后的整理和合法性分析;安恒的明御系列系统主要是通过采集Web业务前端和访问后端数据库的协议,能达到数据的双向审计;天融信的TopAudit-DB则是使用了云审计技术,对数据库服务器旁路监测,以及支持数据库三层关联审计[3]。

当下数据库审计系统领域的研究热点主要有:1.如何实现数据的双向审计和实现对查询结果的分析总结;2.审计数据存储的安全性问题,避免审计记录被破坏、修改;3.实现审计数据的压缩,同时得到对安全管理实用的信息;4.如何避免超常SQL语句的漏审;5.满足客户网络拓扑结构需要的同时实现数据库安全审计;6.如何实现对数据库操作多语句进行有效的切割和分类,对长会话的实时记录和审计;7.如何才能实现对数据库海量数据的分析、记录、查询和审计;8.实时数据库安全审计警告策略的设计[4]。

三、系统设计

本文的数据库审计系统的设计思路是首先要在网络的主要交换机上通过监测的方式取得对数据库服务器的监测数据,然后再根据基本的网络协议对其进行全段解析,根据生成的数据库审计规则对数据解析结果进行审计策略的相关匹配,以此来完成审计工作。旁路监测方式灵活多变,可以不改变原网络的拓扑结构,该方式同时具有较强的系统容错性,这使得数据库审计系统不会因为自身发生问题时而影响到数据库的各项正常业务。

(一)系统总体架构设计

数据库审计系统总体设计结构图如图1所示。

本系统的主要模块的功能概要介绍如下:

1.数据采集和重组模块:该模块主要实现数据采集的硬件参数的设置,涵盖了主交换机的设置;在数据重组时,对采集的顺序错乱的数据包重组分类和整理为可靠数据包。

2.协议解析模块:该模块采用TCP/IP通信协议对采集和重组模块得到的可靠数据包进行解析工作。

图1 数据库审计系统总体设计结构图

3.规则生成模块:该模块用于汇总和统计解析出的数据,之后按相应的规则生成算法进行处理,为数据库审计系统自动生成审计规则。

4.策略匹配模块:该模块主要是将解析的数据和生成好的审计规则相匹配,并且记录匹配成功的数据,为报警工作提供支持。

(二)系统功能设计

1.数据采集和重组功能设计

系统将主机网卡设置为混杂模式,采集交换机镜像传输过来的数据,然后在链路层通过镜像拷贝,把镜像拷贝的数据存至数据的缓存,由其他的应用函数来使用。

网络数据包为分层封装,根据TCP/IP协议规定,IP(网络层)主要作用是将网络数据包传至目标Host,却没法保证其数据的可靠。TCP(传输层)的作用是将数据传至主机应用程序,同时还能保证数据的顺序不乱,保证了传输数据的可靠性[5]。由于数据采集模块得到的数据包是多来源地址、多目的地址和乱序的,为供给目标主机上层应用程序使用,需要对数据包进行数据重组工作。

重组模块先要对采集到的数据包中的数据进行提取,这些数据的内容有包括IP(网络层)层第一段报文中的源头主机的IP地址、目的地址和TCP(传输层)层第一段报文中的源头端口和目的端口。数据重组模块对提取的内容以一定的方式进行处理,完成对各个种类的数据包的识别和分类工作。在对数据进行分类处理后,可以从这些数据包中提取出网络层头部报文的长度、总的数据包长度、通信协议版本、确认号和标志位等主要内容,并通过获取到的内容来完成数据排序。本文比较了几种经常使用的数据查找方法,如二分查找法,顺序查找法、树表查找法和Hash Table查找法等方法,最后决定使用查找效率更高的Hash Table查找法来处理数据流到相应连接的映射。

2.协议解析功能设计

服务器登录的响应数据包的信息内容包括包首信息和负载信息。包首信息为Token字段(响应包的类型)、Status字段(Tds会话的最后一个包)、Length字段(Tds包的长度为353个字节)、Signednum字段(信道数为0)、Acketnum字段(只有一个包响应)和Windowsize字段(发送端接收的数据量上限)。负载信息为数据包除包首信息外的剩余字节内容,其中E3标志的含义为环境变量改变,AD标志的含义是服务器返回的信息,FD是服务器返回信息的结束标志[6]。

研究表明:系统要根据客户端主机传出的数据包的类型信息,首先要识别服务器端主机在信息反馈回来时用的通信协议是什么类型,然后再根据该通信协议的类型完成数据内容的分析处理,以此得到反馈回来的数据的确切信息内容。

3.规则自动生成设计

审计规则自动生成模块是指统计数据库访问人员对数据库的各种操作,并对这些操作实施一定的分析,分析完成后对规则进行生成。本文采用数理统计分析法来进行审计规则生成模块的设计。规则生成需要完成两部分内容设计,分别为数据统计分析方法设计和规则生成方法设计。

(1)数据统计分析方法

根据审计规则,系统中所需进行统计的项目包括源头地址、目标数据库和对数据库进行的操作这三项,其中,源头地址指的是被审计操作内容的源头IP,目标数据库为目标服务器IP和其数据库的端口组合,对数据库的操作则是从数据解析里获得的数据库操作行为。

统计分析内容主要为源IP对目的数据库操作的次数统计。由于目前网络均为高速模式,本系统设计包含了高速网络下数据内容的解析,因此要能设计出可以匹配高速查找数据的数据结构以便完成节点查找和数据更新任务。经对比研究,本系统采用哈希表法实现对来源主机IP地址的存查工作。目的数据库实际情况是要预先在系统中设置好各项参数,并且其数目较少。本文采用二叉平衡树方法完成对服务器数据库信息的存查工作。

(2)规则生成方法设计

审计规则生成实现方法的设计分三步进行,第一步为对计算结果分析和排序,第二步为对排序结果进行映射,最后一步是将映射后的所有结果进行遍历,分析得出审计规则,并将规则读取到数据库,为审计工作提供规则支撑。以下为各步骤的详细分析:

分析结果排序:指的是对任一来源IP主机对数据库的操作的分析结果排序。排序方法为插入排序,该方法把任一分析结果存至有指针的数据链表中,然后通过遍历链表结构找到相对应的位置,执行插入,根据权重的大小进行排序,最后获得排序完成的链表。

排序结果映射:指的是把上一步处理得到的链表依据其源头主机IP映射到相对应位置的节点里,然后根据权重排序比较该节点是否在可信任参数的赋值范围内,并分别取对应操作的数值。系统设置的高风险的数值为0,低风险数值为1,信任数值为2。

遍历映射结果:这一步指的是以顺序排序的方式对系统里的源头节点进行统一遍历,然后分别统计出每一个节点里面和所有操作对应的数值内容。把数值完全相同的对应操作合为一起,便能生成源主机IP与对应的数据库相关操作类型规则。生成完成后便把这些规则依次存入数据库中,并对解析模块发出重新读取指令,指令执行完成后便可把规则应用至审计系统。

4.匹配策略设计

合理的策略设置对于审计系统而言甚为重要。系统通过比较预先设置的策略与采集重组后的包内容来进行策略匹配。当系统发现与策略完全匹配的内容时先记录,同时发出报警信息。

数据库审计策略由多个审计规则组成,每个规则内容包含了规则的名称、规则的状态、风险等级、动作、规则相关描述和触发条件等。具体的审计策略包括:审计数据变更、审计数据库访问、审计违规访问行为、审计操作过程和审计恶意攻击等[6]。

(1)审计数据变更:真实记录所有人员对库里重要的表和关键的数据文件的增、删和改等行为并进行审计,防止内外部人员对重大数据的不法改动。

(2)审计数据库访问:记录人员对数据库中重要数据和表的访问情况,实时监控外部侵入和内部人员通过非法授权而获取系统敏感数据的情况并及时发出警报。

(3)审计违规访问行为:通过提前设置数据库访问合法规则,对处于合法规则外的访问行为采取重点记录和发出报警信息,以此审计和记录用户违规访问数据库行为。

(4)审计操作过程:对用户登录数据库后对库的操作行为进行全程记录,并且也对用户访问和操作审计系统的行为和信息进行记录,对用户不合规操作的行为进行追溯。

(5)审计蓄意攻击:对各种蓄意攻击数据库系统的行为进行记录和实时发出警报,比如利用系统和数据库的漏洞进行入侵、对主机非法扫描和ARP欺骗攻击等。

系统将每个数据库对象所使用的审计策略根据审计规则所设置的优先顺序施行不间断的匹配,直至匹配到某个规则或者都未匹配成功。当数据库对象审计策略和任一个规则相匹配时,则认定该策略成功匹配,匹配程序中止,进行下一步操作。

审计规则自动生成方法首先要对操作人员的行为进行建立模型,之后把访问人员对库执行的全部操作和该模型相互比较,并把比较后的内容匹配与否作为下一步审计的执行依据。自动方法功能全面,覆盖面广。人工方法很大程度上依靠于数据库专家在该领域的管理和运维的知识和经验对各项规则进行配置,有很强的针对性。本系统使用了自动生成方法和人工配置方法结合的办法,先把人工配置的规则的优先级设为高级别,再把自动生成的规则的优先级设为低级别,然后根据规则由高到低匹配的顺序原则,先匹配人工配置的规则,再匹配自动生成的规则,使得审计结果既有针对性,又有全面性。

四、系统实现方法探析

(一)数据采集和重组功能实现

为确保数据包在传输过程中不会漏掉,系统把网卡的模式修改为混合方式,然后使用Libpcap函数库提供的API接口实现对数据的抓包工作,之后对得到的数据包排序处理,可以实现数据流的重组。数据重组流程图如图2所示。

图2 数据重组流程图

由图2可见,数据重组的基础是数据采集。具体工作流程为:程序开始启动抓包程序,把复制捕获到的数据添加至NET_BUF中,并完成对TCP/IP数据的获取,通过对TCP/IP数据进行哈希算法运算后,判别哈希表中是否有着对应的数据连接TCP_N。若有,就按照TCP_N里的状态标志位数值来对这个TCP_N的连接状态进行更新,并把数据填充到TCP_PACK上,之后插入至等待队列里,接着判别新来数据是不是等待要获取数据,满足相等条件则流程结束;要是没有相应的连接,就判别TCP的状态是不是SYN,在是SYN的情况下就把这个连接节点建立起来,确定服务器IP,并加载相应规则,更新等待数据,否则不进行下一步处理,流程结束。调用的库函数说明如表1所示。

表1 调用库函数说明

(二)匹配策略功能实现

在对审计规则进行适配时,本文把相关的时间、内容和源头等规则的相互关系设置为与的关系,同时,把内容规则的优先顺序设置为最高级别,把时间规则的优先顺序设置成中级,把来源规则的优先顺序设置成最低级别。匹配流程则是按照审计的先后顺序由高至低来匹配的原则处理的,首先是对源头进行的匹配,其次是对时间的匹配,最后才是对内容进行的匹配。当匹配结果为三个都同时匹配成功后,系统中止匹配流程,并将匹配成功的数据存入数据库里,不然系统会继续执行匹配流程,执行至最后一个审计规则才会结束程序。如果都未成功,开始下一个数据包的匹配流程。

在对时间和来源规则匹配时,可以提前在匹配策略以及获取的数据包中把它们各自转换为数值,方便进行比较,匹配工作效率和速度可以得到提升。

本系统采用AC算法实现内容的规则匹配。AC算法中基本节点树、失败表和输出表的结构如下所示:

(三)审计规则生成的功能实现

本文的审计规则配置方法支持敏感字符、规则的有效期、关联性和时间规则分析等方式。审计规则对待审计信息还可以根据数量百分比方法来进行抽样选择。此外,本文审计规则配置方式分为自动和人工配置两种方式,自动方式覆盖范围广,并且禁止负责审计的人员进行修改;人工配置方式相对覆盖区域小,仅限于特定的行业和审计范围。

自动生成统计过程采用了Hash Table和B树索引这两种方法,这样能高效搜索到数据源头、目标数据库和所有对数据库的操作行为。统计程序把搜索到的内容快速地存储到对应的数据节点里面,以此得出统计结果。

该功能为用到的Hash Table和源节点的结构进行如下定义:

struct haxi_Tab {

source_Nod *em;

int num_nod;

int table_Len;

}

struct source_Nod {

int source_ip;

int source_po;

record users_All;

renode *sourcetoNod;

struct source_Nod*next;

}

本系统对记录库信息的B树目的节点信息的结构定义如下:

struct de_Nod {

int balance;

int de_ip;

int de_po;

record users_All;

renode *detoNod;

struct s_P{

struct de_Nod*lchild;

struct de_Nod *rchild;

}

s_P;

}

本系统对用来记录源主机IP地址对目标数据库操作的统计数的数据结构进行了如下定义:

struct reNod {

record rd;

int source_ip;

int de_ip;

int de_po;

}

struct x_Po {

struct reNod*sP;

struct reNod*dP}

x_Po;

}

数据统计过程可以简述为:

(1)对采集数据的来源主机IP、访问目标数据库ID和对目标库进行操作的类型进行分析和识别。

(2)系统通过哈希索引法快速查找到source_Nod源节点的位置,并对来源节点信息进行立即更新和统计。

(3)系统通过二叉平衡树索引法快速定位de_Nod的位置,并对目标节点的数据进行更新和统计。

(4)最终是对reNod的位置进行准确定位和及时更新,并且统计该节点相关数据,得到所有源头主机对数据库所做的各种操作的统计结果。

本系统定义规则排序的数据结构如下:

struct so_Nod {

int ra;

int source_ip;

int o_ps;

struct so_Nod*next;

}

系统设计出合理排序的数据结构,可实现对库操作的统计的信息分别进行数值计算,再将计算得到的结果存储至so_Nod节点中就可以实现对计算结果的排序,再按照生成原则就能够实现生成数据库审计规则。

五、结语

传统数据库的安全保障方法有着诸多的不足之处,本文在研究了国内外数据库安全审计行业现状后,设计了一种数据库审计系统框架,并对其主要功能模块的设计和功能实现路径进行了较为深入的探析,为系统的功能实现奠定了理论基础。

猜你喜欢
数据包排序规则
二维隐蔽时间信道构建的研究*
撑竿跳规则的制定
作者简介
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
恐怖排序
节日排序
C#串口高效可靠的接收方案设计
奥斯卡的规则变了!
让规则不规则
TPP反腐败规则对我国的启示