Snort日志输出插件详解

Snort是一款老牌的开源入侵检测工具,本文主要讨论他作为日志分析时的各种插件的应用。Snort的日志一般位于:/var/log/snort/目录下。可以通过修改配置文件来设置Snort的报警形式。基于文本的格式、Libpcap格式和数据库是Snort最重要的三种报警形式。本文主要对每种报警形式及其配置进行介绍。

工作模式及输出插件

Snort拥有3种工作模式,分别为嗅探器模式、分组日志模式与网络入侵检测模式。

(1)嗅探器模式

Snort使用Libpcap包捕获库,即TCPDUMP使用的库。在这种模式下,Snort使用网络接口的混杂模式读取并解析共享信道中的网络分组。

该模式使用命令如下:

#snort -v

注意:这里的参数是小写字母v,而大写V则是显示snort版本。以上只显示TCP/IP网络数据包头信息,如果想查看详细的应用层数据信息,则需要输入以下命令:

#snort –vd

如果希望查看数据链路层的包头信息,使用如下信息:

#snort  –vde

还有一个类似“-d”参数的,“-X”它会从数据链路层开始输出原始数据包。

如果想将Snort作为IDS使用,不建议在命令行下使用“-vd”尤其是“-ved”参数,因为详细模式将数据包信息打印到控制台,这样严重影响了Snort的性能很容易引起丢包,这样分析数据不准确。

2数据包记录模式

如果想将数据信息记录到磁盘上某个文件,那就需要使用Packet logger模式。

命令如下:

#snort –ved –l  ./log

  这时Snort会把数据链路层、Tcp/IP报头及应用层信息写入当前目录log(log目录已建立)目录下的snort.log.140493321文件中,而且这是二进制文件。你也许会问,ASCII格式的日志文件格式非常好识别,为什么不直接记录成ASCII格式呢?因为系统本生记录的格式就是二进制的,如果再转换成我们能识别的ASCII格式无疑会加重系统负荷,所以Snort在做IDS使用时理应采用二进制格式记录,另外还要注意:“-l”参数是小写字母l

如果想查看所记录的日志就得使用“r”参数。

操作实例如下:

#snort –dvr snort.log.140493321

还可以提取部分感兴趣的数据,例如只读取ICMP包,输入如下命令:

#snort –dvr snort.log.140493321 icmp

只读取tcp包,输入如下命令:

#snort –dvr snort.log.140493321 tcp

如果想记录某个网段的数据呢,操作命令如下:

alienvault:~# snort -vde -l ./log -h 10.3.14.0/24

下面做个比较复杂的实验,环境是OSSIM 3.1  32位 平台

首先在控制台上启动:

#snort –l /var/log/snort/  -c /etc/snort/snort.eth0.conf

当结束命令^c时显示。

Alerts数量就是在日志里看到的记录数量,这两者一致。

在另一个控制台查看日志情况。

#tail –f /var/log/auth.log

这时,我们可以在SIEM控制台,中看到如图1所示。

图1 SIEM控制台

网络入侵检测模式HIDS

HIDS模式是大家需要掌握的重点,这种模式集成了嗅探模式和日志模式,并且需要载入规则库才能正常工作。操作方式如下:

#snort –vde –l ./log –h 10.32.14.0/24 –c /etc/snort/snort.eth0.conf

注意,当前目录下有log目录,如果制定-l ./log 参数系统会默认将日志存在/var/log/snort/目录下。

snort.conf文件中包含了指定检测规则的具体路径。

4 输出插件

输出插件的作用是将报警数据输出到显示器或转储到文件。所以对于Snort而言输出插件就是系统的主要瓶颈,Snort本身能对封包进行快速读取和分析处理,但是试图将其显示输出,或者存储到数据库中时却有些力不从心。如何将Snort日志记录到一个指定文件呢?我们通过执行命令(假设/var/log/snort/yourfile文件存在)来记录。

#snort –L yourfile

那么,这时系统自动将snort日志保存到/var/log/snort/yourfile文件中。有关日志输出的方法还有几个,我们稍后详细讲解。后续文章我会给大家一个方法,配置Snort统一格式输出并且有Snort的标准日志应用Barnyard负责输出。这里我们先看看Snort的输出插件。

1). -A alert-mode

在入侵检测模式中alert-mode有fast、full、unsock和none四种模式。

(1)fast

fast是一种快速简单的输出插件,之所以快是因为它只记录timestamp(时间戳)、signature(特征)、source IP、destinationIP、source port、destination port、TCP flags和Protocol。使用方法如下:

