用途:
提供了一种动态更新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
- 注意事项:
interval
类型的变量只能使用秒做单位- 在cluster中,只有manage节点会读取配置文件
- 尽量不要使用vacode修改配置文件,因为这些软件有可能在你没修改完之前自动保存,导致出现预料之外的错误
- 该方式不支持pattern,record和table类型的变量
- 脚本例子:
module test;
redef Config::config_files += {
"/usr/local/zeek/share/zeek/site/config.dat"