snort原理、搭建与应用

参考链接:blog.sina.com.cn/s/blog_976123090100w299.html

1、Snort IDS概述

网络入侵检测系统:

①实时数据流量分析和记录IP网络数据包;

②进行协议分析,对网络数据包内容进行搜索/匹配;

③检测各种不同的攻击方式,对攻击进行实时报警;

④开源的入侵检测系统,具有很好的扩展性和可移植性。


2、Snort IDS体系结构

Snort IDS体系结构

由4大软件模块组成:

① 数据包嗅探模块——负责监听网络数据包,对网络进行分析。

② 预处理模块——该模块用相应的插件来检查原始数据包,从中发现原始数据的“行为”,如端口扫描、IP碎片等,数据包经过预处理后才传到检测引擎。

③ 检测模块——该模块是Snort的核心模块。当数据包从预处理器送过来后,检测引擎依据预先设置的规则检查数据包,一旦发现数据包中的内容和某条规则相匹配,就通知报警模块;

(4)报警/日志模块——经检测引擎检查后的Snort数据需要以某种方式输出。如果检测引擎中的某条规则被匹配,则会触发一条报警,这条报警信息会通过网络、UNIXsocket、WindowsPopup(SMB)、SNMP协议的trap命令传送给日志文件,甚至可以将报警传送给第三方插件(如SnortSam),另外报警信息也可以记入SQL数据库。


3、Snort三种工作方式

三大基本功能:嗅探器、数据包记录器和入侵检测。

嗅探器模式仅从网络上读取数据包并作为连续不断的流显示在终端上,常用命令:snort -dev。

数据包记录器模式是把数据包记录到硬盘上,常用命令:snort -b。

网络入侵检测模式是最复杂的,而且是可配置的。我们可以让Snort分析网络数据流以匹配用户定义的一些规则,并根据检测结果采取一定的动作。


4、Snort规则

(1)Snort规则定义

Snort使用一种简单的规则描述语言,这种描述语言易于扩展,功能也比较强大。Snort规则是基于文本的,规则文件按照不同的组进行分类,比如,文件ftp.rules包含了FTP攻击内容。

「注」Snort的每条规则必须在一行中,它的规则解释器无法对跨行的规则进行解析。

Snort的每条规则都可以分成逻辑上的两个部分:规则头和规则体。规则头包括4个部分:规则行为;协议;源信息;目的信息。

Snort预置的规则动作有5种:(此外,用户还可以定制自己的类型)

① pass——动作选项pass将忽略当前的包,后继捕获的包将被继续分析。

② log——动作选项log将按照自己配置的格式记录包。

③ alert——动作选项alert将按照自己配置的格式记录包,然后进行报警。它的功能强大,但是必须恰当的用,因为如果报警记录过多,从中攫取有效信息的工作量增大,反而会使安全防护工作变得低效。

④ dynamic——动作选项dynamic是比较独特的一种,它保持在一种潜伏状态,直到activate类型的规则将其触发,之后它将像log动作一样记录数据包。

⑤ activate——动作选项activate功能强大,当被规则触发时生成报警,并启动相关的dynamic类型规则。在检测复杂的攻击,或对数据进行归类时,该动作选项相当有用。

规则体的作用是在规则头信息的基础上进一步分析,有了它才能确认复杂的攻击。Snort的规则定义中可以没有规则体。规则体由若干个被分别隔开的片断组成,每个片断定义了一个选项和相应的选项值。一部分选项是对各种协议的详细说明,包括IP、ICMP和TCP协议,其余的选项是:规则触发时提供给管理员的参考信息,被搜索的关键字,Snort规则的标识和大小写不敏感选项。

Eg:

altert tcp !192.168.0.1/24 any -> any 21 (content:"USER";msg: "FTP Login";)

alert表示规则动作为报警。

tcp表示协议类型为TCP协议。

!192.168.0.1/24表示源IP地址不是192.168.0.1/24。

第一个any表示源端口为任意端口。

->表示发送方向操作符。

第二个any表示目的IP地址为任意IP地址。

21表示目的端口为21。

content:"USER"表示匹配的字符串为“USER”。

msg:"FTPLogin"表示报警信息为“FTPLogin”。

方向操作符->表示数据包的流向。它左边的数据包分别是源地址和源端口,目的地址和目的端口。此外,还有一个双向操作符<>,它使Snort对这条规则中,两个IP地址/端口之间的数据传输进行记录/分析。Eg:

activate tcp any any -> any 23 (activates:111;msg:"Telnet Login";)

dynamic tcp any any -> any 23 (activated:111;count:20;)

当发现Telnet默认使用的23端口有通信,activate规则会被触发并启动dynamic规则,然后dynamic规则将遵循配置,记录后面的20个数据包。

