网络入侵检测系统之 Suricata(十二)--TCP 重组优化
TCP 重组十分耗存储资源,因此应该找到一些优化算法尽量避免 TCP 重组,并且又尽可能的不失流量的完整性。目前想到的有四个方面,配置限制,红黄绿名单,抽样算法以及合理的老化时长。
配置限制
红黄绿名单
红名单:恶意流量 IP,当前 IP 所属所有流量不进行任何检测,直接阻断
黄名单:恶意流量 IP,当前 IP 所属所有流量不进行 TCP 重组,但进行单包检测
绿名单:合法流量 IP,当前 IP 所属所有流量不进行 TCP 重组,但进行单包检测
匹配到恶意流量后,客户端 IP 加入黄名单并计数加 1,当前 IP 所属所有流量不进行 TCP 重组,但进行单包检测
黄名单中客户端 IP 达到一定计数阈值时,加入红名单,当前 IP 所属所有流量不进行任何检测,直接阻断
扫面线程定时扫描黄名单 IP,达到一定时间阈值时,将其从黄名单中剔除掉
扫面线程定时扫描红名单 IP,达到一定时间阈值时,将其从红名单中剔除掉,并添加到黄名单
匹配到合法流量后,客户端 IP 加入绿名单并计数加 1,当前 IP 所属所有流量不进行 TCP 重组,但进行单包检测
扫面线程定时扫描绿名单 IP,达到一定时间阈值时,将其从绿名单中剔除掉
抽样线程定时以计数概率抽取绿名单 IP,当前 IP 所属所有流量进行 TCP 重组,如检测到恶意流量,将其从绿名单中剔除掉,并添加到黄名单
抽样算法
泊松抽样泊松抽样是随机抽样的一种,由于它不易产生同步问题,可以对周期行为进行精确测量;也不易受其它新加抽样的影响,因此,IPPM 将泊松抽样推荐为网络流量抽样的使用方法。
产生泊松分布抽样间隔步骤:
决定抽样的参数λ,例如平均抽样间隔是 30 秒,时间单位为秒,那么λ=30,θ=1/30 产生一系列指数分布的(伪)随机数 E1,E2,…,En,…,第一次抽样的时刻为 E1,第二次抽样的时刻为 E1+E2 ,依此类推,在 Ei 触发时刻提取样本,一种生成指数分布的(伪)随机数 Ei 的方法:在 0 和 1 之间产生均匀分布的 U1,U2,…,Un,…(伪) 随机数,利用这些 Ui 值,产生所需要的 Ei 值:Ei=− log(Ui) / θ,其中 log(Ui)是 Ui 的自然对数 #include "stdlib.h"#include <time.h>double Uniform(double a,double b,long int*seed){double t;seed=2045(*seed)+1;*seed=*seed-(*seed/1048576)*1048576;t=(*seed)/1048576.0;t=a+(b-a)*t;return(t);}double Poisson(double lambda, long nSeed){double u = Uniform(0.0, 1.0, &nSeed);double fRet = log(u) * (-1) *lambda;if(fRet < 1.0){return Poisson(lambda, ++nSeed);}
}int main(int argc, char* argv[]){double fPoint,fSum;int i,j;int nLambda = 30;srand((unsigned)time( NULL ));
fSum = .0;for(i=0;i<10;i++){for(j=0;j<10;j++){fPoint = Poisson(nLambda , rand());fSum += fPoint;printf("%-13.7f", fPoint);}printf("/n");}
}2. 基于流长的分层抽样网络流量具有两个显著特点: a) 短流的数量远远多于长流的数量; b) 采用相同的抽样概率,短流被抽样的概率远小于长流被抽样的概率。通常情况下,异常攻击流量如 DDoS、端口扫描和蠕虫传播等都是短流形式,所以,为了确保后续异常攻击流量检测的有效性,在设计抽样算法时必须提高短流的抽样精度。
检测到异常流量时,设置自适应抽样的抽样概率为 p1 = 0.2,p2 = 0.1,p3 = 0.01,未检测到异常流量时,设置为固定抽样概率 p = 0.2
流超时老化策略
令常数 T1、TN 表示两个超时阈值,T1<TN,常数 tg 表示一个时间粒度常量,且 TN-T1 是 tg 的整数倍数,如果我们使用超时阈值集合{T1, T1+tg, ......,TN},对同一 IP trace 进行网络流识别的话,将会产生一系列的网络流集合,这些网络流集合中的网络流数量,按照其对应超时阈值的顺序进行排列将构成一个数列{FT1, FT1+tg, ......, FTN}。
对于任意一个超时阈值 t,当使用它对某个 IP trace 进行网络流识别时,其生成的所有网络流数量记为 Ft,对于比它大的后一个超时阈值 t+tg,基于相同的 IP trace 生成的所有网络流数量记为 Ft+tg,那么就可以得到超时阈值 t 对应的网络流数量变化率,标记为 CPFNt:
MC:网络流数量变化率集合的平均值
RC:网络流数量变化率平均值 MC 的四分之三
合理的 TCP 网络流超时阈值不仅需要大于所有的 MC 波动超时阈值,而且需要其所对应的网络流数量变化率小于合理参考值 RC,这样的超时阈值称为合理超时阈值,能够保障 TCP 网络流的完整性。同时,考虑到 TCP 网络流的识别效率问题,则选择合理超时阈值中的最小值作为该 IP trace 网络流量数据的超时阈值,因此:
在当前的网络环境下 64 秒对于网络流识别而言,是一个合理的超时阈值经验值,能够在一定程度上保障网络流的完整性和识别率
Reference
赵阔. 高速网络入侵检测与防御[D].吉林大学,2008.
张孝国. 高性能互联网流识别算法研究[D].东南大学,2019.
危美林,张明清,董书琴,李海龙,齐先庆.面向异常流量检测的自适应抽样算法研究[J].计算机应用研究,2015,32(10):3052-3055+3059.
版权声明: 本文为 InfoQ 作者【于顾而言】的原创文章。
原文链接:【http://xie.infoq.cn/article/59db17e26f561b719f91d0f79】。文章转载请联系作者。
评论