目 录
4.2 入侵检测防御技术-Snort/Security Onion 11
4.3.2.2 OPNSense与PFSense的功能差异 24
4.3.2.3 OPNSense与PFSense的性能差异 26
4.3.2.4 OPNSense与PFSense的对比结果 26
4.4 Web应用防火墙或WAF-ModSecurity+OpenResty 27
4.4.1.3 ModSecurity核心规则集(CRS) 28
4.4.3 ModSecurity+OpenResty+WASP CRS=OpenWAF 31
本次预研是对现有的关于开源的网络安全产品技术的研究。
本次预研通过了解现有市面上开源网络安全产品的相关技术、功能、架构、原理等,提供技术产品路径的可行性判断及达到快速商业化的目的,为XX网络安全业务由安全集成转向自主研发打下夯实的基础。
通过本次技术预研,对各种网络安全类型相关的开源项目(态势感知或安全运营中心-OSSIM、入侵检测防御技术-Snort/Security Onion、防火墙-PFSense/OPNSense、Web应用防火墙-ModSecurity/OpenResty、威胁情报技术-MISP/OpenCTI、漏洞扫描技术-OpenVAS/W3af、堡垒机技术-JumpServer、蜜罐技术-Tpot/Hfish)的研究,分析出落地到项目中的可行性、各类产品的差异性、自主研发时需要投入的各类资源等。
OSSIM(OPEN Source Sevurity Informatiion System):开源安全信息管理系统,由美国的Alienvault公司开发,是目前一个非常流行和完整的开源安全架构体系。OSSIM通过将开源产品进行集成,从而提供一种能够实现安全监控功能的基础平台,能够实现收集分类日志,识别并解决重大安全事件(优先级,标识出有问题的日志),满足在安全监控和日志存储方面的审计和合规需求。
开源安全信息管理平台OSSIM解决了如下的问题: 1、将nagios、Snort、OSSEC、Ntop、OpenVAS等开源软件无缝的结合在一起。2、OSSIM系统安装部署极为方便。3、实现了多平台,多架构的的日志统一收集分析。
OSSIM定位于一个集成解决方案,其目标并不是要开发一个新的系统,而是利用丰富的,强大的各种程序,包括:
常见的安全软件类的:
入侵检测模块:
Snort,Snare,OSSEC,等入侵检测系统
扫描和渗透模块:
Nessus:系统漏洞扫描和分析软件
NMap:最早是Linux下的网络扫描和嗅探工具包。
还用像P0f,Pads等。
监控模块:
Tcptrack(TCP会话实时监控)
Nagios(主机及服务可用性监控)
Ntop
还有像Spade(异常检测引擎),OpenVAS(漏洞扫描),Arpwatch(MAC异常检测)等开源软件
OSSIM虽然名字中含有SIM,其实它并不是一个SIM,因为它不具备大规模日志采集和存储能力,而是一个SEM,更偏重于实时的安全监控,实时风险评估,报警与处理。
它具有入侵检测,漏洞扫描,资产管理,安全监控,日志分析,流量分析等功能。
第一层,数据采集层:使用各种采集技术采集流量信息、日志、各种资产信息,经过归一化处理后传入核心层。
第二层,属于核心处理层,主要实现对各种数据的深入加工处理,包括运行监控、安全分析、风险评估、关联分析、资产管理、脆弱性管理、事件管理、报表管理等。
第三层,属于数据展现层,主要负责完成与用户之间的交互,达到安全预警和事件监控、安全运行监控、综合分析的统一展示,形式上以图形化方式展示给用户。
-
-
- OSSIM各个模块之间的关系
-
OSSIM系统主要使用了PHP、Python、Perl和C等四种编程语言,从软件层面上看OSSIM框架系统包括五大模块:Agent模块、Server模块、Database数据库模块、Frameworkd模块以及Framework模块。
看一下这几个模块的流程。
①Agent至Server:来自各个传感器的安全事件被对应Agent格式化后,以加密字符串传给Server。
②Server至Agent:发送有关请求命令(request command),以字符串方式向Agent传送,主要是要求Agent完成插件的启动停止及获取信息等。
③Server至Frameworkd:发送请求命令,要求Frameworkd针对Alarm采取相应操作,例如执行外部程序或发出Email来通知管理员。
④Frameworkd至Server:发送请求命令至Server。要求Server通知Agent对插件(Plugins)进行启动、停止等操作。
⑤Framework至Frameworkd:发送请求命令,要求Frameworkd启动OpenVas扫描进程。
⑥Frameworkd至Framework:传送OpenVas扫描结果在前端页面中显示。
⑦Database至Agent和Server:向Agent和Server提供数据。
⑧Server至Database:Server需要将Events、Alarms等数据存入数据库并建立索引或更新操作。
⑨Database至Frameworkd:在Frameworkd中的Openvas扫描和动作需要调用数据库里的数据。
⑩Frameworkd至Database:在Frameworkd执行过程中将Openvas扫描结果存入数据库。
⑾Database至Framework:前端页面显示需要调用数据库的告警事件。
⑿Framework至Database:用户参数设置信息需要存入数据库。
关联引擎(Server)是OSSIM安全集成管理系统的核心部分,它支持分布式运行,负责将Agents传送来的归一化安全事件进行关联分析,并对网络资产进行安全评估。工作流程如下:
Ossim使用了两种关联引擎进行安全行为的关联分析,分别是基于事件序列的关联方法和启发式的关联方法。
事件关联是将大量的安全事件过滤,压缩,归一化处理后,在提取最重要的的安全事件。
有了好的事件处理机制,还要有好的关联方法,而且不止一种关联方法。从这个图可以看到,大量标准化处理的事件被送入关联引擎之后,它们会经历事件分类处理,聚合,交叉关联,启发关联等多种关联方法,系统会根据数据库中的安全事件进行统计分类,找出经常导致安全事件的发源地和经常被攻击的端口,在这些阶段都会产生事件告警。
交叉关联:它是最常见的数据关联方式,是指事件与目标漏洞之间的关联。通过将入侵检测系统snort产生的告警信息与漏洞扫描工具nessus规则进行交叉关联。综合评估威胁程度的方法。可以将安全事件与网络拓扑、系统开放的服务、设备存在的漏洞进行关联匹配,以分析攻击成功的可能性。利用这种关联方法可以在OSSIM系统中关联规则检测到某些威胁,并实现自动响应(比如发出告警等)。
采用分布式的方式:
有一个服务器service将所有传感器传输过来的数据进行处理,进行展示。需要在每一个需要监视的部分放置sensor探针,进行数据的收集,以及归一化处理,将处理好的数据发送到service。
-
入侵检测防御技术-Snort/Security Onion
在1998年,Martin Roesch用C语言开发了开放源代码(Open Source)的入侵检测系统Snort。直至今天,Snort已发展成为一个具有多平台(Multi-Platform)、实时(Real-Time)流量分析、网络IP数据包(Pocket)记录等特性的强大的网络入侵检测/防御系统(Network Intrusion Detection/Prevention System),即NIDS/NIPS。Snort目前最新版本已更新至2.9.16。
Snort有三种工作模式:嗅探器、数据包记录器、网络入侵检测系统。嗅探器模式仅仅是从网络上读取数据包并作为连续不断的流显示在终端上。数据包记录器模式把数据包记录到硬盘上。网络入侵检测模式是最复杂的,而且是可配置的。我们可以让snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。
Snort能够对网络上的数据包进行抓包分析,但区别于其它嗅探器的是,它能根据所定义的规则进行响应及处理。Snort 通过对获取的数据包,进行各规则的分析后,根据规则链,可采取Activation(报警并启动另外一个动态规则链)、Dynamic(由其它的规则包调用)、Alert(报警),Pass(忽略),Log(不报警但记录网络流量)五种响应的机制。
Snort有数据包嗅探,数据包分析,数据包检测,响应处理等多种功能,每个模块实现不同的功能,各模块都是用插件的方式和Snort相结合,功能扩展方便。例如,预处理插件的功能就是在规则匹配误用检测之前运行,完成TIP碎片重组,http解码,telnet解码等功能,处理插件完成检查协议各字段,关闭连接,攻击响应等功能,输出插件将得理后的各种情况以日志或警告的方式输出。
-
-
-
- Snort工作过程
-
-
Snort通过在网络TCP/IP的5层结构的数据链路层进行抓取网络数据包,抓包时需将网卡设置为混杂模式,根据操作系统的不同采用libpcap或winpcap函数从网络中捕获数据包;然后将捕获的数据包送到包解码器进行解码。网络中的数据包有可能是以太网包、令牌环包、TCP/IP包、802.11包等格式。在这一过程包解码器将其解码成Snort认识的统一的格式;之后就将数据包送到预处理器进行处理,预处理包括能分片的数据包进行重新组装,处理一些明显的错误等问题。预处理的过程主要是通过插件来完成,比如Http预处理器完成对Http请求解码的规格化,Frag2事务处理器完成数据包的组装,Stream4预处理器用来使Snort状态化,端口扫描预处理器能检测端口扫描的能力等;对数据包进行了解码,过滤,预处理后,进入了Snort的最重要一环,进行规则的建立及根据规则进行检测。规则检测是Snort中最重要的部分,作用是检测数据包中是否包含有入侵行为。例如规则alert tcp any any ->202.12.1.0/24 80(msg:”misc large tcp packet”;dsize:>3000;)这条规则的意思是,当一个流入202.12.1.0这个网段的TCP包长度超过3000B时就发出警报。规则语法涉及到协议的类型、内容、长度、报头等各种要素。处理规则文件的时候,用三维链表来存规则信息以便和后面的数据包进行匹配,三维链表一旦构建好了,就通过某种方法查找三维链表并进行匹配和发生响应。规则检测的处理能力需要根据规则的数量,运行Snort机器的性能,网络负载等因素决定;最后一步就是输出模块,经过检测后的数据包需要以各种形式将结果进行输出,输出形式可以是输出到alert文件、其它日志文件、数据库UNIX域或Socket等。
- <