为什么我在 EC2 Linux 实例的屏幕截图和系统日志中看到“审计:超出积压限制”错误,我该如何避免这种情况?

上次更新时间:2020 年 9 月 18 日

我在 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例的屏幕截图和系统日志中看到“已阻止审计回调”和“审计:超出积压限制”错误消息。为什么我会收到这些消息,以及如何防止它们再次发生?

简短描述

Linux 系统中的审计积压缓冲区是操作系统用来维护或记录审计事件的内核级套接字缓冲区队列。当新的审计事件触发时,系统会记录该事件并将其添加到审计积压缓冲区队列中。

backlog_limit 参数值是审计积压缓冲区的数量。默认情况下,参数设置为 320,如以下示例所示:

# auditctl -s

enabled 1

failure 1

pid 2264

rate_limit 0

backlog_limit 320

lost 0

backlog 0

当记录的审计事件超出默认数量 320 时,将导致实例上出现以下错误:

audit: audit_backlog=321 > audit_backlog_limit=320

audit: audit_lost=44393 audit_rate_limit=0 audit_backlog_limit=320

audit: backlog limit exceeded

-或者-

audit_printk_skb: 153 callbacks suppressed

audit_printk_skb: 114 callbacks suppressed

达到或超出容量的审计缓冲区队列也可能导致实例挂起或保持无响应状态。

为避免出现超出积压限制错误,请增加 backlog_limit 参数值。大型服务器会触发大量审计日志,因此增加缓冲区空间有助于避免出现错误消息。

注意:增加审计缓冲区会消耗实例的更多内存。设置 backlog_limit 参数的大小取决于实例的总内存。如果系统有足够的内存,则可以尝试将现有的 backlog_limit 参数值加倍。

以下是审计积压所需内存的计算公式。使用此计算公式来确定在不对实例造成内存压力的情况下可以设置多大的积压队列。

一个审计缓冲区 = 8970 字节

审计缓冲区的默认数量(backlog_limit 参数)= 320

320 * 8970 = 2870400 字节或 2.7MiB

审计缓冲区的大小由 MAX_AUDIT_MESSAGE_LENGTH 参数定义。有关更多信息,请参阅 github.com 上的 Linux 审计库中的 MAX_AUDIT_MESSAGE_LENGTH。

注意:如果您的实例不可访问,并且在系统日志中看到超出积压限制消息,请停止并启动该实例。然后,执行以下步骤以更改审计缓冲区值。

解决方法

注意:在本示例中,我们将 backlog_limit 参数值更改为 8192 个缓冲区。根据上述计算公式,8192 个缓冲区等于 70MiB 内存。您可以根据内存计算公式使用任何值。

1.使用 SSH 访问实例。

2.验证当前审计缓冲区大小。

注意:backlog_limit 参数以 -b 形式列出。有关更多信息,请参阅 auditctl-man-page 上的 auditctl(8)

Amazon Linux 1 和其他未使用 systemd 的操作系统:

$ sudo cat /etc/audit/audit.rules

# This file contains the auditctl rules that are loaded

# whenever the audit daemon is started via the initscripts.

# The rules are simply the parameters that would be passed

# to auditctl.

# First rule - delete all

-D

# Increase the buffers to survive stress events.

# Make this bigger for busy systems

-b 320

# Disable system call auditing.

# Remove the following line if you need the auditing.

-a never,task

# Feel free to add below this line. See auditctl man page

Amazon Linux 2 和其他使用 systemd 的操作系统:

$ sudo cat /etc/audit/audit.rules

# This file is automatically generated from /etc/audit/rules.d

-D

-b 320

-f 1

3.使用编辑器(如 vi 编辑器)访问 audit.rules 文件:

Amazon Linux 1 和其他未使用 systemd 的操作系统:

$ sudo vi /etc/audit/audit.rules

Amazon Linux 2 和其他使用 systemd 的操作系统:

$ sudo vi /etc/audit/rules.d/audit.rules

4.将 -b 参数编辑为较大的值。以下示例将 -b 值更改为 8192。

$ sudo cat /etc/audit/audit.rules

# This file contains the auditctl rules that are loaded

# whenever the audit daemon is started via the initscripts.

# The rules are simply the parameters that would be passed

# to auditctl.

# First rule - delete all

-D

# Increase the buffers to survive stress events.

# Make this bigger for busy systems

-b 8192

# Disable system call auditing.

# Remove the following line if you need the auditing.

-a never,task

# Feel free to add below this line. See auditctl man page

$ sudo auditctl -s

enabled 1

failure 1

pid 2264

rate_limit 0

backlog_limit 320

lost 0

backlog 0

5.重新启动 auditd 服务。新的 backlog_limit 值将生效。该值也会在 auditctl -s 中更新,如以下示例所示:

# sudo service auditd stop

Stopping auditd: [ OK ]

# sudo service auditd start

Starting auditd: [ OK ]

# auditctl -s

enabled 1

failure 1

pid 26823

rate_limit 0

backlog_limit 8192

lost 0

backlog 0

注意:如果您的实例不可访问,并且在系统日志中看到超出积压限制消息,请停止并启动该实例。然后,执行上述步骤以更改审计缓冲区值。

这篇文章对您有帮助吗?

您是否需要账单或技术支持?

