CN109710671A - 实现数据库操作数据引流的方法及其数据库防火墙系统 - Google Patents
实现数据库操作数据引流的方法及其数据库防火墙系统 Download PDFInfo
- Publication number
- CN109710671A CN109710671A CN201811532423.2A CN201811532423A CN109710671A CN 109710671 A CN109710671 A CN 109710671A CN 201811532423 A CN201811532423 A CN 201811532423A CN 109710671 A CN109710671 A CN 109710671A
- Authority
- CN
- China
- Prior art keywords
- database
- function
- flow
- module
- firewall
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明涉及一种实现数据库操作数据引流的方法及其数据库防火墙系统。本发明的方法是首先实现一个动态链接库,该动态链接库里实现了与数据库内部调用到的关键IO函数的名称与参数形式一致的劫持函数;然后,利用所在操作系统平台提供的相关动态链接机制,通过配置,在数据库进程启动的时候,预先载入此动态库,从而实现对数据库关键IO函数的劫持与替换;最后,在目标数据库运行的时候,数据库操作产生的数据会经过实现劫持的函数,从而可以实现对数据库操作数据的获取,并引流到数据库防火墙,进行后续的审计、过滤、阻断等操作。本发明提供一种适用于不同数据库和不同操作系统平台的数据库操作数据引流的方法及其数据库防火墙系统。
Description
技术领域
本发明涉及信息安全技术领域,特别是一种实现数据库操作数据引流的方法及其数据库防火墙系统。
背景技术
信息安全领域中,数据库防火墙系统对数据库访问行为进行监视、危险操作阻断、操作权限管控、可疑行为审计等处理,是保障数据库操作安全的重要设备和系统。
数据库防火墙必须获取数据库操作流量以进行处理,因此数据获取方式是数据库防火墙系统实现的关键之一,会影响其部署模式,使用灵活性,成本等。从数据获取形式的角度来划分,现有主流数据库防火墙基本是通过采用网络透明的方式,;从网络链路的层次来获取数据;从部署角度可以细分为两种方案,描述如下:
一、基于网络数据包镜像转发的旁路监听部署模式的数据获取方案,这种方案无法干涉数据库客户端到数据库的通信过程,无法实现操作命令主动拦截、阻断等过滤操作,功能严重受限;
二、基于网络桥接(代理)模式,串行部署的数据获取方案,这种方案需要对网络架构做出一定的调整,对原来网络拓扑产生影响,部署不便;并且因为串行部署的原因,其性能和可靠性将对数据库服务造成一定影响;
旁路以及桥接两种通信数据获取(部署)方案都有一个重要的缺点,就是它们都从网络链路获取数据,对网络架构或者设备有依赖,位于通信链路的中间,这导致它们无法处理加密通信数据,应用场景受限。
另外一个重大缺点就是,此两种模式的数据库防火墙一般部署在专用硬件设备或专门服务器上,这导致采购和使用成本相对高;使用灵活性差,不适用于当下日趋成为应用部署主流的云应用和云平台;
为了解决以上问题,需要一种不依赖和不影响网络拓扑的、适用于加密通信环境的、低成本和高灵活性的、云平台友好的数据库防火墙解决方案,而这种解决方案的关键是如何用一种新的思路来获取数据。
发明内容
本发明解决的技术问题在于提供一种实现数据库操作数据引流的方法及其数据库防火墙系统;实现一种不依赖和不影响网络拓扑的、适用于加密通信环境的、低成本和高灵活性的、云平台友好的数据库防火墙解决方案。
本发明解决上述技术问题的技术方案是:
所述的方法是通过动态库预装载,实现关键函数劫持,从而实现对数据库操作数据引流。
所述的引流是对进出数据库的数据流量进行引导与转发;引流处于应用层,是对业务逻辑数据进行的引流;具体包括如下步骤:
步骤1:首先实现包含针对数据库关键IO函数的劫持函数的动态链接库;
步骤2:使用所在平台提供的动态库预先链接机制,在启动数据库进程时让数据库预先链接含有劫持函数的动态链接库;
步骤3:在数据库进程启动后,劫持函数取代原来的关键IO函数被数据库进程调用,所有数据库IO流量都会通过劫持函数;
步骤4:劫持函数开始对数据库访问流量进行引流和导向,通过IPC机制转发到外部的处理进程,从而实现对数据库流量的引导;引流方式支持串联与旁路两种模式。
所述的数据库关键IO函数,是从网络接收数据库操作指令和返回指令结果的函数,包括:TLS/SSL加密通信环境下,libssl.so/libssl.dll链接库的SSL_read()和SSL_write()函数。
所述的劫持函数是函数名称和形式参数与要劫持的函数完全一致的函数;劫持函数基于所在平台的动态库函数链接机制,在数据库进程启动的时候替换被劫持函数。
所述的预先链接机制是:在linux平台下,通过设置LD_PRELOAD环境变量指定动态链接库,让进程启动的时候首先链接指定的动态链接库;在windows平台下,通过配置动态库搜寻路径来指定和抢先动态链接库,实现对被替换动态库里的目标关键IO函数的劫持。
所述的IPC机制是进程间通信机制,取决于所在的操作系统平台;一般具有网络套接字、内存共享、消息队列等机制;通过IPC机制将进出数据库的流量引导转发到数据库防火墙进程进行处理。
所述的串联模式是劫持函数等待防火墙返回处理结果才继续下一步,可以影响原来的流量处理流程;
所述的旁路模式是不等待防火墙处理结果就继续下一步处理,不影响原来的流量处理流程。
所述的系统包括的功能模块有:流量收发模块、数据库协议解析模块、流量处理模块、记录及告警模块、控制及配置模块;
所述的流量收发模块,指的是基于IPC机制,与替换进数据库进程的动态库里面的劫持函数进行通信,收取数据库操作流量和返回处理结果的模块;
所述的数据库协议解析模块,用于识别和标准化不同数据库操作指令,以便于下一步处理;
所述的流量处理模块,是所述数据库防火墙的关键模块,它基于用户所设定的处理策略,对进入的数据库操作流量进行统计、拦截、修改、优化操作,实现数据库防火墙的核心职能;
所述的记录及告警模块,用于记录及输出防火墙的处理结果;
所述的控制及配置模块,用于提供控制配置功能及相关接口。
本发明的方法不从网络路径获取数据,而是从数据库本身的IO路径上获取数据;通过动态库预装载,实现关键函数劫持与替换;从而实现对数据库操作数据引流,基于此实现数据库防火墙系统。本发明适用于不同数据库和不同操作系统平台的,不影响原有软件系统配置及网络拓扑的,适用于加密通信环境的。
附图说明
下面结合附图对本发明进一步说明。
图1是本发明流程图;
图2是本发明数据库防火墙系统的功能模块和工作流程。
具体实施方式
见图1所示,本发明的方法是通过动态库预装载,实现关键函数劫持,从而实现对数据库操作数据引流。所述引流是对进出数据库的数据流量进行引导与转发;引流处于应用层,是对业务逻辑数据进行的引流;具体包括如下步骤:
步骤1:首先实现包含针对数据库关键IO函数的劫持函数的动态链接库;
步骤2:使用所在平台提供的动态库预先链接机制,在启动数据库进程时让数据库预先链接含有劫持函数的动态链接库;
步骤3:在数据库进程启动后,劫持函数取代原来的关键IO函数被数据库进程调用,所有数据库IO流量都会通过劫持函数;
步骤4:劫持函数开始对数据库访问流量进行引流和导向,通过IPC机制转发到外部的处理进程,从而实现对数据库流量的引导;引流方式支持串联与旁路两种模式。
前述的数据库关键IO函数,是从网络接收数据库操作指令和返回指令结果的函数,包括:TLS/SSL加密通信环境下,libssl.so/libssl.dll链接库的SSL_read()和SSL_write()函数。劫持函数是函数名称和形式参数与要劫持的函数完全一致的函数;劫持函数基于所在平台的动态库函数链接机制,在数据库进程启动的时候替换被劫持函数。
预先链接机制是:在linux平台下,通过设置LD_PRELOAD环境变量指定动态链接库,让进程启动的时候首先链接指定的动态链接库;在windows平台下,通过配置动态库搜寻路径来指定和抢先动态链接库,实现对被替换动态库里的目标关键IO函数的劫持。
IPC机制是进程间通信机制,取决于所在的操作系统平台;一般具有网络套接字、内存共享、消息队列等机制;通过IPC机制将进出数据库的流量引导转发到数据库防火墙进程进行处理。
串联模式是劫持函数等待防火墙返回处理结果才继续下一步,可以影响原来的流量处理流程;旁路模式是不等待防火墙处理结果就继续下一步处理,不影响原来的流量处理流程。
见图2所示,本发明的系统包括的功能模块有:流量收发模块、数据库协议解析模块、流量处理模块、记录及告警模块、控制及配置模块;流量收发模块,指的是基于IPC机制,与替换进数据库进程的动态库里面的劫持函数进行通信,收取数据库操作流量和返回处理结果的模块。数据库协议解析模块,用于识别和标准化不同数据库操作指令,以便于下一步处理。流量处理模块,是所述数据库防火墙的关键模块,它基于用户所设定的处理策略,对进入的数据库操作流量进行统计、拦截、修改、优化操作,实现数据库防火墙的核心职能。记录及告警模块,用于记录及输出防火墙的处理结果。控制及配置模块,用于提供控制配置功能及相关接口。
以下以linux平台为例子,展示了客户端访问数据库,通信流量在被劫持的libssl.so的两个关键IO读写函数被引流到数据库防火墙的整体流程。
以下为劫持函数的基本逻辑伪代码。读和写两个劫持函数的函数名和形参必须跟被劫持的函数一致,如此,才能起到冒充被劫持函数,被目标进程调用的目的。我们以linux平台下libssl.so库中的SSL_read()和SSL_write()函数为例子。选择劫持此两个函数,是因为在IO路径的这个节点上,数据已经被解密和还未加密,而且位于第三方公共库内,是方便有效的劫持点。
系统具体实现代码示例
以下代码描述了对目标函数进行查找和替换的核心逻辑。
以下代码展示了一个linux平台下实际劫持函数及相关辅助函数的实现,该劫持函数实现了libssl.so库中的SSL_read()函数,该劫持函数实现在预装载的劫持动态库libssl_hijack.so中。
#伪代码实现示例
以下操作命令展示了linux平台如何利用LD_PRELOAD机制来预装载一个指定库,从而实现关键函数劫持。以启动mariadb数据库为例子。
##指定劫持动态库
#export LD_PRELOAD=/opt/db_firewall/libssl_hijack.so
##启动数据库进程
#/usr/libexec/mysqld--basedir=/usr--datadir=/var/lib/mysql
--plugin-dir=/usr/lib64/mysql/plugin
--log-error=/var/log/mariadb/mariadb.log
--pid-file=/var/run/mariadb/mariadb.pid
--socket=/var/lib/mysql/mysql.sock
数据库启动,至此,完成劫持。启动数据库防火墙进程,实现引流。
Claims (8)
1.一种实现数据库操作数据引流的方法,其特征在于:所述的方法是通过动态库预装载,实现关键函数劫持,从而实现对数据库操作数据引流。
2.根据权利要求1所述的方法,其特征在于:所述的引流是对进出数据库的数据流量进行引导与转发;引流处于应用层,是对业务逻辑数据进行的引流;具体包括如下步骤:
步骤1:实现包含针对数据库关键IO函数的劫持函数的动态链接库;
步骤2:使用所在平台提供的动态库预先链接机制,在启动数据库进程时让数据库预先链接含有劫持函数的动态链接库;
步骤3:在数据库进程启动后,劫持函数取代原来的关键IO函数并被数据库进程调用,使所有数据库IO流量都通过劫持函数;
步骤4:劫持函数开始对数据库访问流量进行引流和导向,通过IPC机制转发到外部的处理进程,从而实现对数据库流量的引导;引流方式支持串联与旁路两种模式。
3.根据权利要求2所述的方法,其特征在于:
所述的数据库关键IO函数,是从网络接收数据库操作指令和返回指令结果的函数,包括:TLS/SSL加密通信环境下,libssl.so/libssl.dll链接库的SSL_read()和SSL_write()函数。
4.根据权利要求2所述的方法,其特征在于:
所述的劫持函数是函数名称和形式参数与要劫持的函数完全一致的函数;劫持函数基于所在平台的动态库函数链接机制,在数据库进程启动的时候替换被劫持函数。
5.根据权利要求2所述的方法,其特征在于:
所述的预先链接机制是:在linux平台下,通过设置LD_PRELOAD环境变量指定动态链接库,让进程启动的时候首先链接指定的动态链接库;在windows平台下,通过配置动态库搜寻路径来指定和抢先动态链接库,实现对被替换动态库里的目标关键IO函数的劫持。
6.根据权利要求2所述的方法,其特征在于:
所述的IPC机制是进程间通信机制,取决于所在的操作系统平台;一般具有网络套接字、内存共享、消息队列等机制;通过IPC机制将进出数据库的流量引导转发到数据库防火墙进程进行处理。
7.根据权利要求2所述的方法,其特征在于:
所述的串联模式是劫持函数等待防火墙返回处理结果才继续下一步,影响原来的流量处理流程;
所述的旁路模式是不等待防火墙处理结果就继续下一步处理,不影响原来的流量处理流程。
8.一种权利要求1-7任一项方法的数据库防火墙系统,其特征在于,所述的系统包括的功能模块有:流量收发模块、数据库协议解析模块、流量处理模块、记录及告警模块、控制及配置模块;
所述的流量收发模块,指的是基于IPC机制,与替换进数据库进程的动态库里面的劫持函数进行通信,收取数据库操作流量和返回处理结果的模块;
所述的数据库协议解析模块,用于识别和标准化不同数据库操作指令,以便于下一步处理;
所述的流量处理模块,是所述数据库防火墙的关键模块,它基于用户所设定的处理策略,对进入的数据库操作流量进行统计、拦截、修改、优化操作,实现数据库防火墙的核心职能;
所述的记录及告警模块,用于记录及输出防火墙的处理结果;
所述的控制及配置模块,用于提供控制配置功能及相关接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811532423.2A CN109710671B (zh) | 2018-12-14 | 2018-12-14 | 实现数据库操作数据引流的方法及其数据库防火墙系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811532423.2A CN109710671B (zh) | 2018-12-14 | 2018-12-14 | 实现数据库操作数据引流的方法及其数据库防火墙系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109710671A true CN109710671A (zh) | 2019-05-03 |
CN109710671B CN109710671B (zh) | 2023-05-30 |
Family
ID=66255903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811532423.2A Active CN109710671B (zh) | 2018-12-14 | 2018-12-14 | 实现数据库操作数据引流的方法及其数据库防火墙系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109710671B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111010346A (zh) * | 2019-12-23 | 2020-04-14 | 深信服科技股份有限公司 | 基于动态路由的报文处理方法、设备、存储介质及装置 |
CN111488331A (zh) * | 2020-04-08 | 2020-08-04 | 广州虎牙科技有限公司 | 数据库连接方法、装置和计算机设备 |
CN112685203A (zh) * | 2021-03-12 | 2021-04-20 | 北京安华金和科技有限公司 | 操作获取方法和装置、存储介质及电子设备 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0027280D0 (en) * | 2000-11-08 | 2000-12-27 | Malcolm Peter | An information management system |
US20040111720A1 (en) * | 2001-02-01 | 2004-06-10 | Vertes Marc Philippe | Method and system for managing shared-library executables |
US20050251856A1 (en) * | 2004-03-11 | 2005-11-10 | Aep Networks | Network access using multiple authentication realms |
EP2713561A1 (en) * | 2012-09-28 | 2014-04-02 | British Telecommunications public limited company | Installation of network services |
CN104954894A (zh) * | 2015-06-26 | 2015-09-30 | 网宿科技股份有限公司 | 一种视频流量引导方法、装置及一种电子设备 |
CN105955762A (zh) * | 2016-04-19 | 2016-09-21 | 北京金山安全软件有限公司 | 一种注入动态链接库文件的方法、装置及电子设备 |
US20160292416A1 (en) * | 2015-03-31 | 2016-10-06 | Kaspersky Lab Zao | System and method for identifying a file path using tree data structure |
CN106777126A (zh) * | 2016-12-16 | 2017-05-31 | 广东电网有限责任公司电力调度控制中心 | 一种支持异构时序数据库的数据在线迁移方法 |
US20170163663A1 (en) * | 2015-12-02 | 2017-06-08 | Salesforce.Com, Inc. | False positive detection reduction system for network-based attacks |
US20170257449A1 (en) * | 2014-09-16 | 2017-09-07 | Wangsu Science & Technology Co., Ltd. | Method for forwarding traffic in application on mobile intelligent terminal |
CN107295573A (zh) * | 2017-07-12 | 2017-10-24 | 网宿科技股份有限公司 | 一种业务应用流量的引导方法和系统 |
CN108595218A (zh) * | 2018-04-17 | 2018-09-28 | 网宿科技股份有限公司 | 一种加载系统动态库的方法和装置 |
-
2018
- 2018-12-14 CN CN201811532423.2A patent/CN109710671B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0027280D0 (en) * | 2000-11-08 | 2000-12-27 | Malcolm Peter | An information management system |
US20040111720A1 (en) * | 2001-02-01 | 2004-06-10 | Vertes Marc Philippe | Method and system for managing shared-library executables |
US20050251856A1 (en) * | 2004-03-11 | 2005-11-10 | Aep Networks | Network access using multiple authentication realms |
EP2713561A1 (en) * | 2012-09-28 | 2014-04-02 | British Telecommunications public limited company | Installation of network services |
US20170257449A1 (en) * | 2014-09-16 | 2017-09-07 | Wangsu Science & Technology Co., Ltd. | Method for forwarding traffic in application on mobile intelligent terminal |
US20160292416A1 (en) * | 2015-03-31 | 2016-10-06 | Kaspersky Lab Zao | System and method for identifying a file path using tree data structure |
CN104954894A (zh) * | 2015-06-26 | 2015-09-30 | 网宿科技股份有限公司 | 一种视频流量引导方法、装置及一种电子设备 |
US20170163663A1 (en) * | 2015-12-02 | 2017-06-08 | Salesforce.Com, Inc. | False positive detection reduction system for network-based attacks |
CN105955762A (zh) * | 2016-04-19 | 2016-09-21 | 北京金山安全软件有限公司 | 一种注入动态链接库文件的方法、装置及电子设备 |
CN106777126A (zh) * | 2016-12-16 | 2017-05-31 | 广东电网有限责任公司电力调度控制中心 | 一种支持异构时序数据库的数据在线迁移方法 |
CN107295573A (zh) * | 2017-07-12 | 2017-10-24 | 网宿科技股份有限公司 | 一种业务应用流量的引导方法和系统 |
CN108595218A (zh) * | 2018-04-17 | 2018-09-28 | 网宿科技股份有限公司 | 一种加载系统动态库的方法和装置 |
Non-Patent Citations (1)
Title |
---|
张胜等: "主机入侵防护系统的设计与实现", 《计算机工程与设计》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111010346A (zh) * | 2019-12-23 | 2020-04-14 | 深信服科技股份有限公司 | 基于动态路由的报文处理方法、设备、存储介质及装置 |
CN111010346B (zh) * | 2019-12-23 | 2021-10-19 | 深信服科技股份有限公司 | 基于动态路由的报文处理方法、设备、存储介质及装置 |
CN111488331A (zh) * | 2020-04-08 | 2020-08-04 | 广州虎牙科技有限公司 | 数据库连接方法、装置和计算机设备 |
CN111488331B (zh) * | 2020-04-08 | 2024-03-01 | 广州虎牙科技有限公司 | 数据库连接方法、装置和计算机设备 |
CN112685203A (zh) * | 2021-03-12 | 2021-04-20 | 北京安华金和科技有限公司 | 操作获取方法和装置、存储介质及电子设备 |
CN112685203B (zh) * | 2021-03-12 | 2021-11-16 | 北京安华金和科技有限公司 | 操作获取方法和装置、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109710671B (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107766205B (zh) | 一种面向微服务调用过程跟踪的监控系统及方法 | |
CN109710671A (zh) | 实现数据库操作数据引流的方法及其数据库防火墙系统 | |
CN108234653A (zh) | 一种处理业务请求的方法及装置 | |
CN102999716B (zh) | 虚拟机器监控系统及方法 | |
CN102196478B (zh) | 一种网管系统故障的诊断方法和系统 | |
JP2021517370A (ja) | トポロジ処理方法、装置、及びシステム | |
US11729642B2 (en) | Using orchestrators for false positive detection and root cause analysis | |
EP3818680B1 (en) | Systems and methods for reporting computer security incidents | |
CN109547488A (zh) | 一种基于联盟区块链的可信数据计算及交换系统 | |
CN109587125A (zh) | 一种网络安全大数据分析方法、系统及相关装置 | |
CN110392039A (zh) | 基于日志和流量采集的网络系统事件溯源方法及系统 | |
WO2020131859A1 (en) | Communicating trace information between security zones | |
CN106254109A (zh) | 日志采集方法、日志采集系统和服务器 | |
CN109388963A (zh) | 一种移动终端用户隐私数据防护方法和装置 | |
CN115766258B (zh) | 一种基于因果关系图的多阶段攻击趋势预测方法、设备及存储介质 | |
CN110474870A (zh) | 基于区块链的网络主动防御方法、系统及计算机可读存储介质 | |
CN115174279B (zh) | 一种以太坊智能合约漏洞实时检测方法、终端及存储介质 | |
CN106656792A (zh) | 一种基于sdn架构的bgp路由可信验证方法 | |
CN112511501A (zh) | 一种面向5g应用的数据安全监测系统 | |
CN115049493A (zh) | 一种区块链数据追踪方法、装置及电子设备 | |
Lucchese et al. | HoneyICS: A high-interaction physics-aware honeynet for industrial control systems | |
CN112468464B (zh) | 基于服务链的状态机完整性验证系统及方法 | |
CN103902590A (zh) | 终端自动化测试方法及其装置 | |
CN109033426A (zh) | 基于私有区块链网络的保存数据操作信息的方法及系统 | |
CN114885012A (zh) | 物联网平台的系统接入方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |