APP下载

基于Mycat的拟态数据库中间件研究①

2019-10-18曹国栋喻卫东

计算机系统应用 2019年10期
关键词:拟态中间件异构

曹国栋,倪 明,喻卫东,王 灿

(华东计算技术研究所,上海 201808)

现在社会,信息技术飞速发展,伴随着数以亿计的数据产生,数据库作为整个系统中信息输入和输出的重要组件,对于其保护和处理,日益成为人们关注的焦点.据统计仅2018年数据泄露事件高达945次,导致的信息泄露数量达到45亿条之多,信息量陡增133个百分点.

2018年5 月,在南京举办的“强网杯”拟态防御挑战赛,在国内外22支顶尖战队的高强度攻击下,拟态防御设备成功封堵了所有攻击,即使开放管理员权限,在拟态防御设备中随意注入后门,也没有任何战队突破拟态防御,为拟态防御进行全方位、高强度的安全检验.拟态防御[1,2](Cyberspace Mimic Defense,CMD)是在功能等价的条件下提供可控的执行环境的跳变和迁移,使攻击者对目标环境的难以掌握[3,4].在拟态环境中,海量数据存储与访问是系统设计与使用的瓶颈问题,利用开源的分布式存储数据库中间件Mycat,通过对数据进行水平切分,将不同的表映射到不同的数据库中,通过集群管理,事务分布式处理[5],实现数据库容量的扩充和数据库结构的冗余,加之其对SQL语句有拦截和分析的作用,依据指纹特征对执行体指纹化SQL指令进行特征化处理,发现并剔除攻击者注入的非法指令.Mycat对数据库返回的数据进行表决,判断异常数据库,并对出现故障的数据库进行还原保护,实现数据库的拟态化.

1 拟态介绍

拟态防御(CMD)是中国工程院邬江兴院士在2013年的提出的关于网络空间安全防御的创新性理论,网络空间拟态防御是基于一种主动防御和被动防御相结合的网络安全防御架构,克服了以往计算机系统漏洞,后门或者病毒的时间不确定性,危害未知性,资源破坏性,为将来的网络安全防御提供普适创新的理论和方法指导[6,7].

1.1 拟态防御应用

在网络基础设施中,一些高校和科研院所已提出了拟态防御中异构性的构造方法,文献[8]提出了利用软硬件多样性实现多源异构化处理方法;文献[9,10]提出了利用软件多样化编译对单一软件进行异构化处理的方法,也随之研制出了包括拟态Web服务器[11,12]、拟态防御路由器[13,14]拟态DNS服务器[15]等应用设备.

1.2 拟态防御原理

拟态防御的基本原理是:在不依赖未知攻击特征信息的前提下,通过多个等价等功能的不同体系结构的执行体,利用动态异构冗余架构(DynamicHetero geneous Redundant Architecture,DHRA)[2],DHRA模型如图1所示,实现运行环境、网络、数据、软件等结构的主动切换或快速转移,代表性技术如表1,使攻击者难以判断目标对象的运行环境和机制,提高攻击者在时间维度和空间维度的攻击成本和难度[8].

图1 DHRA模型

表1 动态性技术分类

在高可靠的非相似余度“容错”模式下,执行体通过可重组,可重构,可重建和可重定义等动态构造方法,实现异构性,动态性和冗余判断.动态异构冗余模型(DHRA)由输入,输入代理,执行体集(A1,A2,A3,… ,An),多模/策略表决器,输出组成.根据系统输入,异构元素池中选择异构元素,组成m个异构构件,通过系统的策略调度,形成n个异构执行体,经过对执行体产生的结果多模判决,决定系统输出[2].

2 拟态数据库中间件

数据库中间应用于Web服务器和数据服务器之间,对两者之间交互的数据库指令进行拦截.拟态数据库中间件要实现数据库的切分和扩容,集群管理,事务分布式处理,与此同时,要实现对SQL语言进行特征处理,识别和执行SQL指纹语句,剔除攻击者注入的非法指令,并对出现故障的数据库进行还原保护.

基于此现状,本研究提出利用Mycat在拟态环境中作为数据库的中间件,借助于动态冗余异构模型设计,利用拟态安全的环境为依托,简化拟态环境中数据的切分,存取和同步,调用对应SQL指纹指令对前端指纹SQL执行进行去指纹化.

2.1 中间件简介

Mycat是用于解决传统关系型数据库大数据存储不足而设计的开源分布式数据存储中间件[16],使用NIO重构的网络模块,优化缓冲内核,增强聚合等基本特性,兼容Oralce、PostgreSQL等多种数据库,实现跨语言,跨平台,跨数据库的通用中间件,并提供和原生数据库一致的命令访问的支持,可实现集群管理,自动扩容,智能优化的功能[5],Mycat架构如图2.Mycat作为中间件,其功能更好的对数据库实现拟态防御中动态异构冗余模型(DHRA)构造,使数据的访问和处理更安全,高效.

