Linux报错:audit: backlog limit exceeded(审计:超出积压限制)
系统版本:CentOS Linux release 7.6.1810 (Core)
问题现象:一次巡检中发现业务系统打不开,对应的Linux服务器ssh连接不上,但是能ping通,于是在VMware vcenter 远程控制台打开操作系统界面,报错提示 audit: backlog limit exceeded,尝试“ctrl+z”中断报错未果,只能强行关机,重新开机能正常系统。
问题原因:audit服务记录的审计事件超出默认(或设置)数量 ,达到或超出容量的审计缓冲区队列也可能导致实例锁定或持续无响应状态。
解决办法:由于尝试“ctrl+z”中断报错未果,只能强行关机,重新开机才能正常系统,究其原因不采取措施,审计事件再次溢出依旧会出现该问题。
方法一:增加审计缓冲区空间(audit buffer)
注意:增加审计缓冲区会消耗系统的更多内存。设置 backlog_limit 参数的大小取决于系统的总内存。如果系统有足够的内存,则可以尝试将现有的 backlog_limit 参数值加倍。
审计积压所需内存的计算公式。使用此计算公式来确定在不对系统造成内存压力的情况下可以设置多大的积压队列。
一个审计缓冲区 = 8970 字节
审计缓冲区的默认数量(backlog_limit 参数)= 320
320 * 8970 = 2870400 字节(2.7MiB)
在本示例中,我将 backlog_limit 参数值更改为 10000 个缓冲区。根据上述计算公式,10000 个缓冲区等于87MiB 内存。您可以根据内存计算公式使用任何值。
1、查看当前默认配置:auditctl -s
2、在内核中设置最大现有审计缓冲量:auditctl -b 8192
永久设置,修改规则配置文件:vi /etc/audit/audit.rules
参数说明:
-D 删除所有规则
-b 设置audit缓冲大小,若缓冲占满了,则kernel会发出一个失败标记
-f 0|1|2 设置audit获取错误的等级。有0/1/2三个值。0是不输出日志;1为输出printk日志;2为最高级、会输出大量日志信息
-e 0|1 启用/禁用audit审核
3、重新启动 auditd 服务。
service auditd stop
service auditd start
service auditd restart
方法二:禁用aduit审核,不进行审计事件记录(不建议)
参考链接:7.5. 定义审计规则 Red Hat Enterprise Linux 7 | Red Hat Customer Portal
知识拓展:Linux系统审核
Linux Audit 系统提供了一种方式来跟踪系统中的安全相关信息。根据预配置的规则,审计会生成日志条目,以记录有关系统上发生事件的尽可能多的信息。对于关键任务环境而言,此信息对于确定安全策略的违反者及其执行的操作至关重要。Audit 不会为您的系统提供额外的安全性,而是可用于发现系统上使用的安全策略违规。通过 SELinux 等其他安全措施可以进一步阻止这些冲突。 以下列表总结了审计可以在其日志文件中记录的一些信息:- 事件的日期和时间、类型和结果.
- 主题和对象的敏感度标签。
- 事件与触发事件的用户的身份相关联。
- 对 Audit 配置的所有修改,并尝试访问 Audit 日志文件。
- 所有身份验证机制的使用,如 SSH 和 Kerberos 等。
-
对任何受信任数据库的更改,如
/etc/passwd
. - 尝试从系统导入或导出信息.
- 根据用户身份、主题和对象标签以及其他属性,包含或排除事件。
- 受控访问保护配置文件(CAPP)
- 标记的安全保护配置文件(LSPP)
- 规则集基本访问控制(RSBAC)
- 国家工业安全计划操作手册(NISPOM)
- 联邦信息安全管理法案(FISMA)
- 支付卡行业 - 数据安全标准(PCI-DSS)
- 安全技术实施指南(STIG)
- 由国家信息保障合作伙伴(NIAP)和最佳安全行业(BSI)评估。
- 通过红帽企业 Linux 5 上的 LSPP/CAPP/RSBAC/EAL4+ 认证.
- 红帽企业 Linux 6 上经过操作系统保护配置文件/评估保证级别 4+(OSPP/EAL4+)认证.
使用案例
- 监视文件访问
- 审计可以跟踪文件或目录是否已访问、修改、执行或文件属性是否已更改。例如,这可用于检测对重要文件的访问,并在其中一个文件损坏时提供审计跟踪。
- 监控系统调用
-
可将审计配置为在每次使用特定系统调用时生成日志条目。例如,这可用于通过监控
settimeofday、clock_adjtime
和其他时间相关系统调用来跟踪系统时间的更改。 - 记录用户运行的命令
-
审计可以跟踪文件是否已执行,因此可以定义规则以记录特定命令的每次执行。例如,可以为
/bin
目录中的每个可执行文件定义规则。然后,可以按用户 ID 搜索生成的日志条目,以生成每个用户所执行命令的审计跟踪。 - 记录系统路径名称的执行
- 除了观察在规则调用时转换索引节点路径的文件访问之外,审计现在还可以观察路径的执行,即使路径在规则调用中不存在,或者在规则调用后替换了文件。这允许规则在升级程序可执行文件或甚至安装之前继续运行。
- 记录安全事件
-
pam_faillock
身份验证模块能够记录失败的登录尝试。也可以将审计设置为记录失败的登录尝试,并提供试图登录的用户的附加信息。 - 搜索事件
- Audit 提供 ausearch 实用程序,可用于过滤日志条目并根据多个条件提供完整的审计跟踪。
- 运行摘要报告
- aureport 实用程序可用于生成记录的事件的日常报告等。然后,系统管理员可以分析这些报告,并进一步调查可疑活动。
- 监控网络访问
- iptables andebtables 实用程序可以配置为触发审计事件,使系统管理员能够监控网络访问。