二次开发suricata支持规则加解密(Centos7)

二次开发suricata支持规则加解密(Centos7)

一、需求
  • 支持AES对称加密算法的对应解密

    • 支持规则base64解码

    • 内置key,iv,暂不做配置文件配置支持

    • 使用Zero填充算法

    • 支持redis事件外发

    • 不改变原有其他功能

二、开发思路
  • github下载源码包
  • /src目录下查找根据suricata.yaml配置加载规则路径,规则文件的处理入口
  • 进一步定位到具体规则文件的读取、逐行处理函数,位置
  • 编写aes解密函数,实现解密功能,提供对外调用函数
  • 在定位的逐行处理位置插入解密调用,完成解密功能的插入
  • 准备linux打包编译环境,根据官方指导完成编译打包
  • 提取二进制文件,依赖的.so文件,在其他正常部署的服务器替换重启
三、具体实现
  1. 下载源码包
    地址:https://github.com/OISF/suricata
    
  2. 明确规则文件加载模块:
    /src/detect-engine-loader.c
    
  3. 明确规则文件读取函数DetectLoadSigFile:
    static int DetectLoadSigFile(DetectEngineCtx *de_ctx, char *sig_file, int *goodsigs, int *badsigs, int *skippedsigs){
    	......
    }
    
  4. 明确规则文件打开,逐行处理位置
    ......
        
    FILE *fp = fopen(sig_file, "r");
    if (fp == NULL) {
         
    SCLogError("opening rule file %s:"
          " %s.",sig_file, strerror(errno));
        return -1;
    }
    
    while(fgets(line + offset, (int)sizeof(line) - offset, fp) != NULL) {
         
      ......
    }
    fclose(fp);
    ......
    
  5. 编写aes解密模块
    1. aes.crypto.h

      
      #ifndef _AES_CRYPTO_H_
      #define _AES_CRYPTO_H_
      
      #define AES_BLOCK_SIZE 16
      
      int aes_cbc_decrypt(unsigned char *in, unsigned char *out, int out_ln, unsigned char *key, unsigned char *iv);
      
      unsigned char *Base64Decode(unsigned char *data, 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉言心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值