#snort –A fast

注意,上面的命令是不保存的,如果希望保存到文件(当不适用-l参数默认保存位置是/var/log/snort/),命令如下:

#snort –A fast –h 10.32.14.0/24 –c /etc/snort/snort.eth0.conf

(2)full

Full对每个产生警报的IP将其解码后的包记录下来。与fast不同的是,它记录地更全面。这也是它的预设告警模式。

(3)unsock

这个插件的作用是建立一个UNIX域管道并向它发送警报。当然其它进程也可对该管道进行监听,目的是实时接收Snort警报数据。注意一点这个功能和Windows系统无法配合使用。

#snort –A unsock

(4)none

这个插件作用是关闭警报。

大家只需掌握-A参数后面跟的四个参数的含义,了解这四个参数只是让Snort能已不同的方式报警。

2). tcpdump格式输出

有时候需要将Snort日志输出成tcpdump文件格式的记录包,因为这样可以让多种应用程序和工具读取tcpdump,这时我们如下操作(以OSSIM 3.1系统为例):

(1) 编辑snort.conf

#vi /etc/snort/snort.eth0.conf

找到 389行,启用output log_tcpdump: tcpdump.log。

(2)保存退出,并重启Snort服务使其配置生效。

(3)查看tcpdump.log。

alienvault:/var/log/snort# ls -l

-rw------- 1 root  adm     504 Jul 14 22:02 tcpdump.log.1405389707

-rw------- 1 root  adm    3410 Jul 14 22:45 tcpdump.log.1405392066

(3)CSV格式输出

CSV(Comma Separated Value)是用逗号分隔值的,是文本文件。采用CSV格式的目的主要考虑向其它数据库或电子表格软件输入。CSV格式可以记录24个字段如表1所示。

表1规则选项关键字含义

序号关键字作用

1Timestamp时间戳

2Msg特征码名称

3Proto协议

4Src源地址

5Srcport源端口

6dst目标地址

7dstport目标端口

8ethsrc源MAC

9ethdst目标MAC

10ethlen以太网帧长度

11tcpflagsTCP标志位

12tcpseqTCP序列号

13tcpackTCP ack号

14tcplenTCP长度

15tcpwindowtcp窗口值

16ttlip头的ttl的值

17tosIP头中TOS字段的值

18idip头的分片id值

19dgmlen数据报的总长度,包括数据报头和数据报文

20iplenIP包长度

21icmptypeICMP类型

22icmpcodeICMP代号,缺省为0

23icmpidICMP报文IP头的ID,缺省是随机的

24icmpseqICMP ECHO顺序号的值

实现csv格式输出方法:

编辑snort_eth0.conf。

添加:output alert_csv: csv.out 后面缺省有24个关键字,我们也可按上图的参数输入

查看csv输出

alienvault:/var/log/snort# tail -f csv.out

07/15-00:29:51.254425 ,"GPL SHELLCODE x86 inc ebx NOOP",,,,,,,

07/15-00:29:51.357178 ,"GPL SHELLCODE x86 inc ebx NOOP",,,,,,,

07/15-00:29:54.541833 ,"ET P2P eMule Kademlia Hello Request",,,,,,,

07/15-00:29:54.541846 ,"ET P2P eMule Kademlia Hello Request",,,,,,,

07/15-00:31:55.606599 ,"ET DNS Non-DNS or Non-Compliant DNS traffic on DNS port Opcode 6 or 7 set - Likely Kazy",,,,,,,

以下是24个参数全部启用的效果。默认为全部启用除非指定具体参数。

在snort_eth0.conf加入:

output alert_csv: csv.out

一行即可。

查看SIEM控制台输出。

当设置成功csv输出后,可以查看OSSIM系统下SIEM控制台的日志输出,如下图3所示。

图3 SIEM控制台日志输出

我们发现两种不同警报方式的结果都是一行,很显然OSSIM系统的SIEM控制台显示出的警报更人性化。

(4)syslog输出

Syslog服务器能从各种服务和设备(网络设备,Web服务器等)收集日志信息。将Snort警报数据写入syslog服务器对于分析网络入侵事件有帮助。它可以与其它工具谢工执行实时报警和通知,所以这也是Snort一个比较重要的插件之一。

最简单方法是打开snort_eth0.conf将384行的output alert_syslog: LOG_AUTH LOG_ALERT这行启用,并重启Snort即可生效。我们使用如下命令观察Snort发出的警报:

#tail –f /var/log/auth.log

Syslog配置选项

