suricata 3.1 源码分析8

suricata 3.1 源码分析8
CSetStartTime(&suri); 设置记录开始时间 SCDropMainThreadCaps(suri.userid, suri.groupid); 去除主线程的权限。这个是通过libcap-ng实现的,首先调用capng_clear清空所有权限,然后根据运行模式添加一些必要权限(主要是为了抓包),最后调用capng_change_id设置新的uid和gid。主线程的权限应该会被新建的子线程继承,因此只需要在主线程设置即可。 if (suri.run_mode != RUNMODE_UNIX_...

suricata 3.1 源码分析7

suricata 3.1 源码分析7
DetectEngineCtx *de_ctx = NULL; if (!suri.disabled_detect) { //detect设为启用 SCClassConfInit(); 解析Class相关正则 SCReferenceConfInit(); 解析Refference相关正则 SetupDelayedDetect(&suri); 设置是否延迟检测。若delayed-detect为yes,则系统将在载入规则集之前就开始处理数据包,这样能够在IPS模式下减少系统的down time(宕机时间)。 ...

suricata 3.1 源码分析6

suricata 3.1 源码分析6
if (suri.run_mode != RUNMODE_UNIX_SOCKET) { FlowInitConfig(FLOW_VERBOSE); 初始化Flow engine。用来表示一条TCP/UDP/ICMP/SCTP流的,程序当前所记录的所有流便组成了流表,在flow引擎中,流表为flow_hash这个全局变量,其类型为FlowBucket *,而FlowBucket中则能够存储一个Flow链表,典型的一张chained hash Table。在初始化函数FlowInitConfig中,首先会使用配置文件信息填充flow_...

suricata 3.1 源码分析5

suricata 3.1 源码分析5
if (PostConfLoadedSetup(&suri) != TM_ECODE_OK) { exit(EXIT_FAILURE); } 执行PostConfLoadedSetup,即运行那些需要在配置载入完成后就立马执行的函数。这里面涉及的流程和函数非常多 /** * This function is meant to contain code that needs * to be run once the configuration has been loaded. */ static int PostConfLoadedSetup(SCInstance *su...

suricata 3.1 源码分析4

suricata 3.1 源码分析4
GlobalInits(); 初始化全局变量。包括:数据包队列trans_q、数据队列data_queues(干嘛的?)、对应的mutex和cond、建立小写字母表。 TimeInit(); 初始化时间。包括:获取当前时间所用的spin lock,以及设置时区(调用tzset()即可)。 SupportFastPatternForSigMatchTypes(); 为快速模式匹配注册关键字。调用SupportFastPatternForSigMatchList函数,按照优先级大小插入到sm_fp_support_smlis...

MYSQL中日期与字符串间的相互转换

MYSQL中日期与字符串间的相互转换
一、字符串转日期 下面将讲述如何在MySQL中把一个字符串转换成日期: 背景:rq字段信息为:20100901 1、无需转换的: SELECT * FROM tairlist_day WHERE rq>'2010-07-31' AND rq<'2010-09-01' 2、使用:DATE_FORMAT SELECT * FROM tairlist_day WHERE DATE_FORMAT( rq, '%Y-%m-%d')>'2010-08-01' AND DATE_FORMAT( rq, '%Y-%m-%d')<'2010-08-03' 其中第1要在一个“宽松”的语法是被允许的:以任...

suricata 3.1 源码分析3

suricata 3.1 源码分析3
继续main函数下面的内容。 /* By default use IDS mode, but if nfq or ipfw * are specified, IPS mode will overwrite this */ EngineModeSetIDS(); 初始化引擎模式为IDS模式,字面上是这么理解。反正这个模式只有IPS和IDS两种,如果不清楚可以上网查。我这里就说一下主要区别。IPS会先将数据收下,进行分析后再传给后续设备或程序进行处理。而IDS模式是类似于旁路或将数据copy一份这样处理,它不会阻...

suricata 3.1 源码分析2

suricata 3.1 源码分析2
这次要说的是一个十分重要的函数 RunModeRegisterRunModes(); 主要是完成运行模式的注册,我们添加的所有运行模式都要通过这个函数注册。下面是它的内部实现。 void RunModeRegisterRunModes(void) { memset(runmodes, 0, sizeof(runmodes)); RunModeIdsPcapRegister(); //Pcap模式注册 RunModeFilePcapRegister(); //PcapFile模式注册,用于直接读取、解析pcap文件 ...
Copyright © 九毛的官方博客 保留所有权利.   Theme  Ality

用户登录