数据库防火墙技术研究
作者:李月飞 发布时间:2016-06-29

数据库防火墙是继防火墙、下一代防火墙等网关类安全产品之后,专门针对于数据存储的核心介质——数据库的一款安全防护产品。

关于数据库安全可以分为两个层面,一方面是来自于外部的威胁,比如说来自黑客的攻击、非法访问等,第三方运维人员的不当操作和非法入侵;另外一部分是来自于内部的威胁。

数据库防火墙部署于数据库之前。必须通过该系统才能对数据库进行访问或管理。数据库防火墙除提供网络防火墙的基本隔离功能以外,还提供独立的连接授 权管理、访问授权管理、攻击保护、连接监控、审计等功能。部署该产品以达到牢牢控制数据库入口,提高数据应用安全性的目的。目前,国内首款专业数据库防火 墙产品是安华金和数据库防火墙DBFirwall。

  1. 数据库防火墙的产品价值

1、 屏蔽直接访问数据库的通道

数据库防火墙部署介于数据库服务器和应用服务器之间,屏蔽直接访问的通道,防止数据库隐通道对数据库的攻击。

2、 二次认证

应用程序对数据库的访问,必须经过数据库防火墙和数据库自身两层身份认证。

3、 攻击保护

实时检测用户对数据库进行的SQL注入和缓冲区溢出攻击。并报警或者阻止攻击行为,同时详细的审计下攻击操作发生的时间、来源IP、登录数据库的用户名、攻击代码等详细信息。

4、 安全审计

系统能够审计对数据库服务器的访问情况。包括用户名、程序名、IP地址、请求的数据库、连接建立的时间、连接断开的时间、通信量大小、执行结果等等信息。并提供灵活的回放日志查询分析功能,并可以生存报表。

5、 防止外部黑客攻击威胁

黑客利用Web应用漏洞,进行SQL注入;或以Web应用服务器为跳板,利用数据库自身漏洞攻击和侵入。通过限定更新和删除影响行、限定无Where的更新和删除操作、限定drop、truncate等高危操作避免大规模损失。

  1. 数据库防火墙防护能力

数据库防火墙产品具有主动防护能力。针对对数据库的风险行为和违规操作做相应的防护与告警。分析当前各类数据库所受威胁和防火墙的应对防护能力包括如下几项功能:

防御数据库漏洞与SQL注入

威胁:外部黑客攻击,黑客利用Web应用漏洞,进行SQL注入;或以Web应用服务器为跳板,利用数据库自身漏洞攻击和侵入。

防护:通过虚拟补丁技术捕获和阻断漏洞攻击行为,通过SQL注入特征库捕获和阻断SQL注入行为。

防止内部高危操作

威胁:系统维护人员、外包人员、开发人员等,拥有直接访问数据库的权限,有意无意的高危操作对数据造成破坏。

防护:通过限定更新和删除影响行、限定无Where的更新和删除操作、限定drop、truncate等高危操作避免大规模损失。

防止敏感数据泄漏

威胁:黑客、开发人员可以通过应用批量下载敏感数据,内部维护人员远程或本地批量导出敏感数据。

防护:限定数据查询和下载数量、限定敏感数据访问的用户、地点和时间。

审计追踪非法行为

威胁:业务人员在利益诱惑下,通过业务系统提供的功能完成对敏感信息的访问,进行信息的售卖和数据篡改。

防护:提供对所有数据访问行为的记录,对风险行为进行SysLog、邮件、短信等方式的告警,提供事后追踪分析工具。

数据库通讯协议解析

各类数据库防火墙产品,对于数据库风险行为和违规操作进行安全防护的基础。都来自于数据库通讯协议的解析。通讯协议解析的越精准,数据库的防护工作 越周密安全。换言之,数据库通讯协议解析的强弱是评价一款数据库防火墙产品优略的关键。下面就数据库通讯协议解析原理做一下相关介绍。

