内蒙古呼和浩特网站建设,wordpress修改登录密码,网络营销策划书 范例,seo外贸推广audit的一些问题以及需要注意的地方
1 audit存在的一些问题
1.1 audit_cmd_mutex锁占用的问题
当内核生成审计日志后#xff0c;会以单播形式发送给用户态的某个进程#xff0c;因此#xff0c;某个程序如果想要接受审计日志#xff0c;需要先调用audit_set_pid#xf…audit的一些问题以及需要注意的地方
1 audit存在的一些问题
1.1 audit_cmd_mutex锁占用的问题
当内核生成审计日志后会以单播形式发送给用户态的某个进程因此某个程序如果想要接受审计日志需要先调用audit_set_pid然后使用selectrecv接收审计日志。
当内核在执行audit_set_pid时内核会占用audit_cmd_mutex然后判断是否已经有其他进程占用audit如果有就会尝试发送消息从而判断用户态进程在正常接收审计日志那么该调用就会返回File exists的报错。而在发送消息之前会判断接收缓冲区是否满如果满则会进入睡眠状态且不会被唤醒由于占用了audit_cmd_mutex锁也会造成bash、sshd等进程进入不可中断状态系统会如卡死一样。
该问题出现在3.10.0-514到3.10.0-1160对应了CentOS的7.3~7.9在CentOS 8修复。
因此在存在该问题的系统上不能先执行audit_set_pid然后通过结果判断而是应该先干掉占用的进程只在audit_pid为0时才调用audit_set_pid。
1.2 60秒睡眠的问题
audit有个backlog_limit参数含义是内核的audit缓存队列上限。当用户态程序消费审计日志过慢造成缓存队列满时会触发内核的睡眠机制造成系统卡顿。
睡眠时间由backlog_wait_time参数控制该值默认是60秒。当内核版本小于3.14时该参数不能设置当内核版本大于3.14时可以通过接口设置为0让内核不睡眠。
1.3 systemd-journald-audit.socket服务导致磁盘满的问题
部分系统上会默认开启systemd-journald-audit.socket服务该服务会接收审计日志并将审计日志写入系统日志如果系统日志是按周轮转可能在还未轮转时就将磁盘打满。一种解决办法是停掉该服务。
2 需要注意的地方
failure该参数会影响audit遇到错误时的处理行为0表示什么也不干1表示输出日志到系统日志2表示系统崩溃默认值为1为了保证系统的稳定建议设置为0backlog_limitaudit的缓存队列大小如果设置太小会导致频繁丢弃日志backlog_wait_time缓存满的休眠时间建议设置为0审计日志解析为了提高系统的日志处理量在解析日志时建议引入缓存队列和丢弃机制并且需要快速执行结束否则会造成日志丢弃路径监控的读写分离在进行路径监控时可以设置需要的操作类型有4种分别是读、写、执行、权限变更对于读而言如果设置某些路径例如/etc/会导致日志量非常大解决方案是如果不需要读则将读去掉如果需要读尽量精确到子路径