linux查看数据积压,对 EC2 Linux 实例上的审计积压错误进行排查相关推荐

  1. linux查看服务器品牌和型号,linux 查看服务器型号

    linux 查看服务器型号 内容精选 换一换 登录弹性云服务器查询磁盘设备信息,发现磁盘的设备名称与控制台上显示的挂载点不一致,不清楚磁盘具体挂载在哪个设备上或磁盘对应的逻辑卷标识.本节操作介绍如何根 ...

  2. Linux查看WAS的jvm信息,linux 下使用命令查看jvm信息

    java程序员除了编写业务代码之外,特别是项目上线之后,更需要关注的是系统的性能表现,这个时候就需要了解一下jvm的性能表现了,可以借助于java虚拟机自带的一些分析工具,主要有三个常用的命令. 1. ...

  3. linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...

    1.说出 10 个 linux 常用的指令 1) ls 查看目录中的文件 2)cd /home 进入 '/ home' 目录:cd .. 返回上一级目录:cd ../.. 返回上两级目录 3)mkdi ...

  4. linux查看某进程的连接,linux下查看指定进程的所有连接信息(转)

    定位某个进程的网络故障时经常需要用到的一个功能就是查找所有连接的信息.通常查找某个端口的连接信息使用 ss 或者 netstat 可以轻松拿到,如果是主动与别的机器建立的连接信息则可以通过 lsof ...

  5. linux查看存储类型及型号,linux怎么看内存型号

    Linux可安装在各种计算机硬件设备中,比如手机.平板电脑.路由器.视频游戏控制台.台式计算机.大型机和超级计算机.下面是学习啦小编带来的关于linux怎么看内存型号的内容,欢迎阅读! linux怎么 ...

  6. linux查看80端口连接ip,Linux通过netstat命令查看80端口连接数的方法

    服务器上的一些统计数据: 1)统计80端口连接数 netstat -nat|grep -i "80"|wc -l 2)统计httpd协议连接数 ps -ef|grep httpd| ...

  7. linux查看文件内容行数,Linux 中如何查看文件的行数,字数,字节数

    在 Linux 系统使用中,我们经常需要查看或统计文本文件中的行数,字数,字节数等内容,那么怎么快捷的统计出文件中这些关键数据呢. 在Linux系统中这统计非常方便,只需要简单的几个命令就可以搞定,这 ...

  8. linux查看文件的特殊权限,linux文件的特殊权限及隐藏权限

    基础知识 相信大家应该都知道linux的文件基本权限,使用ls -l命令可以显示文件的基本权限,"-rwxrwxrwx.",第一位表示文件的属性(是文件-  ,目录d等),后面每隔 ...

  9. linux查看域名解析地址,windows、linux查看域名解析、跟踪路由

    前言 在介绍域名解析命令前,须要首先理解域名的解析过程,理解解析过程后,能更深入的理解nslookup.dig命令.linux 域名解析 为何要有域名? 假如没有域名,那么访问一个网址,好比百度,须要 ...

最新文章

  1. 分片哈希piecewise hashing
  2. 限量报名 | 计算机视觉、AI语音专场,腾讯教你做AI商业化实践
  3. matlab工具箱设置学习率_MATLAB金融工具箱:06:统计套利的机器学习2:特征工程和模型开发...
  4. 《Starting with Starling》 Ep 1~11
  5. 【算法学习】整体二分
  6. 使用node中的express解决vue-cli加载不到dev-server.js的问题
  7. 调整谷歌reCAPTCHA大小 How to resize the Google noCAPTCHA reCAPTCHA
  8. Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:testCompile问题解决
  9. 冰原服务器维护,12月2日服务器公告 冰原旅途进发
  10. 这些屏保让你的 Mac 闲置时也能变得美观实用
  11. 如何获取Linux的主机名和域名?
  12. 百度×TCL丨鸿鹄语音芯片首次在家电行业量产!
  13. Win10应用商店提示0x80070422解决方法
  14. 物联网关键之传感器技术
  15. ELK日志分析平台(二)----logstash数据采集
  16. 小红书推广效果怎么样?如何进行小红书推广?
  17. 基于python的今日头条文章抓取内含signature算法
  18. Jsp文件修改后不生效怎么办?
  19. 图形编辑器:对齐功能的实现
  20. 测试案例中@SpringBootTest与@RunWith**的含义

热门文章

  1. 写给即将踏上工作岗位的人
  2. C语言学习Day27 fopen fclose fputc
  3. 35 岁佛系程序员,年后第一天被辞退 1
  4. 异或运算练习:找出一组数中唯一(唯二)出现奇数次的数
  5. The method of type serviceimpl must override a superclass method报错
  6. ObjectArx-自定义对象-对象支持
  7. java1.832官网下载_jdk1.8 32位官方下载-JDK 1.832位 u66 官方版 - 河东下载站
  8. 数据库 - 设计:逻辑设计
  9. ManageEngine:疫无情,莫等闲。线上学习特权密码管理
  10. C++ 代码模拟登录淘宝、天猫、支付宝等电商网站的实现 分类: C/C++ 随笔杂文 2015-01-26 11:17 3787人阅读 评论(9) 收藏 举报 有关C++ 代码模拟登录淘宝、天猫、支