APP下载

基于反向代理的数据库防火墙研究与应用

2021-05-06王忠花张文飞朱先清

青海电力 2021年1期
关键词:客户机安全策略防火墙

王忠花,张文飞,朱先清,李 晖

(国网青海省电力公司信息通信公司,青海 西宁 810008)

0 研究背景

随着互联网思维的普及,企业越来越多的业务从以前的“face to face”面对面服务转变为“on line”在线化服务,越来越多的敏感数据保存在数据库中,在线信息化系统给客户提供了快捷便利的业务办理方式,大大提高了业务的办理效率,同时巨大的业务量也给数据的安全性带来了严峻的考验,近几年数据安全事件时有发生,并且涉及到了各个行业。自Codd在上世纪七十年代提出关系型数据模型,后来的学者们已经陆续提出了几种数据库安全机制,例如安全语义、访问控制以及数据加密等〔1〕。数据库几乎是所有数据泄露和网络攻击的源头,如非法访问数据库、删除或修改数据库数据及缺乏审计等。因此,实现数据的完整性、保密性和有效性,对数据库系统安全进行有效保护是行业的主要研究工作〔2〕。

数据库由于自身复杂性以及服务范围不断扩大,致使数据库运维安全成为一个重要课题〔3〕。数据库管理员在数据库运维中主要面临以下的问题和难点:

1)数据库实例数量多,运维涉及广泛的技术,需要专业性很强的运营和维护。现有运营支撑人员数量不足、素质各异,难免出现非法或者过失操作,因工作失误导致的数据库关键数据被误删除时有发生,且内部人员的攻击难以进行防范〔4〕,这些现实因素给日常运维带来极大的挑战。

2)现有数据库防护体系只能记录用户操作日志,无法实时拦截危险操作,使安全防护成为事后追责的“记录仪”,在高危操作发生时无法有效阻止,即使完整记录了全部的危险操作过程,仍然可能会给数据库带来无法挽回的损失。

3)数据库实例较多,每个业务系统对数据安全的诉求不同,但现有的安全防护体系只能提供一刀切的防护策略,无法提供个性化的安全策略,给运维工作带来较大的负担。

本论文围绕上述问题,在综合分析数据库相关的安全机制、安全防护理论、安全检测技术基础上,针对性地研究基于反向代理的数据库防火墙实现技术。

1 数据库防火墙架构

数据库防火墙本质上是一种反向代理服务器,客户机连接到数据库防火墙,像正常连接到真实数据库一样发送查询,数据库防火墙分析待转发的SQL查询,如果认为是合法的SQL查询,则将SQL查询请求转发至真实的数据库服务器;反之,如果认为是非法的SQL查询,则拒绝转发并构造一个拒绝包发送给客户机。数据库防火墙采用SQL语句分析,在预先确定的安全策略基础上阻止SQL的非法操作,从而能够对非法SQL操作进行主动防御和即时审查。

如图1所示,数据库防火墙从技术架构上划分为反向代理、Oracle TNS包或MySQL数据连接包解析、SQL语法分析、策略匹配等技术。下文将从这几个方面进行深入研究,并开发实现数据库防火墙系统。因MySQL〔5〕为开源软件,其协议解析相关的内容前人已做出过详细研究〔6〕,本文不再赘述。协议解析方面着重介绍TNS协议解析的内容。

2 关键技术研究

数据库防火墙系统涉及了反向代理、TNS协议解析、SQL语法树等技术,实现了个性化的防护。安全策略共涉及19种对象类型、8种操作类型,同时支持Oracle数据库和MySQL数据库。

2.1 反向代理技术

普通代理服务器仅适用于代表内联网上的互联网连接请求,客户机的代理服务器必须指定,客户机将原本要发到数据库服务器的请求发到代理服务器上,再由其进行转发。

如图2所示,当客户机需要对数据库服务器访问时,与目标数据库没有直接连接,而是连接反向代理服务器,此时对于客户机而言,反向代理服务器可以被看做是数据库服务器;而反向代理服务器接收到客户机请求连接后,会去连接真实的数据库服务器,对于数据库服务器而言,反向代理服务器可以被看做是客户机,响应数据也会按照同样的路径返回到客户机。反向代理服务器会将客户机连接和数据库服务器连接进行配对锁定,并与其他连接线程隔离,确保转发的准确性。

反向代理服务器接收到客户机请求后,并不是第一时间发送至真实数据库服务器,而是进行一系列的数据库网络协议解析、SQL语法分析、策略匹配,并根据匹配结果来决定是否转发至数据库服务器,如图3所示。若判断请求包含危险操作,则构造一个符合数据库规范的错误响应包,发送至客户机,实现危险操作的实时阻断。

