snort日志分析和管理工具
2001年08月20日13:57:03
简介
1.什么是入侵检测
2.什么是snort
3.什么是日志分析
4.snort的日志格式
4.1.基于文本的格式
4.2.tcpdump格式
4.3.数据库
5.工具
5.1.管理基于文本日志的工具
5.2.基于tcpdump日志文件的分析工具
5.3.数据库分析工具
总结
参考
简介
snort是一个轻量级的网络入侵检测系统,它可以记录所有可能的入侵企图。记录信息的文件可以是文本、XML、libpcap格式,也可以把把信息记录到syslog或者数据库。本文将介绍一些用于snort日志管理的工具。不过,本文无法囊括所有的分析工具。因为snort作为一个自由、健壮的入侵检测系统,受到很多人的关注,因此针对它开发的工具层出不穷。
本文将介绍的工具主要针对三种输出格式:文本、libpcap(也就是tcpdump格式)和数据库。我们将主要介绍这些工具的安装和功能。
1.什么是入侵检测
入侵检测就是一个监视计算机系统或者网络上发生的事件,然后对其进行安全分析的过程。大多数的入侵检测系统都可以被归入到基于网络、基于主机以及分布式三类。基于网络的入侵检测系统能够监视网络数据发现入侵或者攻击的蛛丝马迹;基于主机的入侵检测系统能够监视针对主机的活动(用户的命令、登录/退出过程,使用的数据等等),以此来判断入侵企图;分布式IDS通过分布于各个节点的传感器或者代理对整个网络和主机环境进行监视,中心监视平台收集来自各个节点的信息监视这个网络流动的数据和入侵企图。
各种入侵检测系统使用的检测方法可以分为两类:基于特征码的检测方法和异常检测。使用基于特征码检测方法的系统从网络获得数据,然后从中发现以知的攻击特征。例如:在某些URL中包含一些奇怪的Unicode编码字符就是针对IIS Unicode缺陷的攻击特征。此外各种模式匹配技术的应用,提高了这种检测方法的精确性。使用异常检测的系统能够把获得的数据与一个基准进行比较,检测这些数据是否异常。例如:如果一个雇员的工作时间是上9点到下午5点,但是在某个晚上他的计算机记录了他曾经在半夜登录了公司的邮件服务器,这就是一个异常事件,需要深入调查。现在,大量的统计学方法用于这个领域。
2.什么是snort
snort是一个基于libpcap的轻量级网络入侵检测系统。它运行在一个“传感器(sensor)”主机上,监听网络数据。这台机器可能是一台简陋的运行FreeBSD系统的Pentium100 PC,并且至少有一个网卡。不过建议使用最好的机器作为进行入侵检测的主机。snort能够把网络数据和规则集进行模式匹配,从而检测可能的入侵企图;或者使用SPADE插件,使用统计学方法对网络数据进行异常检测。
snort使用一种易于扩展的模块化体系结构,感兴趣的开发人员可以加入自己编写的模块来扩展snort的功能。这些模块包括:HTTP解码插件、TCP数据流重组插件、端口扫描检测插件、FLEXRESP插件以及各种日志输入插件等。
snort还是一个自由、简洁、快速、易于扩展的入侵检测系统,已经被移植到了各种UNIX平台和WinY2K上。同时,它也是目前安全领域中,最活跃的开放源码工程之一。snort还是昂贵的商业入侵检测系统最好的替代产品之一。
3.什么是日志分析
入侵检测系统(例如:snort)安装成功后,并不表示一切都万事大吉了,你还有许多事情要做。snort启动后,它会在的硬盘上记录大量的报警信息。因此,你需要工具对日志或者报警文件进行分析。不同你的需要和安全形势,要求你使用不同的工具。你可能只要一个日志汇总,或者你的经理要求你提供一个最近15次攻击的报告。还有,对于某个报警你可能需要获取更多的信息,以便做进一步的研究。不管是出于什么目的,日志分析可以帮助你从日志中获取有用的信息,使你可以针对攻击威胁采取必要措施。
4.snort的日志格式
你可以通过修改配置文件来设置snort的报警形式。基于文本的格式、libpcap格式和数据库是snort最重要的三种报警形式。本文中,我将主要对每种报警形式及其配置进行介绍,然后我将针对这些数据格式介绍一些分析工具。
4.1.基于文本的格式
报警文件
如果在启动snort时,你使用了-A [fast|full|none]选项,snort就会把报警信息保存到一个文件中。例如:
[**] INFO - ICQ Access [**]
[Classification: content:"MKD / "] [Priority: 0]
05/10-10:02:31.953089 10.1.1.1.:54835 -> 10.2.2.5:80
TCP TTL:127 TOS:0x0 ID:13690 IpLen:20 DgmLen:482 DF
***AP*** Seq: 0x112BDD12 Ack: 0x11B38D8A Win: 0x4510
TcpLen: 20
其中,[Classification: content:"MKD / "] [Priority: 0]是报警的分类和优先级,这是snort 1.8beta版开始加入的新特征。
syslog文件
取消snort.conf文件中以下几行的注释,可以使snort向系统日志文件中日志数据:
output alert_syslog: LOG_AUTH LOG_ALERT
输出格式如下:
May 10 00:03:38 xxxxxx snort: INFO - ICQ Access [Classification:
content:"MKD / " Priority: 0]: 10.1.1.1:54352 -> 10.2.2.5:80
CSV文件
Brian Caswell为snort编写了CSV输出插件。通过这个插件,snort可以使用CSV格式记录数据。它的配置非常容易,只要在snort.conf文件中加入以下的配置行:
output CSV: /your/filename timestamp,msg,proto,src,dst
然后,这个输出插件就会向/your/filenames文件输出如下格式的信息:
05/10-10:02:31.953089, INFO - ICQ Access, TCP,10.1.1.1,10.2.2.5
你可以使用默认配置选项default,而勿需指定任何域。在配置文件中,你可以使用复合CSV输出,建立多个输出文件,在每个文件中记录需要记录的域。
XML格式
snort的XML输出插件是Jed Pickel和Roman Danyliw开发的,是AIRCERT(Automated Incident-Reporting)工程的一个组成部分。snort使用这个插件可以把日志数据或者报警信息以XML格式保存到本地文件和输出到一个中心数据库,或者发送到CERT进行处理。这些数据使用SNML格式,SNML是简单网络标记语言(Simple Network Markup Language)或者snort标记语言(SNort Markup Language)的缩写。你可以从http://www.cert.org/kb/snortxml获得更为详细的信息。
XML输出插件支持HTTP、HTTPS和IAP(入侵报警协议,Intrusion Alert Protocol)协议。它的数据可以使用HEX、BASE64或者ASCII编码。
下面是XML输出插件的配置示例:
output xml: log, file=/var/log/snort/snortxml
这一配置行使snort把产生的日志信息输出到以/var/log/snort/snortxml-MMDD@HHMM命名的文件中,其中MMDD是月、日,HHMM是时、分。
output xml: alert,protocol=https host=your.server.org file=yourfile cert=mycert.crt key=mykey.pem ca=ca.crt server=srv_list.lst
这一配置行使snort使用HTTPS协议把产生的输出送到远程服务器your.server.org的文件yourfile。cert、key、ca与SSL有关。server参数可以设置连接的服务器列表。
下面是一个输出示例:
<event version="1.0">
<sensor encoding="hex" detail="full">
<interface>fxp0</interface>
<ipaddr version="4">10.3.3.3</ipaddr>
<hostname>test.someserver.org</hostname>
</sensor>
<signature>RPC portmap listing</signature>
<timestamp>2001-05-09 19:43:05+00</timestamp>
<packet>
<iphdr saddr="192.89.3.5" daddr="10.3.3.3" proto="17" ver="4" hlen="5"
len="64" >