前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >网络入侵检测系统之Suricata(十二)--TCP重组优化

网络入侵检测系统之Suricata(十二)--TCP重组优化

原创
作者头像
于顾而言SASE
发布2024-03-20 09:57:55
960
发布2024-03-20 09:57:55
举报
文章被收录于专栏:入侵检测系统入侵检测系统

TCP重组十分耗存储资源,因此应该找到一些优化算法尽量避免TCP重组,并且又尽可能的不失流量的完整性。目前想到的有四个方面,配置限制,红黄绿名单,抽样算法以及合理的老化时长。

配置限制

红黄绿名单

红名单:恶意流量IP,当前IP所属所有流量不进行任何检测,直接阻断

黄名单:恶意流量IP,当前IP所属所有流量不进行TCP重组,但进行单包检测

绿名单:合法流量IP,当前IP所属所有流量不进行TCP重组,但进行单包检测

  1. 匹配到恶意流量后,客户端IP加入黄名单并计数加1,当前IP所属所有流量不进行TCP重组,但进行单包检测
  2. 黄名单中客户端IP达到一定计数阈值时,加入红名单,当前IP所属所有流量不进行任何检测,直接阻断
  3. 扫面线程定时扫描黄名单IP,达到一定时间阈值时,将其从黄名单中剔除掉
  4. 扫面线程定时扫描红名单IP,达到一定时间阈值时,将其从红名单中剔除掉,并添加到黄名单
  5. 匹配到合法流量后,客户端IP加入绿名单并计数加1,当前IP所属所有流量不进行TCP重组,但进行单包检测
  6. 扫面线程定时扫描绿名单IP,达到一定时间阈值时,将其从绿名单中剔除掉
  7. 抽样线程定时以计数概率抽取绿名单IP,当前IP所属所有流量进行TCP重组,如检测到恶意流量,将其从绿名单中剔除掉,并添加到黄名单

抽样算法

1. 泊松抽样

泊松抽样是随机抽样的一种,由于它不易产生同步问题,可以对周期行为进行精确测量;也不易受其它新加抽样的影响,因此,IPPM 将泊松抽样推荐为网络流量抽样的使用方法。

产生泊松分布抽样间隔步骤:

  1. 决定抽样的参数λ,例如平均抽样间隔是30 秒,时间单位为秒,那么λ=30,θ=1/30
  2. 产生一系列指数分布的(伪)随机数E1,E2,…,En,…,第一次抽样的时刻为E1,第二次抽样的时刻为E1+E2 ,依此类推,在 Ei触发时刻提取样本,一种生成指数分布的(伪)随机数Ei 的方法:在0 和1 之间产生均匀分布的U1,U2,…,Un,…(伪) 随机数,利用这些Ui 值,产生所需要的Ei 值:Ei=− log(Ui) / θ,其中log(Ui)是Ui 的自然对数
代码语言:javascript
复制
#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);
    }
    
    return fRet;
}
​
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"); 
    } 
    
    fSum/=100; 
    printf("平均值为:%-13.7f/n",fSum); 
    
    return 0;
}

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

  1. 泊松抽样函数的实现
  2. 赵阔. 高速网络入侵检测与防御[D].吉林大学,2008.
  3. 张孝国. 高性能互联网流识别算法研究[D].东南大学,2019.
  4. 危美林,张明清,董书琴,李海龙,齐先庆.面向异常流量检测的自适应抽样算法研究[J].计算机应用研究,2015,32(10):3052-3055+3059.

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • TCP重组十分耗存储资源,因此应该找到一些优化算法尽量避免TCP重组,并且又尽可能的不失流量的完整性。目前想到的有四个方面,配置限制,红黄绿名单,抽样算法以及合理的老化时长。
  • 配置限制
  • 红黄绿名单
  • 抽样算法
    • 1. 泊松抽样
    • 2. 基于流长的分层抽样
    • 流超时老化策略
    • Reference
    相关产品与服务
    网络入侵防护系统
    网络入侵防护系统(Network Intrusion Prevention System,NIPS),是基于腾讯安全服务内部数百条业务线的运维经验积累和大数据处理能力的结合,通过旁路部署的方式,提供了网络层 ACL (访问控制)和日志审计功能,解决云平台监管、ACL 控制、安全治理等问题,并辅助客户满足网安法,合规性要求。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档