【安全】audit的一些问题以及需要注意的地方

news/2025/3/15 5:16:52/

audit的一些问题以及需要注意的地方

1 audit存在的一些问题

1.1 audit_cmd_mutex锁占用的问题

当内核生成审计日志后,会以单播形式发送给用户态的某个进程,因此,某个程序如果想要接受审计日志,需要先调用audit_set_pid,然后使用select+recv接收审计日志。

当内核在执行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,为了保证系统的稳定,建议设置为0
  • backlog_limit:audit的缓存队列大小,如果设置太小会导致频繁丢弃日志
  • backlog_wait_time:缓存满的休眠时间,建议设置为0
  • 审计日志解析:为了提高系统的日志处理量,在解析日志时建议引入缓存队列和丢弃机制,并且需要快速执行结束,否则会造成日志丢弃
  • 路径监控的读写分离:在进行路径监控时可以设置需要的操作类型,有4种,分别是读、写、执行、权限变更,对于读而言,如果设置某些路径(例如,/etc/),会导致日志量非常大,解决方案是如果不需要读,则将读去掉,如果需要读,尽量精确到子路径

http://www.ppmy.cn/news/1279233.html

相关文章

2016年第五届数学建模国际赛小美赛A题臭氧消耗预测解题全过程文档及程序

2016年第五届数学建模国际赛小美赛 A题 臭氧消耗预测 原题再现: 臭氧消耗包括自1970年代后期以来观察到的若干现象:地球平流层(臭氧层)臭氧总量稳步下降,以及地球极地附近平流层臭氧(称为臭氧空洞&#x…

在Linux上对固态硬盘进行分区、格式化和挂载的步骤

在Linux上对固态硬盘进行分区、格式化和挂载的步骤如下: 插入固态硬盘:将固态硬盘插入计算机的SATA或M.2接口。 确认固态硬盘被识别:打开终端,输入以下命令查看硬盘是否被系统识别: sudo fdisk -l查找硬盘列表中的固…

JWT是什么?它有什么用?

1. 什么是 JWT? JWT是 JSON Web Token 的缩写,通过数字签名的方式,以 JSON 对象为载体,在不同的服务器终端之间安全传输的信息。 2. JWT 有什么用? JWT 最常见的场景就是授权认证,一旦用户登录&#xff…

Redis实现日榜|直播间榜单|排行榜|Redis实现日榜01

前言 直播间贡献榜是一种常见的直播平台功能,用于展示观众在直播过程中的贡献情况。它可以根据观众的互动行为和贡献值进行排名,并实时更新,以鼓励观众积极参与直播活动。 在直播间贡献榜中,每个观众都有一个对应的贡献值&#…

复杂网络的自相似性和分形性

复杂网络的自相似性是指网络在不同的尺度上具有相似的结构和组织特征。换句话说,网络的一部分结构会在整体结构中重复出现,形成自我复制的特性。自相似性意味着即使在不同的尺度或局部区域观察,仍然可以发现类似的组织方式和统计规律。 在现实…

人工智能_机器学习070_SVM支持向量机_软间隔及优化_硬间隔_衡量间隔软度_引入松弛变量_理解隔离参数---人工智能工作笔记0110

我们继续说,之前说的C是什么意思? 我们在这个软间隔优化中就可以引出C 可以看到之前我们讨论的问题,都是基于样本点的,完全的线性可分的问题,我们称为硬间隔 可以看到这种,一分就可以,分开,简单分割就可以分开的数据,我们称之为硬间隔 但是可以看到上面这种情况,无论怎么分,都…

软件管理--rpm与yum

文章目录 软件管理--rpm安装软件包:升级软件包:卸载软件包:查询已安装的软件包信息:查询尚未安装但已下载的软件包信息:列出已安装的软件包:列出软件包的文件信息验证软件包完整性导出软件包信息到文件查询…

《每天一分钟学习C语言·八》字符串,指针与二维数组,补码,按位取反

1、 枚举 enum WeekDay //这是一个数据类型 {//MonDay, TusDay,.... }; enum WeekDay day MonDay; printf(“%d\n”, day); //输出0,枚举里面元素都是从0开始排列2、 字符串 (1)在字符串中加双引号前面需要有反斜杠 (2&#xf…