采用基于对端驱动式的反向代理技术,接收并转发客户请求,对数据库连接进行安全隔离,通过数据库网络协议解析技术提取SQL文本、来访IP、用户名、客户端、数据库名,对生产环境的配置、网络、访问性能等影响较小,运维习惯也无须改变。

另外,在Oracle RAC环境下,如果反向代理后端数据库是SCAN IP会导致代理失效,因为Oracle的SCAN IP本身就是一个特殊的反向代理,其接收到客户机请求后会将连接重新定向至VIP;在这种场景下需要配置VIP解决代理失效问题。

2.2 解析TNS协议

Oracle数据库客户端与服务端通过TNS协议进行通信。TNS(Transport Network Substrate)是一个基本网络协议,以Net8系统为基础〔7〕,属于OSI 7层模型中的一部分。在反向代理接收到客户机请求后,需要根据TNS协议,提取出其中的重要信息,然后才能进行SQL语法分析和策略匹配。仅针对数据库防火墙软件来说,TNS协议分析主要内容集中在4个方面:一是用户登录验证的过程和详细信息,二是客户机发送的内容和指令的格式,三是客户机发送的SQL文本,四是服务端返回的报文信息。

TNS通讯协议是适配平台和硬件架构的,不同的客户端服务端平台架构对应不同的协议族,我们通过wireshark工具来辅助分析TNS通讯协议。

2.2.1 TNS包主要类型分析

Oracle数据库客户端启动连接,服务端返回包括接受、拒绝、重新发送、重定向连接4种状态〔8〕。当建立客户端和Oracle的连接时,客户端首先发送一个连接包,TNS包类型为0x01,不同版本的TNS协议中,其TNS连接包结构有轻微差异。重定向用户后,通过重定向端口向服务器发送连接,客户端发送连接包,如果与服务器的连接成功,服务器返回接受包,否则返回拒绝包〔9〕,接受包的TNS类型为0x02。服务端拒绝客户端登陆所发送的拒绝包,TNS类型为0x04,重定向包的TNS类型为0x05,重定向数据可以是一个新的数据库服务器连接地址。

TNS数据包负责传输所有客户端操作和数据库反馈信息。每个操作都由一个或多个命令组成,即一个或多个数据包。本文主要分析命令结构与Oracle操作相关的命令组成序列。许多结构及其特定字节不会影响对基本Oracle命令的分析〔10〕,因此可将分析简化。TNS主要通过数据包中的命令0x0303和0x035e类型传输数据,用于普通SQL查询语句。返回结果以两个命令0x06和0x08进行反馈。具体数据包信息参考表1:

表1 TNS数据包分类表

续表1

2.2.2 SQL文本提取

把SQL文本从数据报文中提取出来的主要目的是进行TNS协议分析,SQL语句没有解码工作,因为其已明确用ASCII码储存在数据包中。主要的任务是确定从TNS的包头距离SQL语句的第一个字母的偏移量,所以重点在于可以很容易地提取SQL语句。但是,TNS随后提供的数据格式并不是固定的,而是可变长度,有两个特点:

1)如果以0xFE为第一个字节,那么0x40一定是第二个字节,因为Oracle按照0x40的长度分割长数据包;

2)如果第一个字节是自然长度,那么下一个字节再加上这个长度在0x00或0x01的位置,这就是结束的标志。

根据这些特点,我们可以从TNS协议头开始,遍历数据包来搜寻这些特点,如果它们符合其中任何一个特点,说明SQL语句的开始位置在这里〔11〕。

2.3 SQL语法树与安全策略

数据库防火墙应该能够实时识别用户,执行实时分析并控制通过软件进入数据库的用户操作,因此,其核心是基于SQL摘要创建安全策略模板。基于对数据库通信机制、数据库操作行为进行深入分析后,建立了这一模型。因此要对SQL语句加以分析确定其是否符合安全策略要求,进而决定是否阻断该SQL语句的执行。

2.3.1语法树与SQL摘要

为了获取SQL语句的摘要,需要对SQL语句切词和语法分析得到语法树。SQL语法树是根据Oracle或MySQL官方给出的语法标准,参考了开源软件sqlparser〔12-14〕中的部分功能,在系统中通过对SQL进行关键词提取等操作得到的,之后遍历SQL语法树,进行语法标准化。标准化即负责将用户输入的SQL进行处理,例如用通配符替代数字和字符串,同时删除一些不需要的节点〔15〕,然后以SQL标准语法树为依据提取SQL摘要。以SQL规范SQL92 ANSI/ISO标准为基础的SQL规范语法树,定义了一种语言(SQL)和数据库行为(事务、隔离级别等)〔16〕。许多商业数据库至少在一定程度上与SQL92兼容。SQL摘要包括操作类型、对象类型、对象名称,它的组成包括多个维度。

2.3.2安全策略

