bro/zeek新的Configuration框架

本文介绍了如何在Bro/Zeek中动态更新配置,包括使用option声明变量、通过配置文件和Config::set_value函数进行修改。动态修改适用于非pattern、record和table类型的变量,并详细阐述了配置修改的日志记录和前置函数的使用方法。
摘要由CSDN通过智能技术生成

用途:

提供了一种动态更新zeek配置的方法。

  • 例如:在以前如果要定义类似于暴力破解尝试次数的变量,一般使用如下形式
    const password_guesses_limit: double = 30 &redef;
    const 申明一个常量,再用&redef表示可以在其他地方使用,以下形式修改它
    redef SSH::password_guesses_limit = 2 ;

  • 这种方式的缺点是,如果要更新她的值,就必须deploy重新启动,不能做到在保留常量特性的情况下动态的修改配置

使用方式

申明:

option + 变量名+(:类型) = 初始值

module TestModule;
export {
   
    option my_networks: set[subnet] = {
   };
    option enable_feature = F;
    option hostname = "testsystem";
    option timeout_after = 1min;
    option my_ports: vector of port = {
   };
}
  • 其中必须要有初始值,类型可有可无,可以通过初始值推测出来
  • 不必使用&redef也可以使用,redef 关键字在初始化过程中修改它的值

动态修改

配置文件方式修改:
  • Config::config_files中提前加入配置文件路径
    redef Config::config_files += { "/path/to/config.dat" };
  • 以名称空格值得形式修改值
TestModule::my_networks 10.0.12.0/24,192.168.17.0/24
TestModule::enable_feature  T
TestModule::hostname  host-1
TestModule::timeout_after 50.5
TestModule::my_ports 80/tcp,53/udp
  • 注意事项:
  1. interval 类型的变量只能使用秒做单位
  2. 在cluster中,只有manage节点会读取配置文件
  3. 尽量不要使用vacode修改配置文件,因为这些软件有可能在你没修改完之前自动保存,导致出现预料之外的错误
  4. 该方式不支持pattern,record和table类型的变量
  • 脚本例子:
module test;
redef Config::config_files += {
   "/usr/local/zeek/share/zeek/site/config.dat"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值