GO开发而成,用于NIDS HIDS 分析的规则引擎,使用WorkerPool 高性能检测,支持正则、子串、等于,支持多字段 "和" "或" 检测, 支持频率检测, 支持自定义函数检测,自定义函数可以满足几乎所有数据类型的检测
输入:
Kafka(Json)
输出:
E-Mail,ES, Kafka,Json 文件
计划添加:
Redis,Rabbitmq 的输入
规则编写
state: enable // 规则状态 enable disable rule_id : sqli_get_01 // 规则ID rule_tag: sqli // 规则标签 rule_name: sqli_get_select // 规则名 rule_type: or // or 类型规则代表,detect_list里面命中任何一条,算命中 rule_type: and // and 类型规则代表,detect_list里面命中所有规则,算命中 rule_type: frequency_or // frequency_or 类型规则代表,detect_list里面命中任何一条,且以key计数,单位时间内达到计数值上限算命中 rule_type: frequency_and // frequency_and 类型规则代表,detect_list里面命中所有规则,且以key计数,单位时间内达到计数值上限算命中 detect_list: - field : conn.conn_state // 字段 type: re // 正则 rule: S0 // 具体规则 ignorecase: false // 是否忽略大小写 - field : conn.proto // 字段 type: equal // 等于 rule : tcp // 具体规则 - field : conn.conn_state // 字段 type: in // 判断是否为子串 rule : S0 // 具体规则 - field: conn.ip // 字段 type: customf // 自定义函数 rule: CheckIP // 自定义函数名 key : conn.id\.orig_h // 只有frequency 类型的有,以此字段对应数据为key计数 time_interval: // 只有frequency 类型的有,代表 10s内出现 10次 second: 10 times: 10 threat_level : high // 威胁等级 auth : njcx86 // 作者 info : about sql injection attack // 注释 e-mail: // 告警发送的邮箱 - 868726@gmail.com - njcx91@tom.com
取字段对应的方式如下:
{
"name": {"first": "Tom", "last": "Anderson"},
"age":37,
"children": ["Sara","Alex","Jack"],
"fav.movie": "Deer Hunter",
"friends": [
{"first": "Dale", "last": "Murphy", "age": 44, "nets": ["ig", "fb", "tw"]},
{"first": "Roger", "last": "Craig", "age": 68, "nets": ["fb", "tw"]},
{"first": "Jane", "last": "Murphy", "age": 47, "nets": ["ig", "tw"]}
]
}"name.last" >> "Anderson" "age" >> 37 "children" >> ["Sara","Alex","Jack"] "children.#" >> 3 "children.1" >> "Alex" "child*.2" >> "Jack" "c?ildren.0" >> "Sara" "fav\.movie" >> "Deer Hunter" "friends.#.first" >> ["Dale","Roger","Jane"] "friends.1.last" >> "Craig"
目前支持四种输出:
output: es: enabled : true es_host : ["http://10.10.116.177:9201"] version : 7 kafka: enabled : true server : ["172.21.129.2:9092"] topic: nids-alert group_id: nids-alert email: enabled: false email_host: smtp.qq.com email_smtp_port: 465 email_from: 123456@qq.com email_username: 123456@qq.com email_pwd: 123456 json: enabled : true path : /tmp/ name : nids-alert.log