在上面的例子里activate规则的“activates”值为111,dynamic规则的“activated_by”值为111,这样就把两个规则关联起来,而不是因为这两个规则有相同的规则头。

(2)预处理综述

预处理器在调用检测引擎之前,在数据包被解码之后运行。通过这种机制,Snort可以以一种outofband的方式对数据包进行修改或者分析。

预处理器可以使用preprocessor关键词来加载和配置,常用到的预处理器如下:

① HTTPdecode预处器:处理HTTPURL字符串,把它们转换为清晰的ASCII字符串。

② 端口扫描器portscan:把由单个源IP地址发起的端口扫描从开始到结束的全过程记录到标准日志。

③ stream处理器:为snort提供了TCP数据包重组的功能。在配置的端口上,stream处理器能够对TCP数据包的细小片段进行重组,使之成为完整的TCP数据包,然后snort可以对其可疑行为进行检查。

④ frag2处理器:为snort提供了IP分片重组的功能。frag2预处理器能够对分片包进行重组来定位分片攻击,它的工作原理是将所有的分片重组构造成一个包含完整信息的数据包,再将这个包传给检测引擎。


5、Snort应用

Snort采用命令行方式运行。格式为:snort –[options] <filters>。options为选项参数;filters为过滤器。

(1)Snort主要选项参数

-A:设置报警方式为full,fast或者none。在full方式下,snort将传统的报警信息格式写入报警文件,报警内容比较详细。在fast方式下,snort只将报警时间,报警内容,报警IP地址和端口号写入文件。在none方式下,系统将关闭报警功能。

-a:显示ARP包。

-b:以tcpdump的格式将数据包记入日志。所有的数据包将以二进制格式记录到snort.log文件中。这个选项提高了snort的操作速度,因为直接以二进制存储,省略了转换为文本文件的时间,通过-b选项的设置,snort可以在100Mbps的网络环境中正常工作。

-c:使用配置文件。文件内容主要控制系统哪些包需要记入日志,哪些包需要报警,哪些包可以忽略等。

-C:仅抓取包中的ASCII字符。

-d:抓取应用层的数据包。

-D:在守护模式下运行snort。

-e:显示和记录数据链路层信息。

-F:从文件中读取BPF过滤信息。

-h:设置(C类IP地址)为内部网络。当使用这个开关时,所有从外部的流量将会有一个方向箭头指向右边,所有从内部的流量将会有一个左箭头。这个选项没有太大的作用,但是可以使显示的包的信息格式比较容易察看。

-i:使用网络接口文件。

-l:将包信息记录到目录下。设置日志记录的分层目录结构,按接收包的IP地址将抓取的包存储在相应的目录下。

-n:处理完包后退出。

-N:关闭日志功能,报警功能仍然工作。

-p:关闭混杂模式的嗅探(sniffing)。这个选项在网络严重拥塞时十分有效。

-r:读取tcpdump生成的文件,snort将读取和处理这个文件。

-s:将报警信息记录到系统日志,日志文件可以出现在/var/log/messages目录里。

-v:将包信息显示到终端时,采用详细模式。这种模式存在一个问题:它的显示速度比较慢,如果你是在IDS网络中使用snort,最好不要采用详细模式,否则会丢失部分包信息。

-V:显示版本号,并退出。

(2)Filters过滤器

Snort的是标准的BPF格式的过滤器。

Snort应用了BPF机制,可以在探测器上书写和执行BPF规则的文件。BPF机制允许用户书写快速的包分析规则,这些规则主要基于源、目的、和其他的头信息。通过嗅探和BPF,我们可以只捕获需要的流量,这样就减轻了需要处理的数据量。

BPF机制很容易理解,可以用于分析TCP、UDP、IP和ICMP协议。规则语法很像自然的口语,使用“and”和“or”作为规则操作符,用“not”作为取反符,此处还可以用括号来告诉引擎将一系列数据作为一个整体来处理。

例如:ICMP捕获:icmp。

telnet请求数据包捕获:tcp and dst port 23。

记录所有源自网络192.168.0.0/24,目的是202.98.0.0/24的IP流量:ip and "src net 192.168.0 " and "dst net 202.98.0 "。

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

推荐阅读更多精彩内容

  • 前言 防火墙可以比喻为办公室门口的警卫,用来检查进出者的身份。而入侵检测系统就像是网上的警报器,当发现入侵者时,指...
    小天是我见过最单纯善良的人阅读 32,042评论 1 15
  • 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者...
    保川阅读 5,903评论 1 13
  • Snort规则被分成两个逻辑部分:规则头和规则选项。规则头包含规则的动作,协议,源和目标ip地址与网络掩码,以及源...
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 夜深人静,一个人静静看着天空。静静的想着,只剩下满天的星光陪着我。 想做个小女人,女人之所以坚强是因为没有办法。我...
    丁香夜语阅读 240评论 0 1