2.2 中间件在拟态中集群管理

由于在拟态环境中需要多个执行体,为保证执行体执行的数据统一和多模裁决,所有执行体共用一个数据库集群,这就要求数据库能够同时容纳并处理大量数据,并且对指纹SQL语言有切分判决能力.Mycat作为数据库的中间件能在拟态环境中搭建以Mysql为底层节点的分布式数据库系统[17],系统通过Mysql的通信协议[18]与用户以及底层数据库通信,实现负载均衡、指纹SQL语句重写、读写分离、多台数据库并行处理以及结果集合并等功能[5],又因其是开源程序,Mycat对整个集群能透明地访问和管理,集群管理如图3,这在拟态环境中,集群管理为数据的安全访问和处理提供了更可靠高效的保障.

图2 Mycat架构

图3 Mycat集群管理

2.2.1 数据库中间件的切分

在拟态环境中,多个异构执行体访问同一数据库,这就对数据库存储和运算能力有一定的要求.作为执行体和数据库的中间件,Mycat对执行体发送的SQL语句进行拦截分析,通过逻辑表中的取模分片算法、分片枚举、Hash分片等特定算法,将数据的存储和读取,由一个数据库分散到多个数据库中,减少了单个数据库存储和运算压力,实现数据分布式存储[5],Mycat分布式数据存储构架如图4.

图4 Mycat分布式数据存储构架

2.2.2 数据库中间件高可用性

在拟态环境中,多个执行体对数据库进行频繁的数据存储和读取,Mycat作为执行体和数据库连接点,其本身的高可用性涉及所连接数据库乃至整个拟态系统的高可用性.数据库经过切分后,在各个节点的数据库独立运行前提下,Mycat使用主从复制高的可用配置,将dataHost中的writeNode配置为主节点,readNode配置为从节点,在逻辑表中,可配置多个readNode和writeNode,实现多写多读.在Mycat正常运行时,其内部对dataHost中的全部readHost和WriteHost节点定期发起心跳检测[5],将全部的DML SQL发送给第一个writeNode,当第一个writeNode所在的节点出现宕机,默认3次心跳检测失败后,Mycat将自动切换到下一个可用的writeNode,并执行DML SQL语句.由于Mycat是无状态中间件,在拟态环境下,用HAProxy等负载均衡软件部署为集群模式[1],Mycat高可用架构如图5.

图5 Mycat高可用架构

2.2.3 数据库中间件分布式处理

事务处理由一组操作构成,其具有原子性(atomicity)、隔离性(isolation)、持久性(durability)和一致性(consistency)4 个特性[5],在拟态环境中,我们希望通过中间件的分布式处理[17](Distributed Transaction Processing,DTP)将所有SQL语句正确执行.分布式事务处理(DTP)是在一个或多个数据库完成SQL语句执行过程的集合,其关键是知道事务在数据库中任何地方所做的动作,通过事务准备,提交,反馈,产生统一的结果,如果某个步骤发生错误,就需要回滚到上一步已经完成的操作.X/Open定义了分布式事务处理模型,其由应用程序 (ApplicationProgram,AP)、资源管理器(ResourceManagement,RM)、通信资源管理器 (Communication Resource Management,CRM)、事务管理器(Transaction Management,TM)四部分组成[5].AP可以和TM以及RM通信,TM和RM互相之间可以通信,TM和RM通过XA接口进行双向通信,TM通知RM提交事务或者回滚到上一事务正确执行完的点,RM把提交结果通知给TM.

在拟态环境中,在准备阶段,Mycat中事务管理器通知节点数据库准备分支事务,节点数据库准备结果;在提交阶段,事务管理器通知节点数据库提交分支事务,节点数据库将结果提交给Mycat,正常提交执行过程如图6.当在第一阶段出现某一个数据读取和改写失败,第二阶段就回滚到第一阶段已经预提交成功的数据,提交失败执行过程如图7.

图6 提交成功

图7 提交失败

2.2.4 数据库中间件对指纹SQL处理

现在网络数据窃取成功,主要是攻击者了解并熟悉被攻击系统的语言,进而注入代码攻击成功,在拟态环境中,SQL脚本采用基于指纹化的数据库指令异构[2],通过对正常的执行语句加入指纹,让攻击者不了解指纹化的执行语言,使其注入的指令是无法正确执行.当指纹SQL语句通过Mycat时,数据库首先判断请求的地址,若请求来自网站端,将请求指令加到执行体对性的队列中,然后进行指纹SQL语言过滤,指纹SQL处理结构如图8,利用多模表决机制,将SQL语句进行一致性表决,表决一致,则执行正常SQL语句,表决不一致,则进行异常处理.

