基于分布式流计算平台(storm)的CGI采集与清理系统
博文作者:雕哥
发布日期:2014-01-09
阅读次数:56
博文内容:
CGI好比Web漏洞扫描器的眼睛,只有CGI更全更准,Web漏洞扫描器才能更好的“看到”漏洞,为业务的Web安全保驾护航。本文简单介绍了基于分布式流计算平台Storm的海量CGI采集去重系统——Storm-Cgi。
1、开源分布式流计算平台Storm简介
Storm是一个由Twitter公司开源的与Hadoop并驾齐驱的分布式,实时流计算系统。可以简单、可靠的处理大量的数据流。
1.1、Storm系统的主要特点
a、简单的编程模型。类似于MapReduce降低了并行批处理复杂性,Storm降低了进行实时处理的复杂性。
b、可以使用各种编程语言。你可以在Storm之上使用各种编程语言。默认支持Clojure、Java、Ruby和Python。要增加对其他语言的支持,只需实现一个简单的Storm通信协议即可。
c、容错性。Storm会管理工作进程和节点的故障。
d、水平扩展。计算是在多个线程、进程和服务器之间并行进行的。
e、可靠的消息处理。Storm保证每个消息至少能得到一次完整处理。任务失败时,它会负责从消息源重试消息。
f、快速。系统的设计保证了消息能得到快速的处理,可以使用ØMQ或Netty作为其底层消息队列。
1.2、Storm的组成
Storm编程中的主要术语包括Stream、Spout、Bolt、Task、Worker、Stream Grouping和Topology。大体结构如下图:
1.3、Storm的广泛应用
Storm在国内外的应用都相当广泛,包括Twitter,Yahoo等,国内公司有阿里,淘宝,腾讯,百度,360等。
2、Storm-Cgi系统整体架构
Storm-Cgi系统,采集CGI的来源主要有三种,分别是IDS光纤旁路出来HTTP请求日志文件,门神旁路的HTTP请求日志文件,还有Web2.0爬虫抓取的URL。Storm-Cgi中的Spout组件Valid_Rewrite_Spout从这些数据源中抓取CGI,并进行合法性过滤和Rewrite过滤, Http探测过滤,最终得到高质量的实际存在的CGI。Storm-Cgi系统还能从CGI库中读取库存CGI数据,进行迭代过滤,保证库存CGI数据的准确有效性。Storm-Cgi系统的整体架构如下图一所示。
图一 Storm-Cgi整体结构
3、主要模块的设计
3.1、Valid_Rewrite_Spout
该模块负责从各数据源采集CGI,并做合法性过滤与Rewrite过滤。Valid_Rewrite_Spout会从不同格式的数据源中抓取出统一格式的CGI,并进行合法性验证与Rewrite过滤。合法性过滤包括:Host合法性验证,URL的Path段合法性过滤,请求的UA过滤,静态资源过滤等。Rewrite过滤能自动生成Rewrite规则,并迭代得过滤库存的CGI。
3.2、Pv_Bolt
Storm-Cgi系统读取的数据源包括了旁路的HTTP请求日志,在一段时间间隔内,必定有大量重复请求的CGI数据,这些数据其实只需要一个CGI走后续的过滤流程即可,避免重复CGI过滤带来的资源耗损。所以,Pv_Bolt模块的作用是拦截重复的CGI数据,起到降流去重的作用。数据显示,5分钟内,一个CGI被重复请求的次数有时可高达3万多次,平均10ms就被请求一次。
Pv_Bolt就是CGI的统计缓存,缓存中统计了一个CGI在一段时间内的PV值和缓存它时的时间戳。该缓存中的CGI采用的淘汰算法为最近最少使用算法(LRU),将一段时间内PV小于3的CGI清理出去,避免缓存过大导致内存耗尽。同时,根据时间戳,将时间戳超过一定阈值的CGI也清理掉。这样,保证了CGI数据不会因后续流程故障等原因导致遗漏。
3.3、HttpAccess_Bolt
HttpAccess_Bolt的主要功能是对CGI进行HTTP探测过滤,探测一个CGI是否存在,即存在性验证。一个CGI的返回码HttpCode为404表示该CGI不存在,可以被过滤掉。还包括其他类型的CGI存在性验证过滤。比如公司不存在的页面都引用了一个公益404页面,这种CGI也可别过滤掉。
HTTP探测过滤的规则可配置,能动态加载。过滤规则为一个JSON字符串。形式如图二所示
图二 HTTP探测规律规则形式
HTTP探过滤规则的设计,能支持全局过滤规则和特定域名的过滤规则两种,目前通用的HTTP探测规则主要有:公益404,图片404,HttpCode过滤等。HTTP探测过滤规则中最主要的是rule字段,它由多个规则子项组成,各规则子项是逻辑与的关系。只有当所有规则子项都为真时,该条HTTP探测规律规则才匹配。匹配了过滤规则的CGI将认为不存在,将被过滤掉。公益404页面的过滤规则可写成图三形式:
图三 公益404过滤规则
4、效果
目前,Storm-Cgi是由分布在不同IDC机房的13台机器组成的小分布式集群,每天可处理2T左右的日志文件,每天平均过滤4亿个CGI数据,从中采集到5万左右准确的CGI(部分CGI在CGI库中已经存在)。整体效果如下图。
图四 Storm-Cgi分布式集群列表
图五 Storm-Cgi各组件过滤情况
5、总结
Storm-Cgi能从大量的数据中实时地采集出海量的CGI数据,并通过合法性过滤,Rewrite过滤,HTTP探测过滤,最终得到准确的CGI数据,供Web漏洞扫描器做安全漏洞扫描。它好比Web漏洞扫描器的眼睛,能让Web漏洞扫描器透过海量脏的URL数据,看到真实准确的CGI,从而发现Web安全漏洞,使漏洞无处遁形。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
谷歌大牛Jeff Dean是如何成为互联网战神的
原文链接:http://bugfixed.org/?p=307 “光在真空中的速度曾经是大约每小时35英里,然后Jeff Dean花了一个周末优化了基础物理学。”——出自“关于Jeff Dean的事实” 其实,“关于Jeff Dean的事实”这个G+帖中描述的并非是真实的。不过有人大费周折为他建立了一个类似于“关于Chuck Norris 的事实”这样的网站,这倒是件不同寻常的事。这是因为Jeff Dean是一位软件工程师,而软件工程师们通常是不会像武术界的战神Chuck Norris那样的。一方面,他们不是独行侠,软件开发从本质上来讲是一个协作过程。另一方面,他们也从来不会像这个视频里面的Chuck Norris那样用冲锋枪来打牛仔。 译注:Chuck Norris(查克·诺里斯)是空手道世界冠军、美国电影演员。他有另一个更为人所共知的译名“罗礼士”,出自功夫名片《猛龙过江》。 他发展电影事业初期,在李小龙执导的武打电影《猛龙过江》中饰演一名空手道高手Colt,与李小龙在罗马斗兽场决斗,公认是经典的武打场面。(摘自维基百科) Jeff Dean 然而,在2007年的愚人节,一些慕名而...
- 下一篇
大数据工具篇之Hive与MySQL整合完整教程
一、引言 Hive元数据存储可以放到RDBMS数据库中,本文以Hive与MySQL数据库的整合为目标,详细说明Hive与MySQL的整合方法。 二、安装驱动 MySQL最新的Java驱动版本为:mysql-connector-java-5.1.28-bin.jar,下载后拷贝到:Hive/Lib目录。 三、安装MySQL 3.1 版本 RHEL5+mysql-5.5.35-1.i386.rpm 3.2 顺序 MySQL-shared-compat-5.5.35-1.rhel15.i386.rpm MySQL-server-5.5.35-1.rhel5.i386.rpm MySQL-client-5.5.35-1.rhel5.i386.rpm 四、配置文件 修改Hive配置文件Hive-site.xml,修改后的结果如下所示: 1 <property> 2 <name>javax.jdo.option.ConnectionURL</name> 3 <value>jdbc:mysql://localhost:3306/hivedb?cha...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主