从数据通讯交互来讲,数据是以包(Packet)的形式在网络中进行传输的。一个包通常由2大部分组成:控制部分(metadata)和数据部分。 从包的结构中,可以得到数据的“源地址(Source Address)”和“目标地址(Destination Address)”,“源端口(Source Port)”和“目标端口(Destination Port)”。防火墙正式基于这些信息对数据库进行防护。当一个包(如来自数据库客户端)通过防火墙时,防火墙会基于一定的规则对该包进行检查,如检查包 的发送者是不是合法的IP(如合法的数据库客户端),包的目标是不是特定的数据库服务器?如果检查通过,包会被允许穿过防火墙。如果检查未通过,则该包会 被丢弃(Drop)(发送者什么都不知道,犹如石沉大海),或者会给发送者返回(反馈)错误信息(reject)。我们把前面描述的这种防御方式叫“包过 滤”。“包过滤”可工作在OSI模型(见下图)的最底下3层或者4层。

 

“包过滤”又可分为“有连接(stateful)”和“无连接(stateless)”两种。“有连接(stateful)”是指防火墙会记录通过 的连接状态信息,维护相应的连接状态数据库,基于同一连接的数据包可免于重复检查,这样将提高数据包传输效率, “无连接(stateless)”是对每 一个数据包进行检查,通常意义上会导致网络响应缓慢,这两种方式各有优缺点。

安华金和数据库防火墙(DBFirewall)实现了对主流数据库类型通讯协议的“双向、全协议解析”,重要的解析内容包括:SQL语句、参数化语句句柄、SQL参数、应答结果信息、结果集结构信息、结果集数据等。  

SQL语句的解析和表达是实现对SQL语句攻击行为控制的关键;SQL注入的检查、应用sql语句的放行,都依赖于sql语句的解析和特征捕获。传 统的技术,往往采用正则表达式的方式,但该方式存在巨大的技术缺陷,一是正则匹配过程性能地下,二是对于复杂的参数情况容易产生匹配错误,三是通过语句的 变体容易欺骗。

DBFirewall为了有效扑获SQL语句的特征,以及为了快速地对SQL语句进行策略判定,以实现数据库防火墙的高效处理,提供了专利性的SQL语法特征技术,实现了对SQL语句的重写。

SQL重写是在不改变原SQL语句的语义的情况下,DBFirewall对捕捉到的SQL语句进行重写,替换原语句中的参数值。

SQL重写是一个抽象的过程,便于管理和操作。SQL重写包括以下几个方面:

▪ 除了单双引号内的内容,小写字母全部变为大写字母;

▪ 准确区分正负号和加减号;

▪ 将SQL语句中的数值、单引号引起的字符串各自重写为统一的占位符;

▪ 将注释、换行重写为空格,将连续的空格合并为1个,去掉运算符两端不影响语义的空格

以如下SQL语句为例:

Select +0.25 * money,sum(id) From “testdb”.accounts

Where id = ' G1792 '  or name !=‘’/*this message come from Lisa*/

XSeure-DBF在SQL重写的基础上,根据SQL语法,对SQL进行了多级分类。SQL多级分类是将具有相同操作行为的不同语句合并为一类,为SQL信息的查看和策略的定制提供了便利,且SQL分类编码操作后,易于后续的计算、操作和存储。

SQL分类主要分为三级,分类的方向由细到粗,即二级分类是在一级分类的基础上进行的,三级分类是在二级的基础上进行的。

一级分类

