使用Audit Daemon配置与审计Linux系统

本文详细介绍了Linux Audit Daemon的安装、配置与使用,涵盖审计目标、组件结构、规则设置、进程追踪及用户文件访问监控,助力系统管理员实现安全审计与入侵检测。

配置与审计Linux系统的Audit Daemon

Linux审计守护进程(Audit Daemon)是一个用于审计Linux系统事件的框架。本文将介绍其安装、配置及使用,以实现Linux系统与安全审计。

审计目标

通过强大的审计框架,系统可以跟踪多种事件类型以监控和审计系统。示例包括:

  • 审计文件访问与修改
  • 查看谁更改了特定文件
  • 检测未经授权的更改
  • 监控系统调用与函数
  • 检测异常(如进程崩溃)
  • 设置入侵检测的触发机制
  • 记录个别用户使用的命令

组件

框架包含多个组件:

内核

  • audit:挂钩到内核以捕获事件并传递给auditd

二进制文件

  • auditd:守护进程,用于捕获事件并存储(日志文件)
  • auditctl:客户端工具,用于配置auditd
  • audispd:守护进程,用于多路复用事件
  • aureport:报告工具,从日志文件(auditd.log)读取
  • ausearch:事件查看器(auditd.log)
  • autrace:使用内核中的审计组件跟踪二进制文件
  • aulast:类似last,但使用审计框架
  • aulastlog:类似lastlog,也使用审计框架
  • ausyscall:映射系统调用ID与名称
  • auvirt:显示与虚拟机相关的审计信息

文件

  • audit.rules:由auditctl读取,定义需要使用的规则
  • auditd.conf:auditd的配置文件

安装

Debian / Ubuntu

1
apt install auditd audispd-plugins

Fedora / Red Hat

通常已安装(包:audit和audit-libs)

配置

审计守护进程的配置由两个文件安排:一个用于守护进程本身(auditd.conf),另一个用于auditctl工具使用的规则(audit.rules)。

auditd.conf

文件auditd.conf配置Linux审计守护进程(auditd),重点在于事件应记录的位置和方式。它还定义了如何处理磁盘满、日志轮转和保留的日志数量。通常,默认配置适用于大多数系统。

audit.rules

要配置应审计的事件,审计框架使用名为audit.rules的规则文件。

与大多数情况一样,从干净的开始,不加载任何规则。可以通过运行带-l参数的auditctl来确定活动规则。

1
2
# auditctl -l  
No rules

如果加载了任何规则,请使用auditctl和-D参数删除它们。

开始监控某些内容,例如/etc/passwd文件。我们通过定义路径和权限来“监视”文件:

1
auditctl -a exit,always -F path=/etc/passwd -F perm=wa

通过定义路径选项,我们指示审计框架监视哪个目录或文件。权限确定哪种访问将触发事件。尽管这些看起来类似于文件权限,但请注意两者之间存在重要差异。四个选项是:

  • r = 读取
  • w = 写入
  • x = 执行
  • a = 属性更改

使用ausearch工具可以快速追踪与文件相关的事件或访问。

1
2
3
4
5
# ausearch -f /etc/passwd
time->Tue Mar 18 15:17:25 2014  
type=PATH msg=audit(1395152245.230:533): item=0 **name="/etc/passwd"** inode=137627 dev=fd:00 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0 nametype=NORMAL  
type=CWD msg=audit(1395152245.230:533):  **cwd="/etc/audit"**  
type=SYSCALL msg=audit(1395152245.230:533): arch=c000003e **syscall=188** success=yes exit=0 a0=d14410 a1=7f66eec38db7 a2=d4ea60 a3=1c items=1 ppid=1109 pid=4900 **auid=0** uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=2 comm="vi" **exe="/bin/vi"** subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)

此输出的一些亮点包括:

  • 事件时间和对象名称
  • 当前工作路径(cwd)
  • 相关系统调用
  • 审计用户ID(auid)
  • 对文件执行操作的二进制文件(exe)

请注意,auid定义了登录时的原始用户。其他用户ID字段可能指示不同的用户,具体取决于触发事件时使用的有效用户。

