一、结构
CIDF模型(Common Intrusion Detection Framework):
包含事 件生成器(event generator:E-boxes),分析引擎(analysis engines:A-boxes),存储机制(storage mechanisms:D-boxes),以及响应模块(countermeasures:C-boxes)
SNORT数据流
snort
并没有原生的数据包抓取功能,基于一个外部的数据包修改库: libpcap 实现了这个功能。事实上,
2.9
版本的
snort
还可以配置使用其他的包抓取模块,它实现了一个
DAQ 模块
,对如
libpcap
进行了上层封装。先在可选的替代有如
BPF(Berkeley Packet Filter),PF_RING 等。snort的数据流如下图所示:
还有很多snort其他相关的内容,我并不过多的深入了解了,工作中主要对snort规则进行编写,所以着重于对snort规则编写进行笔记的记录
二、编写Snort规则
拿一条规则来举例:
alert tcp any any -> any any (msg:"xxx"; sid:12345;)
规则头
动作actions
Action(动作)
|
描述
|
仅支持 Inline mode
|
alert |
基于规则对应的告警消息生成一个警告,并将数据包记录日志
|
|
log
|
将数据包记录日志
|
|
pass
|
忽略这个数据包
|
|
Drop
|
使用 iptables 丢弃这个数据包并将数据包记录入日志
|
yes |
Reject
|
使用 iptables 丢弃数据包,记录日志,并发送一个 TCP reset(TCP
协议),或者发送一个 ICMP 端口不可达消息(UDP 协议)
|
yes |
Sdrop
|
使用 iptables 丢弃数据包,但不记录日志(silent drop)
|
yes |
协议protocol
Snort
已经支持的协议有
IP,TCP,UDP,ICMP.
IP
地址可以支持
CIDR
模式,
/24
代表一个
C
段网络,
/16
代表一个
B
段网络,
/32
代表一个特定机
器地址。
端口号
port
端口号可以被顶一个多种方式,包括静态的端口定义、端口范围、或者取反。
”any”
则指任意端口。
方向操作符
direction
仅支持两种方向操作符:
”->” “<>”
通用规则选项
keyword | 描述或范例 |
msg |
|