入侵检测IDS学习--snort规则

来源:互联网 发布:盘古排序指标源码 编辑:程序博客网 时间:2024/05/18 19:38

1.入侵检测的检测引擎就是通过对规则选项的分析构成了Snort 检测引擎的核心。选项主要可以分为四类,

第一类是数据包相关各种特征的描述选项,比如:content、flags、dsize、ttl等;

第二类是规则本身相关一些说明选项,比如:reference、sid、classtype、priority等;

第三类是规则匹配后的动作选项,比如:msg、resp、react、session、logto、tag等;

第四类是选项是对某些选项的修饰,比如从属于content的nocase、offset、depth、regex等


2.规则树第一层:
第一层是RuleListNode结构,这里将规则按照5种动作分类处理;

对应的结构体定义为:
typedef struct _RuleListNode
{
ListHead *RuleList; /* 指向ListHead结点*/
int mode; /* 规则链结点类型*/
int rval; /*标记位*/
int evalIndex; /* 规则编号*/
char *name; /* 规则链名*/
struct _RuleListNode *next; /*下一个规则链结点*/
} RuleListNode; 


规则树第二层:
第二层是ListHead结构,将规则所涉及的协议按照4种协议动作分类处理,

对应的结构体定义为:
typedef struct _ListHead
{
RuleTreeNode *IpList; /*指向IP规则树结点*/
RuleTreeNode *TcpList; /*指向IP规则树结点*/
RuleTreeNode *UdpList; /*指向IP规则树结点*/
RuleTreeNode *IcmpList; /*指向IP规则树结点*/
} ListHead;


规则树第三层:
层次三为RuleTreeNode结构,将规则所涉及的源ip,目的ip,源端口,目的端口,数据流向构造多个的结构体结点分类处理。

对应的结构体定义为:
typedef struct_RuleTreeNode/*攻击特证树结点*/
{
int head_node_number;
int type;
u_long sip;/*源IP地址*/
u_long smask;/*源子网掩码*/
u_long dip;/*目的IP地址*/
u_long dmask;/*目的子网掩码*/
u_short hsp;/*源端口号结束值*/
u_short lsp;/*源端口号起始值*/
u_short hdp;/*目的端口号结束值*/
u_short ldp;/*目的端口号起始值*/
u_int32_t flags; /*流向记录*/
struct_RuleTreeNode*right;/*指向下一攻击特征*/
OptTreeNode*down;/*指向描述这条攻击特征的选项链*/
}RuleTreeNode;


 规则树第四层:
层次四为OptTreeNode结构,将对规则选项进行解析,构造结构体结点给对应变量赋值。

对应的结构体定义为:
typedef struct_OptTreeNode /*特征选项结点*/
{
OptFpList opt_func;/*检测函数*/
Void*ds_list;/*在系统中增加插件时需增加的各类数据指针*/
int chain_node_number;/*选项结点个数*/
int type;/*告警类型,alert,log,or pass*/
…;
char*message;/*告警信息*/
struct_OptTreeNode*next;/*指向下一选项结点*/
struct_RuleTreeNode*rtn ;/*指向规则头结点RTN*/
}OptTreeNode;


0 0