图8 指纹SQL处理结构图

数据库返回的结果保存到缓冲区中,相同的数据会被映射到Hash表中的相同位置,所有结果返回完整后,对数据库返回内容的完整性进行Hash比较,比较通过后,数据返回给执行体,若比较不一致,把出错信息发送给拟态系统的反馈调度服务器进行决策调度.

Hash表中数据信息进行比较伪代码如下所示:数据库的返回结果Ri包括多个数据包,形式为:Ri={P1,P2,···,Pn}

Foriin 1..n:

Pi= get_resp()

Put_to_push()//将数据库返回的结果放入Hash表中

If get(Pi)>n/2+1//相同结果超过一半时

Send(Pi)//返回结果

Remove(Pi)//删除已经对比完成的数据

2.2.5 数据库多模表决机制

在拟态环境中,用动态冗余架构特性改变传统防御环境中的相似性,确定性和静态性;利用矢量空间多模裁决机制,如图9,形成非协同条件下,多元动态目标协同一致攻击难度以实现“面防御”功能.在数据库环境中,目标对象外部SQL服务请求依据策略分发给各个数据库,数据库的输出矢量经过Hash表比较进行裁决输出.

多模表决器按照规则对n个功能相同但相互独立的数据库的输出进行表决操作,保证系统正确输出,本文采用n取k表决模型,当k个数据库正常读取时,便认为数据库正常运行,当k个及以上数据库返回的数据异常时,才会输出错误非正常数据,在异构冗余的拟态环境中,不同的数据库运行环境不同,攻击注入方式不同,无论从时间和技术上,对攻击者都是极大的消耗,由此数据库的安全性和可靠性得以提高.

图9 拟态表决器模型

3 实验与分析

为了验证Mycat在拟态环境中能够高效保障数据的读取和安全性,我们在开源的企业办公系统然之协同中,使用三模异构冗余模型进行实验测试,然之协同的优势如下:

(1)功能齐全,能满足日常的办公需求,使用范围广,人数无限制.

(2)私有化部署,安全性高.

(3)开源产品,能修改代码满足个性化需求.

硬件配置如表2.

表2

3.1 环境配置

在拟态环境中,3个异构执行体运行的系统分别为windows7(IP:192.168.126.133),Ubuntu (IP:192.168.126.134)和centos (IP:192.168.126.135),Mycat安装在IP 地址为 192.168.126.141,并建立“ranzhi”数据库.

(1)Schema.xml配置

Schema.xml作为Mycat最重要的配置文件之一,管理着逻辑库,分片规则,节点主机等信息,关键代码如下:

在各自的系统中,安装然之协同,其所连立的数据库设置为Mycat所在的物理地址和Mycat的端口,如图10.

图10 执行体Mycat连接

3.2 实验结果分析

(1)指纹SQL识别

通过Mycat,指纹SQL能够在数据库中正常执行,如图11,无指纹的SQL语言,不能运行,如图12.

图11 指纹SQL执行结果

图12 无指纹SQL执行结果

(2)数据库注入测试

在一般的数据库中,进行数据库注入攻击测试,数据库返回数据,如图13,图14所示.

当使用本文中拟态环境中的数据库,进行相同的数据库注入攻击,未能返回数据,攻击失败,如图15所示.

图13 数据库注入过程

图14 数据库注入结果

图15 数据库注入失败

数据库安全测试如表3所示.

经上述实验,在拟态环境中,数据库成功防御数据库注入攻击,保障了数据库安全.

表3 数据库安全测试结果

4 结论与展望

通过在拟态环境中使用Mycat作为数据库访问的中间件,实现了数据库的集群管理,高可用性,以及对指纹SQL语言的处理,极大的提高拟态防御中对数据安全的保障和数据存储,读取的高效性.在未来的信息时代,网络空间的数据存取和保护越来越得到重视,随着社会科技的发展,会有更多的数据库中间件出现,其功能和架构模式也会不断的更新和成熟,数据库中间件在拟态环境中会发挥更大的作用.

猜你喜欢

拟态中间件异构
ETC拓展应用场景下的多源异构交易系统
离散异构线性多智能体系统的输出一致性
试论同课异构之“同”与“异”
我国自主可控中间件发展研究
日语拟声拟态词及其教学研究
凝聚与铺张——孙绍振教授《以丑、呆为美》两岸同课异构教学观摩后记
模仿大师——拟态章鱼
关于拟声拟态词的考察
以实力证明 用事实说话
中移动集采:东方通中间件脱颖而出