我正在使用 auditd 模块运行 AuditBeat,并且我注意到一些过滤规则在创建事件和 AuditBeat 发布事件之间增加了显着延迟。
例如:考虑以下规则,它过滤掉不是 message_types PATH、SYSCALL 或 CWD 的事件。
-a never,exclude -F msgtype!=SYSCALL -F msgtype!=PATH -F msgtype!=CWD
从 AuditBeat 日志中:
2021-07-22T16:38:11.822+0200 DEBUG [processors] processing/processors.go:203 Publish event: {
"@timestamp": "2021-07-22T14:38:09.791Z",
"@metadata": {
"beat": "auditbeat",
"type": "_doc",
"version": "7.11.1"
},
.
.
.
"process": {
"ppid": 9599,
"name": "touch",
"executable": "/usr/bin/touch",
"pid": 18287
}
}
2021-07-22T16:38:12.329+0200 DEBUG [kafka] kafka/client.go:371 finished kafka batch
可以看出,在触摸事件发生之前有 2 秒的延迟,该事件由 Auditbeat 发布:
2021-07-22T14:38:09.791
对比
2021-07-22T16:38:11.822
但是,排除“黑名单”而不是“白名单”似乎不会引入相同延迟的过滤器。
考虑以下过滤器,它们定义要排除哪些 message_types,而不是不排除哪些 message_types:
-a always,exclude -F msgtype=user_acct
-a always,exclude -F msgtype=add_group
-a always,exclude -F msgtype=add_user
-a always,exclude -F msgtype=cred_disp
-a always,exclude -F msgtype=cred_acq
-a always,exclude -F msgtype=cred_refr
-a always,exclude -F msgtype=crypto_key_user
-a always,exclude -F msgtype=crypto_login
-a always,exclude -F msgtype=user_auth
-a always,exclude -F msgtype=user_avc
-a always,exclude -F msgtype=user_logout
从 Auditbeat 日志中:
2021-07-22T16:47:25.227+0200 DEBUG [processors] processing/processors.go:203 Publish event: {
"@timestamp": "2021-07-22T14:47:25.207Z",
"@metadata": {
"beat": "auditbeat",
"type": "_doc",
"version": "7.11.1"
},
.
.
.
"process": {
"pid": 18685,
"ppid": 9599,
"title": "touch hello",
"name": "touch",
"executable": "/usr/bin/touch",
"working_directory": "/var/entimice"
}
}
2021-07-22T16:47:25.729+0200 DEBUG [kafka] kafka/client.go:371 finished kafka batch
从日志中可以看出,时间差要合理得多:
2021-07-22T14:47:25.207
对比
2021-07-22T16:47:25.227
由于有很多不同的 message_types ( https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sec-audit_record_types ) 使用第一条规则显然更方便,而不是一个 100 多岁的规则来捕获我不感兴趣的所有 message_types。
我想知道是什么导致了这种延迟,以及是否可以以某种方式规避它。