一个数据库系统可以执行任意数量合法的SQL,但经过SQL语法分析后获取的SQL摘要数量是可控的,因此本系统通过SQL摘要和登陆信息配合来实现安全策略的构建,可以按照登陆信息、操作类型、操作对象、对象名称等多个维度制定安全策略。

本系统安全策略分为4部分的内容:

一是登陆信息安全策略。通过代理功能隐藏真实数据库的IP和端口,并将代理端口和IP开放给应用,应用使用代理端口后所有的SQL语句将会得到监管,即阻止的和安全的SQL语句都可以通过统计进行查看;

二是操作类型安全策略。系统可以设定操作类型如select、drop等,根据应用接入执行的SQL语句提取的语法树可以设定对某一操作类型进行放行和阻断操作;

三是操作对象安全策略。系统可以设定操作对象如table、index等,根据应用接入执行的SQL语句中的语法树,阻断或放行带有相关操作对象策略的SQL语句;

四是对象名称策略。根据表名称、索引名称等设定的策略,系统可以只针对某一个对象设定安全策略。

SQL语句提取语法树后,将本条SQL的语法树跟安全策略进行对比,根据对比结果确定是否阻断,不同数据库可根据具体情况设定相应的安全策略,做到精准可靠防护。

3 应用结果分析

本系统安全防护是通过创建安全策略来阻止非法访问。每个目标数据库可以配置多个安全策略,安全策略从SQL语法分析的角度进行定义,每一条安全策略由规则名称、对象类型、操作类型、对象名称组成。本系统可设置的安全策略共涉及19种对象类型、8种操作类型,同时支持Oracle数据库和MySQL数据库。从日常运维角度出发,尽可能进行全面精准的防护。

3.1 系统成果

3.1.1多目标数据库代理能力

实现生产环境无感知的服务代理功能,对于访问客户端而言,该数据库防火墙相当于数据库服务器;对于真实的数据库服务器而言,该数据库防火墙相当于是一个连接客户端,无需修改应用代码,只需修改访问IP信息即可,对现有生产环境尽可能无影响无感知,支持代理多达6万个数据库。

3.1.2基于SQL摘要的安全策略

SQL语法树对SQL语句切词和语法分析才能得到。对大量SQL进行演绎聚合,形成三维的SQL摘要,包括操作类型(select、update、delete、drop、create等)、对象类型(table、index、database、user、view、function等)、对象名称(表名、索引名等),进而建立抽象化的SQL安全模型。

3.1.3多用户及权限隔离

根据实际需求,数据库防火墙系统对用户权限进行了分级,并进行了数据隔离,可满足每一个用户进行各自独立使用的需求,用户可各自创建自己的目标数据库和安全策略。

3.1.4集群支持

支持Oracle RAC和MySQL集群,支持Oracle多实例共享安全策略。

3.2 整体评估

在评估原型系统的实验中,我们对比了两套数据库系统测试。为了使测试准确性提高,其硬件配置、网络、系统平台均保持一致,通过在运维机和真实数据库服务器之间搭建数据库防火墙来考察系统的性能和防护准确性。

3.2.1性能

客户机通过数据库防火墙访问真实数据库服务器时,由于数据库网络协议解析、SQL语法树提取、策略匹配需要对请求进行额外处理,因此一定程度上会降低用户访问的性能。为了证明处理过程的性能损耗,并与正常数据库进行对比,我们分别执行了不同长度的SQL语句,分别包括32、128、256、512、1024字节长度,循环1 000次,统计处理时间。根据测试结果,SQL执行性能与其长度正相关,数据库防火墙对客户机访问性能影响非常有限。

3.2.2防护准确性

针对数据库防火墙的安全策略设置及阻断功能,根据日常运维要求进行了逐项测试。测试发现,数据库防火墙对于日常运维过程中的危险SQL语句的识别率和拦截率达到98%。

4 结语

本文主要研究了基于反向代理的数据库防火墙系统实现的相关技术,该系统实现了日常运维过程中的数据库防护,其最大优势是可及时发现数据库危险操作,实时阻断并进行告警,避免运维人员误操作或者不法分子非法操作数据库,提升了数据库的安全防护和运维安全。同时针对日常的运维SQL语句加以审计,为数据库运维分析提供了可靠途径。

下一步研究将建立更为完善的安全防护策略,进一步提升数据库防火墙系统的防护能力。

猜你喜欢

客户机安全策略防火墙
“一封家书”寄深情 筑牢疫情“防火墙”
基于可视化的安全策略链编排框架
全民总动员,筑牢防火墙
构建防控金融风险“防火墙”
多媒体教学服务器限制访问的一种措施
隔山亦能打牛,本本巧变远控利器
浅析涉密信息系统安全策略
地铁客运组织方式及安全分析
在舌尖上筑牢抵御“僵尸肉”的防火墙
升腾瘦客户机借神码翱翔“云端”