转换系统调用

系统调用通过数值记录。由于不同架构之间这些值会有重叠,因此也会记录活动架构。

使用uname -m可以确定架构,并使用ausyscall确定数值调用188代表什么。

1
2
# ausyscall x86_64 188  
setxattr

我们现在知道这是一个属性更改,这很合理,因为我们定义的监视在属性更改(perm=a)时触发事件。

使用了临时规则并想再次使用旧规则?从文件刷新审计规则:

1
auditctl -R /etc/audit/audit.rules

Linux下的进程审计

类似于使用strace,审计框架有一个名为autrace的工具。它使用审计框架并添加正确的规则以捕获信息并记录。使用ausearch可以显示收集的信息。

要执行跟踪,启动工具:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# **autrace /bin/ls /tmp**  
autrace cannot be run with rules loaded.  
Please delete all rules using 'auditctl -D' if you really wanted to run this command.  
如果加载了规则,您会看到此消息,必须首先删除规则。
# auditctl -D  
No rules  
现在我们可以再次进行跟踪:
# autrace /bin/ls /tmp  
Waiting to execute: /bin/ls  
atop.d  mc-root  mongodb-27017.sock  suds  
Cleaning up...  
Trace complete. You can locate the records with 'ausearch -i -p 20314'

通过ausearch显示相关文件:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
# ausearch --start recent -p 21023 --raw | aureport --file --summary
File Summary Report  
===========================  
total  file  
===========================  
1  /bin/ls  
(null) inode=1975164 dev=08:02 mode=0100755 ouid=0 ogid=0 rdev=00:00  
1  /etc/ld.so.cache  
1  /lib/x86_64-linux-gnu/libselinux.so.1  
1  /lib/x86_64-linux-gnu/librt.so.1  
1  /lib/x86_64-linux-gnu/libacl.so.1  
1  /lib/x86_64-linux-gnu/libc.so.6  
1  /lib/x86_64-linux-gnu/libdl.so.2  
1  /lib/x86_64-linux-gnu/libpthread.so.0  
1  /lib/x86_64-linux-gnu/libattr.so.1  
1  /proc/filesystems  
1  /usr/lib/locale/locale-archive  
1  /tmp

按用户审计文件访问

审计框架可用于监控系统调用,包括对文件的访问。如果您想知道特定用户ID访问了哪些文件,请使用如下规则:

1
auditctl -a exit,always -F arch=x86_64 -S open -F auid=80
Auditctl选项 描述
-F arch=x86_64 定义使用的架构,以监控正确的系统调用(某些系统调用在架构之间不明确)
-S open 选择“open”系统调用
-F auid=80 定义我们感兴趣的相关用户ID

这种信息对于入侵检测非常有用,也在对Linux系统进行取证时很有用。如果您不确定架构值,请使用uname -m查询正确的值。

自动化

由于Linux审计守护进程可以提供有价值的审计数据,Lynis将检查框架的存在。如果不可用,它将建议您安装。此外,Lynis将执行多项测试以确定日志文件、可用规则等。

对于适当的入侵检测,与入侵检测系统(IDS)的集成是在事件发生时发现并采取适当行动的关键。

更多

审计守护进程有更多可能性。其他示例将在本博客未来的单独文章中列出。如果您认真对待审计Linux平台,Linux审计框架绝对是您的好朋友!

本文中的相关命令

想了解更多关于本文中使用的命令?请查看,其中一些还有备忘单可用。

  • ausearch
  • auditctl

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

下一步!

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

Lynis

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

工具信息

  • 成本:免费
  • 许可证:GPLv3
  • 链接:
    • GitHub项目
    • 包(deb/rpm)
    • Tarball
    • 访问项目页面

反馈

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

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

相关文章

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

  • 如何处理受损的Linux系统
  • 如何保护Linux系统
  • PCI DSS Linux:系统级对象的创建和删除
  • Linux审计框架101 – 配置的基本规则
  • 傻瓜式Linux安全扫描

页面详情及相关文章

页面信息

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

主题

审计

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

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

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

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

联系

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