Syslog三个重要配置选项:

l Facility

l Priority

l Options

启用选项的命令如下:

方法很简单,在上面的技术上加上这三个参数即可。

output alert_syslog: LOG_AUTH LOG_ALERT facility  priority options

保存退出并重启Snort即可。

这时,如果启用了csv输出,可以将syslog,csv输出做个对比,如图4所示(上部分为csv输出,下部分为auth.log输出)。

图4输出结果比较

我们发现同样一个攻击事件的报警,在它们的输出中除了各式不统一以外,其它都相同。

(5)数据库输出

   数据库输出插件可以将日志记录到关系型数据库中,它支持MySQL等。当数据库插件被关联到数据库后,就可以实现对Snort报警进行分类、查询和按优先级组织排序,甚至利用应用程序对数据库中的告警数据通过GUI界面展现给用户。

   在千兆网络环境下需要考虑性能问题,数据库插件有可能影响到Snort性能,插件自身并不是瓶颈,当大量数据写入数据库时,必须等待磁盘I/O相应,这时就会受到影响。如果通过网络将日志存储到另一台主机的数据库中那么延迟会比较大。后面我们会采用Barnyard+Unified的方式解决这种性能问题。

   主要思路是让Snort采用Unified的格式存储,以它的最大速度处理输出数据,而不是像传统的要等到写盘完成后,再继续操作,这样浪费了大量的时间。Barnyard能将二进制数解析成与它能够识别的各种格式,并且是完全独立于Snort运行。警报被立刻写入数据库并且不影响Snort的抓包能力。所以说这种组合适合于高带宽环境。

我们还是查看/etc/snort/snort.eth0.conf配置文件,大约392行。

这里有2个重要的选项alert和log。

393行可以选择奖警报数据写入数据库,394行可以同时将日志数据也写入数据库。

下面我们看看如何使用数据库插件:

对照上面参数配置如下选项:

为mysql

User=为snortdb_username或者为Snort传感器创建的MySQL用户名。

Password= 为snortdb_password或为Snort传感器创建snortdb_username的MySQL口令。

Dbname=为snortdb或者自己指定的入侵数据库名称。

Host=为本机环路地址127.0.0.1

(6)输出unixsock

通过Alert_unixsock打开UNIX套接字,并且把报警信息发送到那里。外部的程序/进程会在这个套接字上侦听并实时接收这些报警数据。

例子:

output alert_unixsock

加入到snort.eth0.conf配置文件后,重启Snort服务即生效。还可以通过以下命令手动启动:

# snort -c /etc/snort/snort.eth0.conf

此时会在/var/log/snort/下产生snort_alert文件

为了演示这一功能我们通过一小段程序(本地进程间的通讯),来看看效果如何。以下Perl程序,其主要功能是将Snort传送的数据报文的报警名称通过读取unixsock信息实现打印到屏幕。

执行此Perl程序,结果如下。

我们看到显示在屏幕的5条警报名称。

(7)Unified格式输出

前面介绍了多种输出插件各异利弊,下面介绍OSSIM系统中常用的unified插件。这种插件的最大特点就是速度快,它能最快的输出Snort报警信息和日志信息,它输出两类文件:警报文件和数据包日志文件,警报文件仅记录摘要信息,内容包括源IP、目的IP、协议、源端口、目的端口、报警消息ID、日志文件包含完整的包信息,用户可以自己下载。

设置方法是启用以下配置语句:

Output unified2: filename snort_eth0, limit 128

Filename后设置输出警报文件名称为snort_eth0。

Limit代表输出文件允许的最大长度,默认值为128MB

以上几种插件为snort常用方式尤其在日志分析中用的比较多,如果你刚接触snort可以OSSIM3的环境中进行练习。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 前言 防火墙可以比喻为办公室门口的警卫,用来检查进出者的身份。而入侵检测系统就像是网上的警报器,当发现入侵者时,指...
    小天是我见过最单纯善良的人阅读 32,414评论 1 15
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 我心中一叹,果然自己又来早了。自从前年爷爷走了,家庭聚会的氛围也就越来越淡了。自己从同学聚会上出来的时间是越来越晚...
    徒维123阅读 295评论 2 0
  • 入行不久的产品新人,在“道”和“术”上都会有欠缺的地方。 “道”,更接近于狭义上的“产品”,是对用户痛点的解读和需...
    Sharonisherenow阅读 181评论 3 1
  • 获取图形化payload msf > use exploit/windows/local/bypassuacmsf...
    Instu阅读 568评论 0 0