基于目前的SQL重写,即替换所有的可变“参数”数据为固定的“参数(例如,#)”,并且将所有谓词全部大写化(格式化为大写字母)等。也就是说,一级分类的输出是经过“重写”后的SQL语句。

二级分类

在一级分类的基础上,对所有的谓词、函数、比较运算符进行编码后,生成摘要的字符串编码,该编码就是SQL的二级分类码。

三级分类

在二级分类的基础上,对所有的谓词比较运算符进行编码后,生成的摘要字符串编码,该编码就是SQL三级分类码。

根据SQL分类的原则,假如有如下SQL语句:

1:SELECT salary*1.5 FROM employees WHERE job_id ='PU_CLERK';

2:SELECT salary*2 FROM employees WHERE job_id='SA_MAN';

3:SELECT employee_id FROM department WHERE department_name = 'HR';

4:SELECT department_id FROM employees WHERE salary <5000;

5:SELECT sum(salary) FROM employees WHERE job_id ='PU_CLERK';

6:SELECT max(salary) FROM employees WHERE job_id='PU_CLERK';

那么按照分类码,DBFirewall看到的分析SQL,由三级到一级如下呈现:

  1.   SELECT  FROM  WHERE  =

    1.     SELECT FROM WHERE =

      1.       SELECT SALARY*0 FROM EMPLOYEES WHERE JOB_ID='#'

      2.       SELECT EMPLOYEE_ID FROM DEPARTMENT WHERE 
                             DEPARTMENT_NAME='#'

    2.     SELECT  SUM FROM WHERE =

      1. SELECT SUM(SALARY) FROM EMPLOYEES WHERE JOB_ID='#‘

    3.     SELECT  MIN FROM WHERE =

      1.       SELECT MIN(SALARY) FROM EMPLOYEES WHERE JOB_ID='#‘

  2.     SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE SALARY<0

    1.       SELECT  MIN FROM WHERE <

    2.   SELECT DEPARTMENT_ID FROM EMPLOYEES WHERE SALARY<0

    3.   SQL语句格式化重写后的结果为:

    4.   SELECT 0*MONEY,SUM(ID) FROM “testdb”.ACCOUNTS WHERE ID=’#’ OR NAME!=’’

    5.   正式基于精准的数据库通讯协议解析,数据库防火墙才能对数据库进行周密的防护。

  1. 黑白名单机制

数据库防火墙进行数据库防护的过程中,除了利用数据通讯协议解析的信息设置相应的风险拦截和违规sql操作预定义策略以外,常用的防护方式也包括通 过学习模式以及SQL语法分析构建动态模型,形成SQL白名单和SQL黑名单,对符合SQL白名单语句放行,对符合SQL黑名单特征语句阻断。

安华金和数据库防火墙除了通过制定黑白名单和相应的策略规则之外,配合利用禁止,许可以及禁止+许可的混合模式规则对数据库进行策略设置,从而对数据库进行防护。

 

“禁止规则”负责定义系统需要阻止的危险数据库访问行为,所有被“禁止规则”命中的行为将被阻断,其余的行为将被放行。

“许可规则”负责定义应用系统的访问行为和维护工作的访问行为,通过“许可规则”使这些行为在被“禁止规则”命中前被放行。

“优先禁止规则”负责定义高危的数据库访问行为,这些策略要先于“许可规则”被判断,命中则阻断。  

数据库漏洞防护

在数据库的防护过程中,除了对数据库登录限定,恶意sql操作拦截,以及批量数据删改进行安全防护以外。数据库自身存在的一些漏洞缺陷所引发的安全隐患,也在数据库防火墙的防护范围之内。对于这些风险行为进行周密而严谨的防护也是数据库防火墙价值体现的重点项。 
 之前在CVE上公开了2000多个数据库安全漏洞,这些漏洞给入侵者敞开了大门。数据库厂商会定期推出数据库漏洞补丁。数据库补丁虽然能在一定程度上弥补数据库漏洞,降低数据库遭受恶意攻击的风险度。但是数据库补丁也存在许多适用性问题。主要包括以下三点:

▪ 漏洞补丁针对性高,修补范围存在局限性;包发布周期过长,存在数据泄露真空期

▪ 补丁修复过程中存在兼容性隐患

▪ 数据库补丁漏洞修补周期长,风险大,消耗大量资源

区别于oracle防火墙对虚拟补丁技术的空白,安华金和数据库防火墙功能点上都添加了数据库漏洞防护技术,以完善产品,力求达到对数据库的全面防护。

虚拟补丁技术可以在无需修补DBMS内核的情况下保护数据库。它在数据库外创建了一个安全层,从而不用打数据库厂商的补丁,也不需要停止服务和回归 测试。通过监控所有数据库活动,并用监控数据与保护规则相比较,从而发现攻击企图。当比较结果与规则匹配时,就发出一个警报,并在指定的时间内终止可疑会 话、操作程序或隔离用户,直到这个可疑的活动被审查通过。

安华金和数据库防火墙的漏洞防护技术——虚拟补丁通过控制受影响的应用程序的输入或输出,来改变或消除漏洞。是在数据库的前端进行控制或告警的一种技术。它是一种透明的对数据库进行保护的方法,不需要重启数据库或进行大范围应用系统的回归测试。

本文针对当前数据安全领域的现状与发展趋势向大家做了一些简要的论述,从数据库防火墙的崛起,从国际到国内市场,到Oracle,McAfee 再到安华金和,有一点我们可以达成共识,数据库安全在信息安全中的整体价值地位逐步凸显。数据库防火墙作为针对数据库的安全的专项产品,作为维护数据库的 堡垒屏障已经起到了不可或缺的作用。