数据库入侵检测技术 曹元大主编,人民邮电出版社,2007年
数据库入侵检测技术 数据库安全威胁 数据库安全机制 数据库入侵检测技术
数据库安全威胁 口令入侵 特权提升 漏洞入侵 SQL注入攻击 窃取备份
数据库安全威胁 口令入侵 数据库系统一般都会为用户维护一个口令文档,并且口令文档是加密的。黑客一般采用一种可以绕开或屏蔽口令保护的程序来进行攻击。 如果攻击者能够获得数据库系统的口令文档,那么就可以使用某些软件或者电子词典来破解口令文档从而获得口令。 很多数据库系统存在默认口令,这些增加了系统被口令入侵的风险 数据库系统一般都会为用户维护一个口令文档,并且口令文档是加密的。
数据库安全威胁 特权提升 内部人员攻击可以导致恶意的用户占有超过其应该具有的系统特权。 外部的攻击者可通过破坏操作系统来获得更高级别的特权。 特权提升通常与管理员错误的配置有关,如一个用户被误授予超过其实际需要的访问权限。 拥有一定访问权限的用户可以从一个应用程序跳转到数据库。
数据库安全威胁 漏洞入侵 漏洞很难避免 当前运行的多数Oracle数据库中,有至少10到20个已知的漏洞,黑客们可以用这些漏洞攻击进入数据库。 server.mapPath(".mdb") 用http://www.google.com搜索server.mapPath(".mdb"),可以得到很多采用access作为数据库的网站的数据库文件,如果没有采用md5加密的话,连管理员密码在内的所有信息都会暴露。 其实解决这个问题的方法也不复杂,最有效的方法之一就是隐藏这段语句,利用调用其他文件的方法来实现调用数据库。 首先需要建立一个内容为〈% connstr=“DBQ=“+server.mappath(“data/data.mdb”)+”;DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};” set conn=server.createobject(“ADODB.CONNECTION”) conn.open connstr %>的ASP文件。比如把这个文件命名为dbconn.asp。这样只要在需要调用数据库的ASP文件中加入!--#include file=“dbconn.asp”-->就可以实现数据库的调用。如此,便实现了调用语段的隐藏,解决了被他人利用搜索引擎得到网站数据库的问题。
数据库安全威胁 SQL注入攻击 通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意SQL命令的目的。 引起SQL注入攻击的原因?1)网页后台有数据库操作;2)程序没有细致地过滤用户输入的数据,致使非法数据侵入系统。
数据库安全威胁 窃取备份 备份与恢复是数据库系统重要的安全机制,可有效保护数据的安全,防治数据丢失、损毁。 如果数据库系统的备份丢失,被黑客获取,并且这些数据没有进行加密,那么黑客就可以得到数据库系统数据,实施破坏。
数据库安全机制 用户标识和鉴别 访问控制 数据库加密 数据库审计 备份与恢复
数据库安全机制 用户标识和鉴别 通行字认证 数字证书认证 智能卡认证 个人特征识别
数据库安全机制 访问控制 访问控制是用户进入系统后根据用户的身份对其访问资源的行为加以限制,最常用的是访问权限和资源属性限制。 传统访问控制可以分为自主访问控制和强制访问控制。 基于角色的访问控制:权限被授予角色,而管理员通过指定用户为特定角色来为用户授权。
数据库安全机制 数据库加密 虽然DBMS在操作系统的基础上增加了不少安全措施,例如基于权限的访问控制等,但操作系统和DBMS对数据库文件本身仍然缺乏有效的保护措施,有经验的黑客会“绕道而行”,直接利用操作系统工具窃取或篡改数据库文件内容。这种隐患被称为通向DBMS的“隐秘通道”,它所带来的危害一般数据库用户难以觉察。分析和堵塞“隐秘通道”被认为是B2级的安全技术措施。对数据库中的敏感数据进行加密处理,是堵塞这一“隐秘通道”的有效手段。 数据库在操作系统中是以文件的形式管理,所以攻击者可以直接利用操作系统的漏洞窃取数据库文件,或者篡改数据库文件内容。
数据库安全机制 一般来说,一个良好的数据库加密系统应该满足以下基本要求 足够的加密强度,保证长时间且大量数据不被破译。 加密后的数据库存储量没有明显的增加。 加解密速度足够快,对数据库的正常服务影响尽量小。 加解密对数据库的合法用户操作(如数据的增加、删除和更改等)是透明的。 灵活的密钥管理机制,加解密密钥存储安全,使用方便可靠。 一般来说,一个良好的数据库加密系统应该满足以下基本要求: 1.支持各种粒度加密 2.良好的密钥管理机制 3.合理处理数据 4.不影响合法用户的操作 13 13
数据库安全机制 数据库加密方式 1.支持各种粒度加密 2.良好的密钥管理机制 3.合理处理数据 4.不影响合法用户的操作 14 一般来说,一个良好的数据库加密系统应该满足以下基本要求: 1.支持各种粒度加密 2.良好的密钥管理机制 3.合理处理数据 4.不影响合法用户的操作 14 14
数据库安全机制 数据库加密系统分成两个功能独立的主要部件:一个是加密字典及其管理程序,另一个是数据库加/解密引擎 1.支持各种粒度加密 一般来说,一个良好的数据库加密系统应该满足以下基本要求: 1.支持各种粒度加密 2.良好的密钥管理机制 3.合理处理数据 4.不影响合法用户的操作 15 15
数据库安全机制 数据库加密的方法及加密粒度 数据库加密如果采用序列密码,那么同步将成为一个大问题。当需要对大片密文中的极小部分解密时,如何同步密文与密钥呢?所以数据库加密一般采用分组密码。 对于分组密码中常用的ECB和CBC两种模式,又该如何确定呢?考虑到数据库中会有大量相同的数据,比如性别、职务、年龄等信息,我们应该采用CBC模式。 对于在DBMS上实现的加密,加密的粒度可以细分为基于表、记录、字段或数据元素。 16 16
数据库安全机制 数据库审计 数据库审计是指监视和记录用户对数据库所施加的各种操作的机制。 审计功能自动记录用户对数据库的所有操作,并且存入审计日志。 事后利用这些信息重现导致数据库现有状况的一系列事件,提供分析攻击者线索的依据。 SQL Server的profiler工具和Oracle数据库的Audit命令等,都能够对数据库服务器的性能和活动进行全面的审计跟踪。 按照数据库安全评估标准(《Trusted Database Managenent system Interpretation of The TCSEC》,简称TDI)的要求,当前流行的一些大型数据 库都提供了强有力的审计工具,如SQL SERVER的profiler工具和ORCLE数据 库的Audit命令等,都能够对数据库服务器的性能和活动进行全面的审计跟踪b1
数据库安全机制 数据库审计 语句审计:监视一个或者多个特定用户或者所有用户提交的SQL语句。 特权审计:监视一个或者多个特定用户使用的系统特权。。 模式对象审计:监视一个模式中在一个或者多个对象上发生的行为。 资源审计:监视分配给每个用户的系统资源。
数据库安全机制 数据库备份与恢复 数据库系统的主要功能是维护和管理数据,网络上的各种安全威胁往往会导致数据失效,保护数据最简单有效的方法是数据备份。 现在的数据库系统都带有数据备份和恢复的功能,这对系统的安全性与可靠性起着重要作用,也对系统的运行效率有着重大影响。
数据库安全机制 数据库备份 冷备份:冷备份是在没有最终用户访问它的情况下关闭数据库,并将其备份。 热备份:热备份是在数据库正在被写入的数据更新时进行。热备份严重依赖日志文件。 逻辑备份:逻辑备份使用软件技术从数据库提取数据并将结果写入一个输出文件。 20 20
数据库安全机制 数据库恢复 基于备份的恢复:当数据库失效时,可取最近一次的数据库备份来恢复数据库。 基于运行时日志的恢复:当系统突然失效而导致事务中断时,可重新装入数据库的副本,把数据库恢复到上一次备份时的状态。然后系统自动正向扫描日志文件,将故障发生前所有提交的事务放到重做队列,将未提交的事务放到撤销队列执行,这样可把数据库恢复到故障前某一时刻的数据一致性状态。 基于镜像数据库的恢复:当主数据库出现故障时,可由镜像磁盘继续提供使用,同时数据库管理自动利用镜像磁盘数据进行数据库恢复。 21 21
数据库入侵检测技术 引入数据库入侵检测技术的必要性 由于数据库具有自己的结构和语义,数据库入侵检测具有比主机和网络入侵检测更为复杂的内容和难点。 对数据库来说,仅仅依靠工作在文件和系统命令级的底层网络和操作系统入侵检测系统无法保证检测的效率和精度,而数据库入侵检测能够在更细的粒度上检测用户的行为。 数据库入侵检测系统的目的是尽早检测到数据库入侵,使入侵的损失最小化。 数据库入侵检测系统工作在应用层,是对传统数据库安全机制以及网络和操作系统入侵检测的有益补充,而不是要取代它们。 22 22
数据库入侵检测技术 从数据库入侵检测技术的检测要素划分,目前针对数据库的入侵检测技术可以分为两种主要研究方法:基于用户访问行为的数据库入侵检测方法和基于SQL语句的数据库入侵检测方法 基于用户访问行为的数据库入侵检测方法主要有两种:一是采用关联规则挖据,发现用户行为的关系模式;二是用聚类方法,建立用户的行为轮廓。 基于SQL语句的数据库入侵检测方法:针对SQL语句结构和执行顺序进行检测是一种直观可行的方法。 23 23
数据库入侵检测技术 研究现状 Ammann等人提出信息战条件下可以采用如下方法来检测数据库的入侵攻击行为:引入伪造数;数据分类;利用完整性约束;终端应用的完整性检查。 24 24
数据库入侵检测技术 研究现状 Hu等人利用数据挖掘方法来建立数据库系统中数据对象之间的依赖关系,然后通过分类的方法把不符合依赖关系的行为看作数据库中的入侵攻击行为。 25 25
数据库入侵检测技术 研究现状 Lee等人提出利用数据库中每个数据项的比较固定的更新频率作为检测的主要特征。由于入侵者不知道这些数据项的更新频率,如果在不恰当的时间更新某个数据项的话,很容易被检测出来。 26 26
数据库入侵检测技术 研究现状 Shun等人提出了web数据库的入侵检测方法。通过综合分析web服务器日志和数据库日志进行预报警,然后再对预报警进行检查和确认来提高入侵检测的准确率。 27 27
数据库入侵检测技术 研究现状 2001年UMBC大学的的AAID项目采用多层次的入侵检测模型,将事务层入侵检测算法实现成软件插件的形式,嵌入到已有的入侵检测系统中去,增强其在应用层的入侵检测能力。 28 28
数据库入侵检测技术 研究现状 DEMIDS使用用户轮廓检测数据库用户的滥用行为,使用频繁项来表示用户的正常行为。用户轮廓是在关系数据库中用户和角色的典型行为,频繁项是用户参考的属性及其值。在挖掘用户的频繁项算法中,使用了距离的概念来测量属性间的紧密度,距离的度量使用了用户查询语句中的主键和外键的函数依赖关系,融入了的数据结构特性和用户行为的语义特性,可以精确地描述用户对数据库进行操作的行为模式。 但该机制也存在明显的缺陷: (1)只考虑了属性结构的稳定性,未考虑查询结构的稳定性; (2)只在内容上分析了用户对数据库访问,没有在时间上给予分析; (3)审计粒度过细,会严重降低的性能。 29 29
数据库入侵检测技术 研究现状 Jose Fonseca等人通过分析SQL命令和数据库事务来检测基于SQL的攻击行为。该方法从两个层次实施检测,一个是SQL命令级,通过解析SQL命令对SQL语句结构进行检测;另一个是数据库事务级,引入有向图来描绘正常的数据库事务执行模式,检测用户提交的事务是否正常。 针对正常SQL语句与入侵语句的不同,将SQL语句转化成一组标记序列,然后传递给由backpropagationthrough time(BPTT)算法训练的递归神经网络recurrent neural network(RNN),由神经网络完成基于SQL语句的训练和检测工作。 30 30
数据库入侵检测技术 研究现状 Adrian Spalka等人基于关系数据库中的数据有统一的结构,提出了针对关系数据库的一种入侵检测方法。一方面,采用一种基于参考值(reference values)的方法,通过监视属性参考值被操作前后的变化来发现入侵;另一方面,引入△-relations的概念记录关系的所有变化,通过比较实现入侵检测。这些方法都需要耗费很大的存储空间,且不能很好的检测诸如SQL注入之类的攻击方式。 31 31
数据库入侵检测技术 SQL注入检测可以分为在攻击前检查是否有SQL注入漏洞和运行中检查是否遭到了SQL注入两种情况。 一般要查看系统的日志文件来判断。 32 32
数据库入侵检测技术 基于关键字匹配的SQL注入攻击检测 从SQL语句语法结构出发,对SQL注入语句进行分析,并通过关键字对每种语法结构进行识别,提取出每种句式对应的关键字; 整理的关键字列表 33 33
数据库入侵检测技术 基于关键字匹配的SQL注入攻击检测 1,3,9 号关键字出现时可判定存在SQL注入行为。1号关键字表示SQL的字符串终结符,会产生一条包含网站服务器所使用数据库信息的错误;3号关键字表示SQL的注释符,可以注释掉后面的SQL语句,使得攻击者绕过身份验证获取数据库操作权限;9号关键字表示一个SQL语句的结束和另一个SQL语句的开始,会产生包含数据库信息的错误。这三个关键字不会出现在正常URL链接里,因此可以判定出现这三个关键字的URL来源方一定存在SQL注入行为。 其他关键字伴随1,3,9号关键字出现,且出现在“?”之后,则可判定存在其他关键字导致的SQL注入URL 链接中“?”后面开始是数据,涉及到数据库操作,因此要格外防范;其他关键字伴随1,3,9号关键字出现时,会被系统记录在案,作为后面入侵数据包危险级别分级依据;同时这些记录也是系统管理员安全分析的重要参考数据。 34 34
数据库入侵检测技术 基于关键词匹配的SQL注入攻击检测 使用网络数据包捕获模块捕获数据包; 在 TCP 包解析的过程中,过滤 HTTP 协议的 POST 包和 GET 包; 在这样的数据包字段中“POST”或“GET”字段和“HTP/1.1”字段之间的内容即为 URL 链接,获取该链接; 采取关键字匹配的方法来检测该URL连接是否包含SQL注入信息。如包含,则表示该数据包存在 SQL 注入; 对 SQL 注入侵包列表中的数据包信息进行进一步的统计和分析形成 SQL注入统计和分析表,统计是基于统一 IP 对的(即源 IP 和目的 IP 相同),在表中记录了入侵 IP 对的入侵次数,包含各个关键字的数据包的出现的个数,特别地,根据关键字造成的危害程度,设置了入侵级别 。 35 35
小结 数据库安全威胁:口令入侵、特权提升、漏洞入侵、SQL注入攻击、窃取备份 数据库安全机制:用户标识和鉴别、访问控制、数据库加密、数据库审计、备份与恢复 数据库入侵检测的研究现状及基于关键字的SQL注入攻击检测