ossim原理初步总结.docx
- 文档编号:8800908
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:40
- 大小:2.26MB
ossim原理初步总结.docx
《ossim原理初步总结.docx》由会员分享,可在线阅读,更多相关《ossim原理初步总结.docx(40页珍藏版)》请在冰豆网上搜索。
ossim原理初步总结
OSSIM总结
一、概要
当今的网络威胁攻击复杂程度越来越高,已不再局限于传统病毒,盗号木马、僵尸网络、间谍软件、流氓软件、网络诈骗、垃圾邮件、蠕虫、网络钓鱼等严重威胁。
网络攻击经常是融合了病毒、蠕虫、木马、间谍、扫描技术于一身的混合式攻击。
拒绝服务攻击(DOS)已成为黑客及蠕虫的主要攻击方式之一。
黑客利用蠕虫制造僵尸网络,整合更多的攻击源,对目标集中展开猛烈的拒绝服务攻击。
并且攻击工具也越来越先进,例如扫描工具不仅可以快速扫描网络中存在漏洞的目标系统,还可以快速植入攻击程序。
因此,网络安全管理的重要性和管理困难的矛盾日益突出。
只有从与网络安全相关的海量数据中实时、准确地获取有用信息并加以分析,及时地调整各安全子系统的相关策略,才能应对目前日益严峻的网络安全威胁。
此外,IDS安全工具存在的错报、漏报也是促成安全集成思想的原因之一。
以IDS为例,总的来说,入侵检测的方案有基于预定义规则的检测和基于异常的检测,判断检测能力的2个指标为灵敏度和可靠性。
但不论是基于预定义规则的检测还是基于异常的检测,由于防范总是滞后于攻击,其必然会遇到漏报、错报的问题。
而安全集成则由于其集成联动分析了多个安全工具,使得检测能力即灵敏度和可靠性都得到大幅提升。
综上所述,我们需要将各网络安全子系统,包括防火墙(Mod-Security)、防病毒系统、入侵检测系统(Snort)、漏洞扫描系统(OpenVas)等整合起来,在信息共享的基础上,建立起集中的监管平台,使各子系统既各司其职,又密切合作,从而形成统一的、有机的网络防御体系,来共同抵御日益增长的网络安全威胁。
然而令人愉悦的是OSSIM(opensourceSIM)监控平台就能给实现这一点,OSSIM是各种安装软件集成在Dedian系统下的监控平台,本文就是将它的主要功能展示出来。
OSSIM把Nagios、Ntop、OpenVas、Snort、Nmap、Ossec等这些工具集成在一起提供综合的安全保护措施,而不必在各个系统中来回切换,且统一了数据存储,使得监控得到一站式的统一服务。
OSSIM通过将开源产品进行集成,从而提供一种能够实现安全监控功能的基础平台。
它的目标是提供一种集中式、有组织的,能够更好地进行监测和显示的框架式系统。
OSSIM明确定位为一个集成解决方案,其目标并不是要开发一个新的功能,而是利用丰富的、强大的各种程序。
在一个保留它们原有功能和作用的开放式架构体系环境下将它们集成起来。
OSSIM平台的核心工作在于负责集成和关联各种产品提供的信息,同时进行相关功能的整合,如图1所示。
由于开源项目的优点,这些工具已经久经考验,同时也经过全方位测试,更加可靠。
图1 OSSIM提供功能的层次结构图
二、OSSIM系统工作流程
OSSIM主体采用B/S结构。
Web服务器使用Apache,数据库采用Mysql,开发语言为Php、perl、c等,其工作流程如下:
(1)作为整个系统的安全插件的探测器(Sensor)执行各自的任务,当发现问题时给予报警。
(2)各探测器的报警信息将被集中采集。
(3)将各个报警记录解析并存入事件数据库(EDB)。
(4)根据设置的策略(Policy)给每个事件赋予一个优先级(Priority)。
(5)对事件进行风险评估,给每个警报计算出一个风险系数。
(6)将设置了优先级的各事件发送至关联引擎,关联引擎将对事件进行关联。
注意:
关联引擎就是指在各入侵检测传感器(入侵检测系统、防火墙等)上报的告警事件基础上,经过关联分析形成入侵行为判定,并将关联分析结果报送控制台。
(7)对一个或多个事件进行关联分析后,关联引擎生成新的报警记录,将其也赋予优先级,并进行风险评估,存入数据库。
(8)用户监控监视器将根据每个事件产生实时的风险图。
(9)在控制面板中给出最近的关联报警记录,在底层控制台中提供全部的事件记录。
图2OSSIM工作流程图
OSSIM安全信息集成管理系统(如图2所示)的设计可由以下几部分构成:
安全插件(Plugins)、代理进程(Agent)、传感器(Sensor)、关联引擎(Server)、数据仓库(Database)、Web框架(Framework),其逻辑结构图如下:
图3 信息安全集成管理系统逻辑结构图
2.1安全插件(plugin)
安全插件即各类安全产品和设施。
如防火墙、IDS等。
OSSIM系统引入的都是Linux下的开源安全工具:
Arpwatch、P0f、Snort、Nessus、Spade、Tcptrack、Ntop、Nagios等这些Plugins分别针对网络安全的某一方面,总体来说可以将它们划分为探测器(Detector)和监视器(Monitor)两大块的集成与关联,如图4所示。
图4安全插件展示
2.2代理进程(Agent)
代理进程将运行在多个或单个主机上,负责从各安全设备、安全工具采集相关信息(如报警日志等)的插件进行统一管理,并将采集到的各类信息统一格式,再将这些数据传至Server。
Agent的主要功能是接收或主动抓取Plugin发送过来或者生成的文件型日志,经过预处理后有序地传送到OSSIM的Server。
它的功能很复杂,因为它的设计要考虑到如果Agent和Server之间的网络中断、拥堵、丢包以及Server端可能接收不过来甚至死机等情况,确保日志不丢失也不漏发。
基于这个考虑,OSSIM的日志处理在大部分情况下不能做到实时,通常会在Agent端缓存一段时间才会发送到Server端。
Agent会主动连接两个端口与外界通信或传输数据,一个是连接Server的40001端口,另一个是连接数据库的3306端口。
2.3传感器(Sensor)
传感器通常会被我们理解为一段程序,但它不是一个确定的程序,而是一个逻辑单元的概念。
在OSSIM中,把Agent和插件构成的一个具有网络行为监控功能的组合称为一个传感器(Sensor),Sensor的功能范围主要有:
Ø入侵检测(Snort、Ossec)
Ø漏洞扫描(OpenVas)
Ø异常检测(Spade,P0f,Pads)
Ø网络流量监控与剖析(Ntop)
采集本地路由器、防火墙、IDS等硬件设备作为防火墙使用。
在具体的部署中,以上功能通常可以部署在一台服务器上,也可以分多台服务器部署。
2.4关联引擎(Server)
关联引擎是OSSIM安全集成管理系统的核心部分,支持分布式运行,负责将Agent传送来的事件进行关联,并对网络资产进行风险评估。
2.5数据仓库(database)
数据仓库由Server将关联结果写入Database,此外,系统用户(如安全管理员)也可通过Framework(Web控制台)对Database进行读写。
数据仓库是整个系统事件分析和策略调整的信息来源,从总体上将其划分为事件数据库(EDB)、知识数据库(KDB)、用户数据库(UDB),OSSIM系统默认使用的MySQL监听端口是3306,在系统中数据库的负担最重,因为它除了存储数据外,还要对其进行分析整理,所以实时性不强。
ØEDB(事件数据库):
在三个数据库中,EDB无疑是最大的,它存储的是所有底层的探测器和监视器所捕捉到的所有的事件。
ØKDB(知识数据库):
在知识数据库中,将系统的状态进行了参数化的定义,这些参数将为系统的安全管理提供详细的数据说明和定义。
ØUDB(用户数据库):
在用户数据库中,存储的是用户的行为和其他与用户相关的事件。
2.6Web框架(Framework)
Web框架控制台,提供用户(安全管理员)的Web页面,从而控制系统的运行(例如设置策略),是整个系统的前端,用来实现用户和系统的B/S模式交互。
Framework可以分为两个部分:
Frontend是系统的一个Web页面,提供系统的用户终端;Frameworkd是一个守护进程,它绑定OSSIM的知识库和事件库,侦听端口是40003,负责将Frontend收到的用户指令和系统的其他组件相关联。
三、OSSIM日志处理流程
3.1日志处理原理
设备把日志信息以syslog的形式发给agent,日志存储在agent上面的/var/log/xxx.log下面,agent调用/etc/OSSIM/agent/plugins下面对应的插件来/var/log/xxx.log下面取对应的日志,然后根据插件里面写的正则表达式来提取日志的关键字段发给server,server再将日志分析之后在OSSIM上面呈现出来。
/etc/OSSIM/agent/plugins下面的插件可以是系统自带的插件,还可以自己来编写插件(plugin_id=9000~10000),核心是掌握正则表达式的写法,能够根据不同的日志来提取自己感兴趣的内容。
并且要让agent调用某个插件还需要在这个/etc/OSSIM/agent/config.cfg文件里面写上插件的路径,以下展示config.cfg部分插件的调用。
[plugins]
apache=/etc/OSSIM/agent/plugins/apache.cfg
apache-syslog=/etc/OSSIM/agent/plugins/apache-syslog.cfg
freewaf=/etc/OSSIM/agent/plugins/freewaf.cfg
iis=/etc/OSSIM/agent/plugins/iis.cfg
。
。
。
iptables=/etc/OSSIM/agent/plugins/iptables.cfg
monit=/etc/OSSIM/agent/plugins/monit.cfg
nagios=/etc/OSSIM/agent/plugins/nagios.cfg
ntop-monitor=/etc/OSSIM/agent/plugins/ntop-monitor.cfg
ossec=/etc/OSSIM/agent/plugins/ossec.cfg
OSSIM-agent=/etc/OSSIM/agent/plugins/OSSIM-agent.cfg
OSSIM-monitor=/etc/OSSIM/agent/plugins/OSSIM-monitor.cfg
p0f_eth0=/etc/OSSIM/agent/plugins/p0f_eth0.cfg
ssh=/etc/OSSIM/agent/plugins/ssh.cfg
sudo=/etc/OSSIM/agent/plugins/sudo.cfg
syslog=/etc/OSSIM/agent/plugins/syslog.cfg
websense=/etc/OSSIM/agent/plugins/websense.cfg
这些日志事件,在前端WEB界面显示,并记录事件的时间、来源和目的IP,以及事件内容等,如下图所示,在后面还会详细介绍到WEB端显示以及事件内容。
图5OSSIM-Agent事件日志记录
3.2可视化日志分析工具
除了OSSIM的WEB端可以显示记录系统产生的日志和插件行为生成的日志,本系统还可以集成可视化日志分析工具gltail,它采用 Ruby 技术构建,并利用 OpenGL 图形技术进行渲染,呈现可视化的日志分析数据,以气泡数量来反映网站的访问情况。
其主要功能如下:
Ø实时显示日志;
Ø支持多服务器及多日志;
Ø提供多种日志分析器(ApacheCombinedIISPostfixNginxSquidPostgreSQLPureFTPDMySQLTShark等各种格式的日志)
Ø支持 SSH 连接,也就是说你可以直接在本地通过 SSH 获取远程数据并进行分析。
Ø可视化方面:
可动态显示 http 传输流量,响应时间,Email 传输流量,FTP 下载信息等。
安装好后,配置XXX/gltail/bin下gl_tail.yaml文件,以显示access.log日志文件为例,其配置如下:
device:
host:
192.168.8.200#本地主机
source:
local
files:
/var/log/apache2/access.log#acceess日志路径
parser:
apache#使用的感测器
color:
0.2,0.2,1.0,1.0
运行./gl_tail文件,可以获得动态化日志显示。
图6access.log日志读取
图中反映事件是源IP:
192.168.8.130对OSSIM服务器的访问,以气泡数量来反映量的大小,由此图提供的访问量可以初步估计192.168.8.130不正常,可能有攻击性,CONTENT内容为page表示web应用数据的访问。
图7官网提供的gltail工作画面
由上图可以很形象直观的看出日志记录的时间行为(ACTION)、源IP(SRCHOST)和目的IP(DSTHOST)、源端口号(SRCPORT)、目的端口号(DSTPORT)、事件在传输层的协议(TCP/UDP)以及源与目的之间的访问速度。
四、OSSIM功能层次结构
4.1工具集
4.1.1入侵检测
入侵检测就是一个监视计算机系统或者网络上发生的事件,然后对其进行安全分析的过程。
大多数的入侵检测系统都可以被归入到基于网络、基于主机以及分布式三类。
基于网络的入侵检测系统能够监视网络数据发现入侵或者攻击的蛛丝马迹;基于主机的入侵检测系统能够监视针对主机的活动(用户的命令、登录/退出过程,使用的数据等等),以此来判断入侵企图;分布式IDS通过分布于各个节点的传感器或者代理对整个网络和主机环境进行监视,中心监视平台收集来自各个节点的信息监视这个网络流动的数据和入侵企图。
各种入侵检测系统使用的检测方法可以分为两类:
基于特征码的检测方法和异常检测。
使用基于特征码检测方法的系统从网络获得数据,然后从中发现以知的攻击特征。
例如:
在某些URL中包含一些奇怪的Unicode编码字符就是针对IIS-Unicode缺陷的攻击特征。
此外各种模式匹配技术的应用,提高了这种检测方法的精确性。
使用异常检测的系统能够把获得的数据与一个基准进行比较,检测这些数据是否异常,典型的入侵检测模型如下图。
图8典型的入侵检测系统模型
4.1.1.1Snort
Snort是一个功能强大、跨平台、轻量级的网络入侵检测系统,从入侵检测分类上来看,Snort应该是个基于网络和误用的入侵检测软件。
它可以运行在Linux、OpenBSD、FreeBSD、Solaris、以及其它Unix系统、Windows等操作系统之上。
Snort是一个用C语言编写的开放源代码软件,符合GPL(GNU通用公共许可证GNUGeneralPublicLicense)的要求,由于其是开源且免费的,许多研究和使用入侵检测系统都是从Snort开始,因而Snort在入侵检测系统方面占有重要地位。
Snort对系统的影响小,管理员可以很轻易地将Snort安装到系统中去,并且能够在很短的时间内完成配置,方便地集成到网络安全的整体方案中,使其成为网络安全体系的有机组成部分。
虽然Snort是一个轻量级的入侵检测系统,但是它的功能却非常强大,其特点如下:
Ø跨平台性
可以支持Linux、Solaris、UNIX、Windows系列等平台,而大多数商用入侵检测软件只能支持一、两种操作系统,甚至需要特定的操作系统。
Ø功能完备
具有实时流量分析的能力,能够快速地监测网络攻击,并能及时地发出警报。
使用协议分析和内容匹配的方式,提供了对TCP、UDP、ICMP等协议的支持,对缓冲区溢出、隐蔽端口扫描、CGI扫描、SMB探测、操作系统指纹特征扫描等攻击都可以检测。
Ø使用插件的形式
方便管理员根据需要调用各种插件模块。
包括输入插件和输出插件,输入插件主要负责对各种数据包的处理,具备传输层连接恢复、应用层数据提取、基于统计的数据包异常检测的功能,从而拥有很强的系统防护功能,如使用TCP流插件,可以对TCP包进行重组:
输出插件则主要用来将检测到的报警以多种方式输出,通过输出插件可以输出Mysql、SQL等数据库中,还可以以XML格式输出,也可以把网络数据保存到TCPDump格式的文件中;按照其输出插件规范,用户甚至可以自己编写插件,自己来处理报警的方式并进而作出响应,从而使Snort具有非常好的可扩展性和灵活性。
ØSnort规则描述简单
Snort基于规则的检测机制十分简单和灵活,使得可以迅速对新的入侵行为做出反应,发现网络中潜在的安全漏洞。
Snort基于libpcap的嗅探器并没有什么特别的,unix/linux平台下大部分嗅探器都是基于此。
当网卡工作在混杂模式下可以截获当前网段下所有数据包。
需要说明的是,只有处于HUB集线器环境下的机器snort是可以嗅探到所有流经该网段的数据,此时snort可以并行连接于该网段任一机器;但是现今的网络HUB集线器多被交换机取代,而此时需要将snort串行于需要服务的网络,snort才可以接受并处理该网段数据。
当然在企业内部建设一个稳定的NIDS不可能使用hub以及arp欺骗,更可靠的方案是使用流量镜像的方式将流量从核心交换机将流量“镜像”到IDS服务器上,然后启动snort处理流量。
Snort的主要系统组成和基本的数据处理流程:
图9Snort工作架构图
1、数据包捕获库
基于网络的入侵检测系统需要捕获并分析所有传输到监控网卡的网络数据,这就需要包捕获技术,Snort通过两种机制来实现,其一是将网卡设置为混杂模式,另一方式则是利用Libpcap/Winpcap函数库从网卡捕获网络数据包。
数据包捕获函数库是一个独立的软件工具,能直接从网卡获取数据包。
Libpcap支持所有基于可移植操作系统接口(PortableOperatingSystemInterfaceofUnix,POSIX)的操作系统,如Linux、Unix等,后来为支持跨平台特性,又开发了Windows版本(http:
//www.winpcap.org),Windows下和Linux的函数调用几乎完全相同,Snort就是通过调用该库函数从网络设备上捕获数据包。
2、数据包解码器
数据包解码器主要是对各种协议栈上的数据包进行解析、预处理,以便提交给检测引擎进行规则匹配。
解码器运行在各种协议栈之上,从数据链路层到传输层,最后到应用层,因为当前网络中的数据流速度很快,如何保障较高的速度是解码器子系统中的一个重点。
目前,Snort解码器所支持的协议包括Ethernet、SLIP和PPP等。
3、预处理器
预处理模块的作用是对当前截获的数据包进行预先处理,以便后续处理模块对数据包的处理操作。
由于最大数据传输单元(MTU)限制及网络延迟等问题,路由器会对数据包进行分片处理。
但是恶意攻击者也会故意发送经过软件加工过的数据包,以便把一个带有攻击性数据包分散到各个小的数据包中,并有可能打乱数据包传输次序,分多次传输到目标主机。
因此,对异常数据包的处理也是入侵检测系统的重要内容。
预处理器主要包括以下功能:
1)模拟TCP/IP堆栈功能的插件,如IP碎片重组、TCP流重组插件;2)各种解码插件:
HTTP解码插件、Unicode解码插件、RPC解码插件、Telnet解码插件等;3)规则匹配无法进行攻击检测时所用的插件:
端口扫描插件、Spade异常入侵检测插件、Bo检测插件、ARP欺骗检测插件等。
根据各预处理插件文件名可对此插件功能做出推断。
4、检测引擎
检测引擎是入侵检测系统的核心内容,Snort用一个二维链表存储它的检测规则,其中一维称为规则头,另一维为规则选项。
规则头中放置的是一些公共属性特征,而规则选项中放置的是一些入侵特征。
Snort从配置文件读取规则文件的位置,并从规则文件读取规则,存储到二维链表中。
Snort的检测就是二维规则链表和网络数据匹配的过程,一旦匹配成功则把检测结果输出到输出插件。
为了提高检测速度,通常把最常用的源/目的IP地址和端口信息放在规则头链表中,而把一些独特的检测标志放在规则选项链表中。
规则匹配查找采用递归的方法进行,检测机制只针对当前己经建立的链表选项进行检测,当数据包满足一个规则时,就会触发相应的操作。
Snort的检测机制非常灵活,用户可以根据自己的需要很方便地在规则链表中添加所需要的规则模块。
数据包匹配算法采用经典匹配算法—多模式匹配算法(AC-BM),采用二维链表和经典匹配算法都是为了提高与网络数据包的匹配速度,从而提高入侵检测速度。
5、日志和报警子系统
输出方式采用输出插件方式,输出插件使得Snort在向用户提供格式化输出时更加灵活。
输出插件在Snort的报警和记录子系统被调用时运行。
日志和报警子系统可以在运行Snort的时候以命令行交互的方式进行选择,如果在运行时指定了命令行的输出开关,在Snort规则文件中指定的输出插件会被替代。
现在可供选择的日志形式有三种,报警形式有六种。
Snort可以把数据包以解码后的文本形式或者TCPDump的二进制形式进行记录。
解码后的格式便于系统对数据进行分析,而TCPDump格式可以保证很快地完成磁盘记录功能,而第三种日志机制就是关闭日志服务,什么也不做。
使用数据库输出插件,Snort可以把日志记入数据库,当前支持的数据库包括:
Postgresql、MySQL、Oracle以及任何UnixODBC数据库。
4.1.1.2suricata
Suricata是一个IDS/IPS工具,由开放信息安全基金会以及它所支持的提供商开发。
该引擎是多线程的,内置IPv6的支持,可加载预设规则,支持Barnyard和Barnyard2工具。
在所有目前可用的IDS/IPS系统中,Suricata最能够与Snort相抗衡。
该系统有一个类似Snort的架构,依赖于像Snort等的签名,甚至可以使用VRTSnort规则和Snort本身使用的相同的EmergingThreat规则集。
Suricata的主要特性有多线程、自动检测协议、gzip解压缩、独立HTP库、标准的输入法、统一的两输出、流动变量、快速的IP匹配、HTTP日志模块、PostgreSQL日志模块、显卡加速、Windows可执行文件、Lua脚本、前向输出、文件匹配,记录,提取,MD5校验和计算、IPreputation、DNS记录器。
图10suricata工作流程
ØIDS/IPS
Suricata是利用外部开发规则,当可疑事件发生suricata以此规则为基础来监控IDS/IPS引擎网络流量,并提供警报给系统管理员。
该设计与现有的网络安全组件相兼容,Suricata拥有统一的输出功能,并且可插入库选项,以接受来自其他应用程序调用。
根据通用公共许可证第二版,Suricata消除了启动IDS/IPS的成本问题,同时提供了一个可扩展选项,以达成最复杂的网络安全架构。
Ø多线程
作为一个多线程的引擎,在网络流量分析方面Suricata提供更快的速度和效率。
除了硬件加速(用硬件和网络卡的限制)时,该引擎是建立能够利用由最近的多核CPU的芯片组可以提供更强的处理能力。
线程有一个输入队列处理程序和输出队列的处理程序。
这些程序从其他线程来获取数据包。
一个线程可以被设置为CPU/Core模式。
这种模块存储在ThreadVars结构中。
一段代码可完成线程1、2、3。
这样所创建的线程被称为“Detect1”,并从队列“流队列1”中获得,detect1也成为slot函数,也就是一个预先设置的检测引擎上下文的指针。
thread模块描述。
一个线程模块被定义为数据包处理单元。
该模块可以执行从分组获取任何东西来进行解码,以检测到告警。
其中的一个或多个模块可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ossim 原理 初步 总结