发明内容
本发明的目的在于提供一种具有高普适性、高可解释性、能够自动学习的Bot用户识别方案,降低Bot检测成本并提高Bot伪装成本。
实现本发明目的的技术解决方案为:一种有效识别机器访问行为的方法,该方法包括:
输入Waf访问日志;
实时检测引擎消费所述Waf访问日志,输出机器访问行为Bot用户至管控中心;
通过管控中心对检测到的Bot用户进行管控,且将管控结果反馈至自适应学习模块;
自适应学习模块根据管控结果进行更新,且将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。
进一步地,所述实时检测引擎消费Waf访问日志,输出机器访问行为Bot用户至管控中心,具体包括:
自定义设置全局白名单;
构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数;
实时对Waf访问日志进行特征提取,所述特征包括用户的访问总量、访问时长、访问频率稳定系数以及访问资源的Gini系数;
将提取到的特征输入至所述模型函数,输出机器访问行为Bot用户;
根据全局白名单对所述Bot用户进行过滤,并对过滤后的Bot用户进行风险等级计算后输出至管控中心。
进一步地,所述构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数,具体包括:
将已标注的Bot用户和正常用户特征数据存入Hive表,形成训练样本知识库;
创建Spark任务周期性消费Hive表中的训练样本,生成Bot用户检测机器学习模型;
将所述Bot用户检测机器学习模型的参数文件以文本的形式保存至集群,构成自适应学习模块;
在分布式计算平台创建Flink实时计算任务,周期性加载集群上保存的模型参数文本,构建模型函数。
进一步地,所述通过管控中心对检测到的Bot用户进行管控,具体包括:
根据自定义设置的域名白名单对实时检测引擎检测输出的Bot用户进行过滤,并对未命中域名白名单的Bot用户进行标记;
按照自定义设置的基于风险等级的Bot用户自动限制配置,对上述标记后的Bot用户采取不同的限制手段;且针对未进行限制的标记过的Bot用户,及时发送告警通知;
展示上述标记过的Bot用户及对应的限制手段;
根据上述展示结果将属于正常业务调用的标记过的Bot用户添加至域名白名单;
对误判的标记过的Bot用户进行标注并解除对该Bot用户的限制,与此同时,管控中心自动将误判结果反馈至所述训练样本知识库。
一种有效识别机器访问行为的系统,该系统包括:
Waf访问日志采集模块,用于采集Waf访问日志并将其输入至实时检测引擎模块;
实时检测引擎模块,用于消费Waf访问日志,输出机器访问行为Bot用户至管控中心模块;
管控中心模块,用于显示Bot用户检测结果,并对检测到的Bot用户进行管控,且将管控结果反馈至自适应学习模块;
自适应学习模块,用于根据管控结果实现自适应学习模块自身的更新,并将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。
进一步地,所述实时检测引擎模块包括:
全局白名单单元,该单元中所包含的Bot用户由用户自定义设置;
识别模型构建单元,用于构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数;
特征提取单元,用于提取Waf访问日志中的特征,所述特征包括用户的访问总量、访问时长、访问频率稳定系数以及访问资源的Gini系数;
Bot用户检测单元,用于将所述特征提取单元提取到的特征输入至所述模型函数,以检测出机器访问行为Bot用户;
过滤筛选及风险评估单元,用于根据所述全局白名单单元的内容对所述Bot用户检测单元的检测结果进行过滤筛选,并对过滤筛选后的Bot用户进行风险等级计算后输出至所述管控中心模块。
进一步地,所述识别模型构建单元包括:
Bot用户检测机器学习模型构建子单元,用于将已标注的Bot用户和正常用户特征数据存入Hive表,形成训练样本知识库;之后创建Spark任务周期性消费Hive表中的训练样本,生成Bot用户检测机器学习模型;
自适应学习模块构建子单元,用于将所述Bot用户检测机器学习模型的参数文件以文本的形式保存至集群,构成自适应学习模块;
模型函数构建子单元,用于在分布式计算平台创建Flink实时计算任务,周期性加载集群上保存的模型参数文本,构建模型函数。
进一步地,所述管控中心模块包括:
域名白名单过滤子单元,用于根据自定义设置的域名白名单对实时检测引擎检测输出的Bot用户进行过滤,并对未命中域名白名单的Bot用户进行标记;
自动限制子单元,用于按照自定义设置的基于风险等级的Bot用户自动限制配置,对上述标记后的Bot用户采取不同的限制手段;
风险用户展示子单元,用于展示上述标记过的Bot用户及对应的限制手段;
白名单添加子单元,用于根据风险用户展示结果将属于正常业务调用的标记过的Bot用户添加至域名白名单;
误判标注子单元,用于对误判的标记过的Bot用户进行标注并解除对该Bot用户的限制;
智能告警子单元,用于及时发送未对标记过的Bot用户进行限制的告警通知;
自动反馈子单元,用于在对误判的标记过的Bot用户进行标注和解除限制的同时,自动将误判结果反馈至所述训练样本知识库。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
输入Waf访问日志;
实时检测引擎消费所述Waf访问日志,输出机器访问行为Bot用户至管控中心;
通过管控中心对检测到的Bot用户进行管控,且将管控结果反馈至自适应学习模块;
自适应学习模块根据管控结果进行更新,且将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。
一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
输入Waf访问日志;
实时检测引擎消费所述Waf访问日志,输出机器访问行为Bot用户至管控中心;
通过管控中心对检测到的Bot用户进行管控,且将管控结果反馈至自适应学习模块;
自适应学习模块根据管控结果进行更新,且将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。
本发明与现有技术相比,其显著优点为:1)创新的引入Gini系数特征分别作为Bot用户访问资源和访问频率的混乱性度量,对用户的访问混乱行为进行了客观的数字化表达;2)创新的提出稳定系数特征,其综合了变异系数和Gini系数的特性,可以形象地对用户实体访问频率的离散程度和混乱度进行综合度量,从而有效地区分正常用户和Bot用户,提高了识别率、降低了误判率,且该稳定系数具有更高的适用性;3)创新的引入Bot检测模型的自适应学习,实现自动学习的Bot用户识别,实时性高,降低了Bot检测成本并提高Bot伪装成本;4)整体方法识别准确度高,可解释性、泛化能力强,可以无缝对接WAF管理后台和防护体系,从而实现用户个性化配置和自动化编排响应;5)针对具有威胁的恶意Bot用户实体,加入动态风险库,支持威胁情报;6)支持恶意Bot的多种限制措施和识别模型的自适应学习,有效缓解了传统检测方法过于依赖安全专家和检测成本高、覆盖率低的问题。
下面结合附图对本发明作进一步详细描述。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在一个实施例中,结合图1和图2,提供了一种有效识别机器访问行为的方法,该方法包括:
步骤S01、输入Waf访问日志;
步骤S02、实时检测引擎消费所述Waf访问日志,输出机器访问行为Bot用户至管控中心;
这里,Waf访问日志中包括了正常用户的访问行为以及Bot用户的访问行为,消费Waf访问日志是指对Waf访问日志进行分析处理以区分识别出Bot用户。
步骤S03、域名管理员通过管控中心对检测到的Bot用户进行管控,且将管控结果反馈至自适应学习模块;
这里,管控手段是指对Bot用户进行不同的处理,包括:接受用户实际可接受的Bot用户,限制恶意的Bot用户,反馈被错误识别的Bot用户等等。例如,搜索引擎、友商爬虫、内部系统接口调用等Bot行为对正常业务是有益的,这些Bot用户能被用户接受,可以保留。而及时上报识别错误的Bot用户,能够提高识别的准确率。此处的限制手段除了可以由管理员用户自行实施,也可以是由管控中心结合通过大量现有信息自定义设置的默认配置进行实施。
步骤S04、自适应学习模块根据管控结果进行更新,且将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。
需要说明的是,上述步骤S01至步骤S04也可以不限于上述先后顺序执行,也可以同时执行。
上述有效识别机器访问行为方法中,是输入Waf访问日志,由实时检测引擎消费所述Waf访问日志,输出机器访问行为Bot用户至管控中心;域名管理员通过管控中心对检测到的Bot用户采取相应的管控手段,且将管控结果反馈至自适应学习模块;自适应学习模块根据管控结果进行更新,且将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。如此,即可以根据Waf访问日志识别检测出机器访问行为,且提高了检测的实时性、准确率,特别是在Waf访问日志信息量较多时,效果更为明显。此外,该方法处理最终检测出来的Bot用户的方式更加人性化,管理员用户可以根据实际需求自定义处理Bot用户,保留有益的去除恶意的。
在其中一个实施例中,上述实时检测引擎消费Waf访问日志,输出机器访问行为Bot用户至管控中心,具体包括:
系统管理员用户自定义设置全局白名单;
构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数;
实时对Waf访问日志进行特征提取,所述特征包括用户的访问总量、访问时长、访问频率稳定系数以及访问资源的Gini系数;
将提取到的特征输入至所述模型函数,输出机器访问行为Bot用户;
根据全局白名单对所述Bot用户进行过滤,并对过滤后的Bot用户进行风险等级计算后输出至管控中心。
这里,全局白名单是白名单的一种,其由系统管理员添加和管理,在实时检测模块中生效。
采用本实施例的方案,通过全局白名单限制可以筛选出系统所认为的Bot用户,将对正常业务有益的Bot用户保留,如搜索引擎、友商爬虫、内部系统接口调用等等。且能够实时更新检测模型,可以提高检测的准确性和实时性。
在其中一个实施例中,上述访问资源的Gini系数的计算公式为:
式中,pk表示一个统计时间窗口内事件k发生的概率;K表示所有事件k构成的基本事件空间;k为K中的一个事件元素;当k表示访问资源时,具体表示为访问资源的类型。
Gini系数越小,混乱度越小,表示越有可能为Bot访问行为,反之为正常用户行为。
采用本实施例的方案,将Gini系数分别作为Bot用户访问资源和访问频率的混乱性度量,对用户的访问混乱行为进行了客观的数字化表达,识别结果更加准确。
针对利用Gini系数对访问资源行为进行混乱性度量的说明:通过对大量正常请求和Bot请求的观察发现,两者在访问页面的混乱性上存在较大的区别。正常用户根据需求和主观意识去决定点击某个链接,整个访问链路更加随机;正常用户通过浏览器或APP向服务器目资源发送URL页面请求,Web服务器收到请求后向浏览器返回请求资源,然后浏览器会对接收到的网页框架文件进行解析,分析出文件中所需的嵌入对象(这些对象可能包括JS脚本、CSS、图像音频等),紧接着浏览器按照嵌入对象的顺序再次向各个对应的资源服务器发送对象请求,服务器收到这些请求后将对象传回;浏览器收到对象资源后,将它们装载进网页文件中,通过处理将一个完整的网页呈现在用户面前。在这个过程中,虽然正常用户只产生了一次“点击”请求,但实际上服务器会产生多条Web请求日志,而Bot用户则不然。Bot用户指向性比较明确,它会按照既定的策略向服务器发送一条明确的请求,服务器收到请求后将网页框架文件返回,Bot收到文件后对文件进行解析,将目的信息保留;而对于网页文件中其他的链接和嵌入对象,根据Bot性质的不同,会选择直接丢弃或是按照需求对特征定的对象链接加入到自己的访问队列中。无论Bot怎么处理,都有有一个显著的特点,就是它并不会立刻向服务器发送嵌入对象请求,因此Bot用户一次请求只会产生一条Web请求日志。综上所述,正常用户通过浏览器或者APP访问页面,产生的请求日志比较混乱,而Bot用户则比较明确和集中。如Bot黄牛或Bot爬虫,在一个时间段内会集中的去刷某个固定的接口。
Gini系数和熵具备相似的性质,均可表示随机变量的混乱性,实际上墒之半与Gini系数具有几乎重叠的函数曲线。Gini系数的计算方式不需要对数运算,相对而言效率也更高。因此,计算单个用户在一个会话窗口时间段内请求接口的Gini系数,可识别出对应场景的Bot用户,无论该Bot怎么随机化请求间隔时间和访问频率。
示例性地,在其中一个实施例中,上述访问资源的Gini系数的计算为:
假设用户在一段时间内访问的资源集合为D且满足:
D1={a,b,a,a,a,b,a,a,a,a} (2)
D2={a,b,c,d,e,f,a,c,e,f} (3)
在不考虑访问顺序的情况下,D1代表访问了a资源8次,b资源2次,则:
Gini(D1)=0.2(1-0.2)+0.8(1-0.8)=0.32 (4)
同理:
Gini(D2)=0.2(1-0.2)+0.1(1-0.1)+0.2(1-0.2)+0.1(1-0.1)+0.2(1-0.2)+0.2(1-0.2)=0.82 (5)
Gini系数越小说明其混乱度越小,越有可能是Bot行为,反之则为正常用户行为。
在其中一个实施例中,上述访问频率稳定系数的求取过程包括:
求取访问频率的Gini系数Gini(p):
式中,pk表示一个统计时间窗口内事件k发生的概率;K表示所有事件k构成的基本事件空间;k为K中的一个事件元素;当k表示访问频率时,具体表示单位时间内的访问频率;
结合变异系数Cv和访问频率的Gini系数Gini(p)求取访问频率稳定系数Cs为:
其中,变异系数Cv为:
式中,N为统计元素的个数,xi为第i个单位时间对应的访问频率,σ为访问频率的标准差,μ为访问频率的均值。
稳定系数Cs越小,则认为访问频率稳定,越有可能为Bot访问行为;反之为正常用户访问行为。
采用本实施例的方案,提出的稳定系数综合了变异系数和Gini系数的特性,既可以描述数列的离散聚合程度,又能够描述其混乱程度,是反映数列稳定程度的一种有效度量指标。同时稳定系数继承了变异系数的无量纲属性优势,因此具备良好的普遍适用性。在Bot检测的应用领域,该稳定系数可以形象地对用户实体访问频率的离散程度和混乱度进行综合度量,从而有效地区分正常用户和Bot用户,同时具备更高的识别率和更低的误判率优势。稳定系数作为一个通用的数列稳定性的统计度量指标,不仅可以用在Bot行为检测,也可以用于其他有数列稳定性度量需求的各个领域。
针对利用稳定系数对访问频率行为进行稳定性度量的说明:正常人在浏览页面的时候,在一个持续的会话期内,产生的访问请求频次波动较大(如图3所示);而Bot请求则是程序设定好的,每次请求间隔多久,或伪造随机间隔时长(如图4、图5所示)。通过观察可以很直观感受到正常用户访问频率离散程度比较高,Bot用户离散程度相对较低。标准差是总体各单位标准值与其平均数离差平方的算术平方根,能反应一组数据的离散程度:
然而每个系统的业务场景不同,访问频率也不在同一个数量级,针对这种情况采用标准差作为阈值并不是一个通用的方式。因此,利用标准差除以均值来统一下量纲,也就是变异系数(Coefficient of Variation):
由于变异系数没有量纲,这样就不需要考虑每个系统访问频率量级即可进行客观的判别。根据实际场景测试,去零后一个会话窗口内正常人访问频率变异系数都大于0.7,而Bot访问频率变异系数均小于0.5(如图6所示)。
变异系数已经能很好的区分正常用户和Bot用户在访问频率上的区别,然而在实际生产环境中发现,单纯使用变异系数作为判断依据仍会有遗漏。如图5所示,该Bot用户1秒请求1次,隔30秒会1秒请求多次,这样就导致标准差比较大,同时变异系数也较大,实际为0.867不足以判断其为Bot流量。这种情形只是变异系数无法描述的场景之一,理论上单纯用变异系数来作为判断依据就是不够充分的。
经过对大量用户的观察,发现Bot用户每秒的访问频率大多数都固定在1个或少数几个数值,而正常用户每次点击触发的请求数量更加多样化。基于这个前提,用户实体单位时间访问频率的混乱性描述,对区分正常用户Bot用户是有价值的。因此增加一个如上式1所示的访问频率的Gini系数来做个均衡(这里将不同的访问频率作为一个具体的类别,如k1可能表示每秒访问3次,k2可能表示每秒访问5次)。
正常用户访问频率随机且差异较大,Bot用户访问频率相对固定,即使随机化请求间隔时间,其单位时间的请求频次也是相对固定的。访问频率的变异系数描述了用户访问频率的离散程度,变异系数越小越有可能是Bot行为;访问频率的Gini系数则描述了用户访问频率的集中程度,Gini系数越小越有可能是Bot行为。因此从这两个角度去综合描述用户访问频率的稳定性,使两者乘积的开平方作为用户实体访问频率稳定性的度量,即为上式7所示的稳定系数。
在其中一个实施例中,上述在求取访问频率的Gini系数之前,还包括:
判断访问频率的单位统计时间是否为1秒,若是,直接求取访问频率的Gini系数;
反之,对单位统计时间内所有访问频率构成的数列先进行分箱操作,之后求取访问频率的Gini系数。
针对该实施例的说明,当单位统计时间为1秒时,按照大多数用户的访问频率的值域并不大,因此不需要分箱操作。但当单位统计时间较长,或应用在其他数列元素值域较大的领域或场景时,在计算其Gini系数之前需要对数列中元素进行适当的分箱操作。
在其中一个实施例中,上述分箱操作包括:
线性分箱操作:将数列所有元素除以一个实数后取整,即传统意义上的等距分箱操作;
非线性分箱操作:将数列所有元素取以e为底的对数后取整;
卡方分箱:对数列按照大小进行排序,根据显著性水平和自由度计算每一对相邻的元素的卡方值,然后将其中卡方值最小的一组合并为一类元素;重复上述操作,直到达到所有相邻元素的卡方值都不低于事先设定阈值或目标分组个数满足条件为止。
本实施例中,卡方分箱操作更符合数列的自然规律,但相对的具有计算复杂度高与终止条件不好设置的缺点。非线性分箱则适用于特定场景,因此在Bot检测的应用中,三者各有优劣。
示例性地,在其中一个实施例中,当Cs<0.5时,认为访问频率比较稳定,属于Bot访问频率行为。如图5的场景,其变异系数值为0.867,Gini系数值为0.058,则稳定系数值为0.225,识别为Bot。
示例性地,在其中一个实施例中,上述访问频率稳定系数的计算为:
假如有如下真实Bot与正常用户的访问频率序列S1和S2,单位统计时长为1秒:
S1={2,2,2,2,2,8,2,2,2,2} (11)
S2={1,3,3,2,3,5,3,2,2,1} (12)
则S1和S2的变异系数分别为:
S1在10每秒访问频率为2的有9次,每秒访问频率为8的有1次,也就是访问频率为2的概率是0.9,访问频率为8的概率是0.1,则S1的访问频率Gini系数为:
Gini(S1)=0.1(1-0.1)+0.9(1-0.9)=0.18 (15)
同理S2的访问频率Gini系数为:
Gini(S2)=0.2(1-0.2)+0.4(1-0.4)+0.3(1-0.3)+0.1(1-0.1)=0.7 (16)则S1和S2的稳定系数分别为:
对于Bot访问序列S1来说,只观察变异系数时,接近0.7的值不足以说明其为Bot访问行为。这时候用Gini系数来对变异系数进行平均,得到稳定系数为0.35,则更有把握判断其为Bot访问行为。同理,对正常用户访问序列S2来说,只看访问频率变异系数很可能误判为bot,当加入Gini系数来计算其平稳系数为0.56,则更有把握说其为正常用户访问行为。因此稳定系数大大减低了变异系数带来的误判率的同时,也提升了对Bot用户识别的召回率,说明稳定系数具有更强的鲁棒性。
不妨考虑下将单位统计时长设置为1分钟,对应的统计时间窗口也增至1小时,然后对每分钟统计的访问频率进行适当的分箱操作。这时候再来计算其访问频率的稳定系数,就可以发现一些通过伪造随机每秒访问频率的Bot用户。简而言之,利用稳定系数这个通用的衡量标准,在不同的单位统计时长和统计时间窗口的基础上可以检测到不同程度的Bot频率行为用户。
在其中一个实施例中,上述风险等级计算的公式为:
式中,Ls为风险等级,N为检测到的Bot用户成功访问的总次数,B为检测到该Bot用户成功访问的批次量。
在其中一个实施例中,上述构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数,具体包括:
将已标注的Bot用户和正常用户特征数据存入Hive表,形成训练样本知识库;
创建Spark任务周期性消费Hive表中的训练样本,生成Bot用户检测机器学习模型;
将所述Bot用户检测机器学习模型的参数文件以文本的形式保存至集群,构成自适应学习模块;
在分布式计算平台创建Flink实时计算任务,周期性加载集群上保存的模型参数文本,构建模型函数。
这里,Flink本身是是支持ML算法的,然而就目前的版本来说,要在一个任务中同时实现实时的WAF日志输入及特征计算、模型结果输出和周期性的消费另一个数据源进行ML模型的重训练几乎是不可行的。因此利用Spark计算引擎创建一个周期任务,通过消费每日更新的训练样本数据重新训练模型,然后将新生成的模型参数保存为一个文本文件。同时在Flink任务重创建一个与模型更新周期同步的周期读取参数文件,并在Flink中通过代码实现模型的计算逻辑。实时地将特征数据投入模型计算逻辑输出预测结果,从而最终实现Bot检测模型的自适应学习。
采用本实施例的方案,实现自动学习的Bot用户识别,实时性高,降低了Bot检测成本并提高Bot伪装成本。
在其中一个实施例中,上述域名管理员通过管控中心对检测到的Bot用户进行管控,具体包括:
域名白名单过滤:根据域名管理员设置的域名白名单对实时检测引擎检测输出的Bot用户进行过滤,并对未命中域名白名单的Bot用户进行标记;
这里,域名白名单是白名单的一种,其由各个域名管理员添加维护,部署在Bot检测服务管理后台,仅在当前系统生效。
这里,针对标记后的Bot用户,支持域名管理员对域名白名单Bot用户进行展示,也支持域名管理员一键屏蔽域名白名单Bot用户展示;
自动限制:按照域名管理员基于风险等级的Bot用户自动限制配置,对上述标记后的Bot用户采取不同的限制手段;
这里,管控中心模块对检测到的Bot用户默认不会限制,域名管理员可选择性开启默认限制功能;
这里,支持域名管理员根据各自域名的具体业务场景及对Bot流量的耐候性对自动限制策略进行调整;
这里,上述限制手段包括人机验证、限制访问速率、限制访问域名、一键封禁等等;
风险用户展示:展示上述标记过的Bot用户及对应的限制手段;
添加白名单:域名管理员根据风险用户展示结果将属于正常业务调用的标记过的Bot用户添加至域名白名单;
这里,正常业务调用的Bot用户是指某一领域能够接受、认同甚至需求的有益的Bot用户;
误判标注:对误判的标记过的Bot用户进行标注并解除对该Bot用户的限制;
智能告警:针对未进行限制的标记过的Bot用户,及时向域名管理员发送告警通知,并提示域名管理员开启自动限制功能或调整限制风险等级、误判标注、白名单添加等操作;
自动反馈:域名管理员对误判的标记过的Bot用户进行标注和解除限制的同时,管控中心自动将误判结果反馈至所述训练样本知识库,对自适应学习模块中的训练样本知识库进行更新,进而对所述Bot用户检测机器学习模型进行更新,实现自适应更新和学习。
采用本实施例的方案,可以对Bot用户进行不同的处理,包括:接受用户实际可接受的Bot用户,限制恶意的Bot用户,反馈被错误识别的Bot用户等等。例如,搜索引擎、友商爬虫、内部系统接口调用等Bot行为对正常业务是有益的,这些Bot用户能被用户接受,可以保留。而及时上报识别错误的Bot用户,能够提高识别的准确率。此处的限制手段除了可以由管理员用户自行实施,也可以是由管控中心结合通过大量现有信息自定义构建的数据库进行实施。
在一个实施例中,结合图7,提供了一种有效识别机器访问行为系统,包括:
Waf访问日志采集模块101,用于采集Waf访问日志并将其输入至实时检测引擎模块;
实时检测引擎模块102,用于消费Waf访问日志,输出机器访问行为Bot用户至管控中心模块;
管控中心模块103,用于显示Bot用户检测结果,并对检测到的Bot用户进行管控,且将管控结果反馈至自适应学习模块;
自适应学习模块104,用于根据管控结果实现自适应学习模块自身的更新,并将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。
进一步地,在其中一个实施例中,上述实时检测引擎模块包括:
全局白名单单元,该单元中所包含的Bot用户由系统管理员用户自定义设置;
识别模型构建单元,用于构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数;
特征提取单元,用于提取Waf访问日志中的特征,所述特征包括用户的访问总量、访问时长、访问频率稳定系数以及访问资源的Gini系数;
Bot用户检测单元,用于将所述特征提取单元提取到的特征输入至所述模型函数,以检测出机器访问行为Bot用户;
过滤筛选及风险评估单元,用于根据所述全局白名单单元的内容对所述Bot用户检测单元的检测结果进行过滤筛选,并对过滤筛选后的Bot用户进行风险等级计算后输出至所述管控中心模块。
进一步地,在其中一个实施例中,上述识别模型构建单元包括:
Bot用户检测机器学习模型构建子单元,用于将已标注的Bot用户和正常用户特征数据存入Hive表,形成训练样本知识库;之后创建Spark任务周期性消费Hive表中的训练样本,生成Bot用户检测机器学习模型;
自适应学习模块构建子单元,用于将所述Bot用户检测机器学习模型的参数文件以文本的形式保存至集群,构成自适应学习模块;
模型函数构建子单元,用于在分布式计算平台创建Flink实时计算任务,周期性加载集群上保存的模型参数文本,构建模型函数。
进一步地,在其中一个实施例中,上述管控中心模块包括:
域名白名单过滤子单元,用于根据自定义设置的域名白名单对实时检测引擎检测输出的Bot用户进行过滤,并对未命中域名白名单的Bot用户进行标记;
自动限制子单元,用于按照自定义设置的基于风险等级的Bot用户自动限制配置,对上述标记后的Bot用户采取不同的限制手段;
风险用户展示子单元,用于展示上述标记过的Bot用户及对应的限制手段;
白名单添加子单元,用于根据风险用户展示结果将属于正常业务调用的标记过的Bot用户添加至域名白名单;
误判标注子单元,用于对误判的标记过的Bot用户进行标注并解除对该Bot用户的限制;
智能告警子单元,用于及时向域名管理员发送未对标记过的Bot用户进行限制的告警通知,并提示域名管理员开启自动限制功能或调整限制风险等级、误判标注、白名单添加等操作;
自动反馈子单元,用于在对误判的标记过的Bot用户进行标注和解除限制的同时,自动将误判结果反馈至所述训练样本知识库,对自适应学习模块中的训练样本知识库进行更新,进而对所述Bot用户检测机器学习模型进行更新,实现自适应更新和学习。
关于有效识别机器访问行为系统的具体限定可以参见上文中对于有效识别机器访问行为方法的限定,在此不再赘述。上述有效识别机器访问行为系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
输入Waf访问日志;
实时检测引擎消费所述Waf访问日志,输出机器访问行为Bot用户至管控中心;
域名管理员通过管控中心对检测到的Bot用户进行管控,且将管控结果反馈至自适应学习模块;
自适应学习模块根据管控结果进行更新,且将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。
在其中一个实施例中,处理器执行计算机程序实现上述实时检测引擎消费Waf访问日志,输出机器访问行为Bot用户至管控中心,具体包括:
系统管理员用户自定义设置全局白名单;
构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数;
实时对Waf访问日志进行特征提取,所述特征包括用户的访问总量、访问时长、访问频率稳定系数以及访问资源的Gini系数;
将提取到的特征输入至所述模型函数,输出机器访问行为Bot用户;
根据全局白名单对所述Bot用户进行过滤,并对过滤后的Bot用户进行风险等级计算后输出至管控中心。
在其中一个实施例中,处理器执行计算机程序实现上述构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数,具体包括:
将已标注的Bot用户和正常用户特征数据存入Hive表,形成训练样本知识库;
创建Spark任务周期性消费Hive表中的训练样本,生成Bot用户检测机器学习模型;
将所述Bot用户检测机器学习模型的参数文件以文本的形式保存至集群,构成自适应学习模块;
在分布式计算平台创建Flink实时计算任务,周期性加载集群上保存的模型参数文本,构建模型函数。
在其中一个实施例中,处理器执行计算机程序实现上述访问资源的Gini系数计算,所用公式为:
式中,pk表示一个统计时间窗口内事件k发生的概率;K表示所有事件k构成的基本事件空间;k为K中的一个事件元素;当k表示访问资源时,具体表示为访问资源的类型。
Gini系数越小,混乱度越小,表示越有可能为Bot访问行为,反之为正常用户行为。
在其中一个实施例中,处理器执行计算机程序实现上述访问频率稳定系数计算,具体过程包括:
求取访问频率的Gini系数Gini(p):
式中,pk表示一个统计时间窗口内事件k发生的概率;K表示所有事件k构成的基本事件空间;k为K中的一个事件元素;当k表示访问频率时,具体表示单位时间内的访问频率;
结合变异系数Cv和访问频率的Gini系数Gini(p)求取访问频率稳定系数Cs为
其中,变异系数Cv为:
式中,N为统计元素的个数,xi为第i个单位时间对应的访问频率,σ为访问频率的标准差,μ为访问频率的均值。
稳定系数Cs越小,则认为访问频率稳定,越有可能为Bot访问行为;反之为正常用户访问行为。
在其中一个实施例中,处理器执行计算机程序实现上述求取访问频率的Gini系数之前,还包括实现:
判断访问频率的单位统计时间是否为1秒,若是,直接求取访问频率的Gini系数;
反之,对单位统计时间内所有访问频率构成的数列先进行分箱操作,之后求取访问频率的Gini系数。
在其中一个实施例中,处理器执行计算机程序实现上述域名管理员通过管控中心对检测到的Bot用户进行管控,具体包括:
域名白名单过滤:根据域名管理员设置的域名白名单对实时检测引擎检测输出的Bot用户进行过滤,并对未命中域名白名单的Bot用户进行标记;
自动限制:按照域名管理员基于风险等级的Bot用户自动限制配置,对上述标记后的Bot用户采取不同的限制手段;
风险用户展示:展示上述标记过的Bot用户及对应的限制手段;
添加白名单:域名管理员根据风险用户展示结果将属于正常业务调用的标记过的Bot用户添加至域名白名单;
误判标注:对误判的标记过的Bot用户进行标注并解除对该Bot用户的限制;
智能告警:针对未进行限制的标记过的Bot用户,及时向域名管理员发送告警通知,并提示域名管理员开启自动限制功能或调整限制风险等级、误判标注、白名单添加等操作;
自动反馈:域名管理员对误判的标记过的Bot用户进行标注和解除限制的同时,管控中心自动将误判结果反馈至所述训练样本知识库,对自适应学习模块中的训练样本知识库进行更新,进而对所述Bot用户检测机器学习模型进行更新,实现自适应更新和学习。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
输入Waf访问日志;
实时检测引擎消费所述Waf访问日志,输出机器访问行为Bot用户至管控中心;
域名管理员通过管控中心对检测到的Bot用户进行管控,且将管控结果反馈至自适应学习模块;
自适应学习模块根据管控结果进行更新,且将更新结果加载至实时检测引擎形成闭环,实现机器访问行为的自适应实时检测。
在其中一个实施例中,计算机程序被处理器执行实现上述实时检测引擎消费Waf访问日志,输出机器访问行为Bot用户至管控中心,具体包括:
系统管理员用户自定义设置全局白名单;
构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数;
实时对Waf访问日志进行特征提取,所述特征包括用户的访问总量、访问时长、访问频率稳定系数以及访问资源的Gini系数;
将提取到的特征输入至所述模型函数,输出机器访问行为Bot用户;
根据全局白名单对所述Bot用户进行过滤,并对过滤后的Bot用户进行风险等级计算后输出至管控中心。
在其中一个实施例中,计算机程序被处理器执行实现上述构建Bot用户检测机器学习模型,同时构建自适应学习模块以对所述Bot用户检测机器学习模型进行实时更新,并进一步构建模型函数,具体包括:
将已标注的Bot用户和正常用户特征数据存入Hive表,形成训练样本知识库;
创建Spark任务周期性消费Hive表中的训练样本,生成Bot用户检测机器学习模型;
将所述Bot用户检测机器学习模型的参数文件以文本的形式保存至集群,构成自适应学习模块;
在分布式计算平台创建Flink实时计算任务,周期性加载集群上保存的模型参数文本,构建模型函数。
在其中一个实施例中,计算机程序被处理器执行实现上述访问资源的Gini系数计算,所用公式为:
式中,pk表示一个统计时间窗口内事件k发生的概率;K表示所有事件k构成的基本事件空间;k为K中的一个事件元素;当k表示访问资源时,具体表示为访问资源的类型。
Gini系数越小,混乱度越小,表示越有可能为Bot访问行为,反之为正常用户行为。
在其中一个实施例中,计算机程序被处理器执行实现上述访问频率稳定系数计算,具体过程包括:
求取访问频率的Gini系数Gini(p):
式中,pk表示一个统计时间窗口内事件k发生的概率;K表示所有事件k构成的基本事件空间;k为K中的一个事件元素;当k表示访问频率时,具体表示单位时间内的访问频率;
结合变异系数Cv和访问频率的Gini系数Gini(p)求取访问频率稳定系数Cs为
其中,变异系数Cv为:
式中,N为统计元素的个数,xi为第i个单位时间对应的访问频率,σ为访问频率的标准差,μ为访问频率的均值。
稳定系数Cs越小,则认为访问频率稳定,越有可能为Bot访问行为;反之为正常用户访问行为。
在其中一个实施例中,计算机程序被处理器执行实现上述求取访问频率的Gini系数之前,还包括实现:
判断访问频率的单位统计时间是否为1秒,若是,直接求取访问频率的Gini系数;
反之,对单位统计时间内所有访问频率构成的数列先进行分箱操作,之后求取访问频率的Gini系数。
在其中一个实施例中,计算机程序被处理器执行实现上述域名管理员通过管控中心对检测到的Bot用户进行管控,具体包括:
域名白名单过滤:根据域名管理员设置的域名白名单对实时检测引擎检测输出的Bot用户进行过滤,并对未命中域名白名单的Bot用户进行标记;
自动限制:按照域名管理员基于风险等级的Bot用户自动限制配置,对上述标记后的Bot用户采取不同的限制手段;
风险用户展示:展示上述标记过的Bot用户及对应的限制手段;
添加白名单:域名管理员根据风险用户展示结果将属于正常业务调用的标记过的Bot用户添加至域名白名单;
误判标注:对误判的标记过的Bot用户进行标注并解除对该Bot用户的限制;
智能告警:针对未进行限制的标记过的Bot用户,及时向域名管理员发送告警通知,并提示域名管理员开启自动限制功能或调整限制风险等级、误判标注、白名单添加等操作;
自动反馈:域名管理员对误判的标记过的Bot用户进行标注和解除限制的同时,管控中心自动将误判结果反馈至所述训练样本知识库,对自适应学习模块中的训练样本知识库进行更新,进而对所述Bot用户检测机器学习模型进行更新,实现自适应更新和学习。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。