优化auditd:高性能Linux审计指南

本文详细介绍了如何优化Linux审计框架auditd的性能,包括规则排序策略、事件排除方法、缓冲区调优技巧和目录监控优化,帮助系统管理员在保证安全审计的同时提升系统性能。

优化auditd:高性能Linux审计

Linux审计框架是一个强大的系统事件审计工具。从运行可执行文件到系统调用,所有操作都可以被记录。然而,所有这些审计日志记录都会以降低系统性能为代价。让我们来看看如何优化审计规则。

性能提示

良好的auditd性能将减轻Linux内核的压力并降低其影响。在对系统进行任何更改之前,我们建议在调整前后对系统性能进行基准测试。这样您可以看到调整工作的好处。

策略:规则排序

按正确顺序放置规则

许多软件包使用"基于顺序的规则处理"。这意味着每个规则都会被评估,直到有一个匹配为止。对于Linux审计守护进程,这个原则同样适用。

因此,最大的调优领域之一是规则的顺序。最常发生的事件应该放在顶部,“例外"情况放在底部。

如果您的Linux审计设置是按字母顺序完成的,可以确定这种配置没有针对性能进行优化。让我们继续在其他方面调优auditd。

策略:排除事件

确定使用频繁的消息类型

记录事件的挑战在于确保记录所有重要事件,同时避免记录不需要的事件。

一些管理员应用"记录所有内容"的规则。虽然这通常有意义,但绝对不高效,并且会降低Linux内核的性能。这种记录方式肯定会减少auditd的处理时间,并对内核性能产生负面影响。

为了增强日志记录,我们首先需要确定哪些事件经常出现。

按可执行文件排序的大多数事件

1
aureport -ts today -i -x --summary

按系统调用(syscall)排序的大多数事件

1
aureport -ts today -i -s --summary

这将显示哪些可执行文件或系统调用正在淹没您的审计日志。通过定义”-ts today",我们只看到最近的事件。

aureport的输出通过禁用某些事件,确实有助于减少日志记录量。当然,您也可以对事件、文件和其他类型执行此操作。有关更多详细信息,请参阅aureport的手册页。

忽略事件

现在我们知道了拥有的文件类型、事件或其他消息,我们可以忽略它们。为此,我们必须制定一个规则,该规则匹配并声明排除exit语句。

exit语句与系统调用一起使用,对于其他情况,我们使用exclude。

按消息类型过滤

例如,要禁用所有"CWD"(当前工作目录),我们可以使用如下规则:

1
-a exclude,always -F msgtype=CWD

由于第一个匹配项获胜,排除项必须放在规则链的顶部。由于这是基于消息类型的过滤器,我们使用exclude。

按多个规则过滤

另一个示例是抑制VMware工具记录的消息。为此,我们通过提供多个-F参数将多个规则组合在一起。您最多可以使用64个字段,但通常几个就足够了。使用-F时,每个表达式都将使用逻辑AND语句进行检查。这意味着所有字段都必须为真,才能触发审计规则集的操作。

1
2
-a exit,never -F arch=b32 -S fork -F success=0 -F path=/usr/lib/vmware-tools -F subj_type=initrc_t -F exit=-2
-a exit,never -F arch=b64 -S fork -F success=0 -F path=/usr/lib/vmware-tools -F subj_type=initrc_t -F exit=-2

注意:某些示例在旧机器上可能会有不同的结果。因此,始终测试每个规则以确定其是否有效。不做任何事情的规则只会对性能产生负面影响。

策略:确定缓冲需求

为auditd调优缓冲区需求

默认情况下,auditctl在使用-s(状态)标志时可以提供一些统计信息。它显示其状态(启用)、任何相关标志、进程ID和日志相关统计信息(积压、速率、丢失)。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# auditctl -s  
enabled 1  
flag 1  
pid 430  
rate_limit 0  
backlog_limit 320  
lost 0  
backlog 0  
enabled -1  
flag 0  
pid 0  
rate_limit 0  
backlog_limit 320  
lost 0  
backlog 0

允许更大的缓冲区意味着对内存资源的更高需求。根据您的机器,这可能是一个小的牺牲,以确保所有事件都被记录。

要确定最佳缓冲区大小,请监控积压值。它们不应超过backlog_limit选项(在我们的例子中为320)。另一个有用的统计信息是监控丢失值,因为它会告诉您有多少事件无法处理。在正常系统上,此值应等于或接近零。

策略:监控目录

监控特定目录时使用path而不是dir

有两种方法可以监控目录的内容:path或dir。

根据您要监控的内容,可能不需要监控子目录。在这种情况下,最好使用path选项,因为它只监控该目录。这是一个小的调整,可能会为您节省大量不必要的审计日志记录。

本文中的相关命令

想了解更多关于本文中使用的命令?查看一下,其中一些还有速查表可用。

  • auditctl
  • aureport

查看完整的Linux命令列表以获取其他系统管理工具。

下一步!

想了解更多关于Linux安全的信息?看看开源工具Lynis,自己成为Linux安全专家。

Lynis

Lynis是一个经过实战检验的基于Unix系统的技术安全审计工具。它是开源的,免费可用,并被世界各地的系统管理员使用。其他用户包括安全专业人员、渗透测试人员和IT审计员。

工具信息

  • 成本:免费
  • 许可证:GPLv3

链接

  • GitHub项目
  • 软件包(deb/rpm)
  • Tarball
  • 访问项目页面

反馈

本文由我们的Linux安全专家Michael Boelen撰写。他专注于创建高质量的文章和相关示例,希望改进Linux安全领域。不再有充满复制粘贴博客文章的网页。

发现过时信息或有疑问?分享您的想法。感谢您的贡献!

相关文章

想了解更多?以下是同一类别或具有相似标签的文章列表。

  • Linux审计框架101 – 配置基本规则
  • Linux审计:/var/log/audit中的日志文件
  • 通过捕获execve系统调用记录root操作
  • 交换内存信息
  • Linux DNS调优以提高性能和弹性

◼ 上一篇文章:Linux审计框架101 – 配置基本规则

页面详细信息和相关文章

页面信息

本文有821个单词,最后更改或审核于2025-03-16。

主题

  • 会计
  • 审计
  • 故障排除

隐私优先,无跟踪,无cookie!

我们的绿色倡议:可持续网页设计

保持最新 @mboelen at Mastodon RSS Atom feed or JSON Feed 网站地图 最新更改

Linux Audit是Linux安全博客,提供与系统管理和安全相关的高质量文章。读者包括系统管理员、安全专业人员和审计员,他们都希望保护自己的系统安全。

联系

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计