一种基于通信协议和SQL语法的数据库自动发现方法与流程

文档序号:11156695阅读:490来源:国知局
一种基于通信协议和SQL语法的数据库自动发现方法与制造工艺

本发明属于数据库安全技术领域,尤其是一种基于通信协议和SQL语法的数据库自动发现方法。



背景技术:

目前,数据库应用已深入到各个领域,但随之而来产生了数据的安全问题以及数据库访问的安全问题。各种应用系统的数据库中大量数据的安全问题、敏感数据的防窃取和防篡改问题,越来越引起人们的高度重视。现有的数据库审计或数据库防火墙产品,在使用过程中,通常需要用户进行手动操作,添加数据库信息的步骤,其处理速度慢、准确率低。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种设计合理、发现速度快且准确率高的基于通信协议和SQL语法的数据库自动发现方法。

本发明解决现有的技术问题是采取以下技术方案实现的:

一种基于通信协议和SQL语法的数据库自动发现方法,包括以下步骤:

步骤1:获取网络中的数据包,使用filter过滤掉已确认为数据库的ip,port对;

步骤2:检测数据包使用的协议是否是TCP协议,并检测是否是syn+ack包,是则执行步骤3;

步骤3:检查IP,port对是否已缓存达到设定的阀值,是则执行步骤4,否则缓存该ip,port对;

步骤4:过滤数据包内容,根据数据库通信中的关键字信息,填充发现标志位;

步骤5:对于识别出来的数据库,通过计算唯一key值,快速查找到对应的数据库信息结构体;

步骤6:通过识别的信息更新此key值对应的数据库信息结构体;

步骤7:检查是否有新的IP、port对信息填充完整,如果填充完整,则更新到filter中。

在填充完整之后,不再检查此key值对应的数据库信息结构体,并将结构体中的is_full值赋为1,然后更新过滤信息的filter,降低检索的压力。

所述获取网络中的数据包是使用libpcap库实现的。

所述步骤2是通过解析源ip,port对和目标ip,port对实现的。

所述的阀值为10。

所述关键字信息包括INESERT、DELETE、UPDATE、SELECT、Oracle、WIN_NT64、ZHS16GBK和MICROSOFT SQL_SEVER。

所述数据库信息结构体包含:数据库的类型、客户端的IP和port、服务器端的IP和port、客户端和服务器的操作系统类型及位数、数据库的字符集、信息是否获取完全的标志位。

所述步骤5中计算唯一key值是通过客户端的IP和port、服务器端的IP和port计算得到的。

本发明的优点和积极效果是:

1、本发明根据数据库相互通讯过程中使用的特征协议对网络中的数据库进行识别并对网络通信协议和SQL语句进行过滤,提高了数据库发现的效率;再通过校验对应数据库使用的确切协议,提高了发现的准确率。

2、本发明能够将自动识别出的数据库供用户进行选择,或者直接添加到产品的被保护数据库列表中,能够发现网络中存在的数据库,用户在使用数据库审计或数据库防火墙产品的时候,不再需要手动添加相关数据库的信息,简化了用户的操作,可广泛应用于数据库审计或数据库防火墙等网络安全产品中。

附图说明

图1是本发明的处理流程图;

图2是本发明实施例的协议模型的结构示意图;

图3是本发明实施例的IP报头的结构示意图;

图4是过滤数据包内容及填充发现标志位的流程图;

图5是更新key值对应的数据库信息结构体的流程图。

具体实施方式

以下结合附图对本发明实施例做进一步详述:

一种基于通信协议和SQL语法的数据库自动发现方法,如图1所示,包括以下步骤:

步骤1:获取网络中的数据包,并使用filter过滤掉已确认为数据库的ip,port对。

在本步骤中,获取网卡上的数据包可以使用libpcap库来实现,并将已确认的数据库添加到filter中。使用filter过滤数据包的方式可以加快检测的效率。在正常情况下,不再处理相同的数据ip,port对,可以第二次对检测进行加速。

步骤2:检测数据包使用的协议是否是TCP协议,并检测是否是syn+ack包,是则执行步骤3。

本步骤通过解析源ip,port对和目标ip,port对判断数据包使用的协议是否是TCP协议。

以如图2所示的协议模型为例进行说明:数据包的前三段分别为:MAC段、IP段、TCP段,其长度分别是14、20、20字节,分别存放MAC包头、IP包头、TCP包头;其中TCP数据位于第3段,TCP段中保存有数据段的长度。

如图3给出了IP段的结构示意图。判断是否是TCP协议,可以校验IP段的第10字节,如果该字段的值为6,则表示接下来的第三段是TCP协议。使用TCP协议三次握手的第二阶段(syn+ack)可以避免大量只有syn包的情况下造成巨大的处理压力。

步骤3:检查IP,port对是否已缓存达到设定的阀值,是则执行步骤4,否则缓存该ip,port对。

在本实施例中,阀值设置为10,如果未达到阀值,则缓存该ip,port对。缓存该ip,port对的一定量的包之后才进行处理,可以增加检测的数据包的准确性,表示此网络中真实存在此ip,port对,减少判断错误的概率,增加发现的准确率。

步骤4:过滤数据包内容,根据数据库通信中的关键字信息,填充发现标志位。

如图4所示,在数据库的通信包中,某些字段只会出现在对应数据库的通信包中,通过过滤数据包中的关键字信息,标记为对应的数据库。同样通过过滤SELECT、MICROSOFT SQL SERVER、WIN_NT64、ZHS16GBK等关键字来识别sql语句、数据库种类、操作系统、字符集等信息。

步骤5:对于识别出来的数据库,通过计算唯一key值,快速查找到对应的数据库信息结构体。

数据库信息结构体包含:数据库的类型,客户端的IP、port,服务器的IP、port;客户端和服务器的操作系统类型、位数,数据库的字符集;信息是否获取完全的标志位;由IP、port计算出的唯一的key值等。

key的计算方式如下:

src_ip&=0xffff;

dst_ip&=0xffff;

(src_ip<<48)|(src_port<<32)|(dst_ip<<16)|dst_port

上述程序指令中,src_ip、dst_ip分别表示客户端和服务器端的IP地址,src_port、dst_port分别表示客户端和服务器端的端口。

通过以上方法计算出一个u_int64类型的key值作为此结构体的唯一标识,用于快速查找和遍历。

步骤6:通过识别的信息更新此key值对应的数据库信息结构体。

如图5,根据过滤出的信息,将此key值对应的数据库信息结构体填充完整。在步骤4,过滤数据包的数据时,会将对应的发现标志位标记,在此步骤对这些标志进行一一验证,并更新数据库信息结构体。

步骤7:检查是否有新的IP、port对信息填充完整;如果填充完整,则更新到filter中。

在填充完整之后,不再检查此key值对应的数据库信息结构体,并将结构体中的is_full值赋为1,然后更新过滤信息的filter,降低检索的压力。

需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1