文章目录
- 前言
- 一、安装Audit?
- 二、理解工作流程与核心工具
- 三、核心使用(三大工具)
- 1. auditctl:实时控制审计规则
- 2. ausearch:查询审计日志
- 3. aureport:生成汇总报告
- 四、规则持久化(关键步骤)
- 1.规则文件位置:
- 2.写入规则:
- 3.加载规则并重启服务:
- 五、常见问题与解决方案
- 实战示例:监控Web目录篡改
前言
Linux Audit(审计子系统)是Linux内核的一个安全框架,用于记录系统中发生的各种安全相关事件。它的核心价值在于事后追溯和安全合规。当发生安全事件(如文件被篡改、异常登录、权限滥用)时,审计日志可以帮助系统管理员精确复盘事件全过程。
一、安装Audit?
大多数主流Linux发行版都已预装auditd。如果未安装,请根据你的系统使用以下命令:
# Ubuntu / Debiansudoaptupdate&&sudoaptinstallauditd audispd-plugins# CentOS / RHEL / Fedora / 麒麟V10 / openEulersudoyuminstallaudit# 或 sudo dnf install audit# 安装后,启动并设置开机自启sudosystemctlenable--now auditdsudosystemctl status auditd# 确认状态为 active (running)二、理解工作流程与核心工具
了解auditd各组件如何协同工作至关重要。下图清晰地展示了从规则配置到日志查询的完整流程:
整个过程是一个闭环:管理员通过auditctl配置规则,内核根据这些规则监控系统,auditd守护进程将事件写入日志,最后管理员使用工具查询日志以验证规则效果或进行安全分析。
三、核心使用(三大工具)
现在,让我们学习流程图中涉及的三个核心工具的具体用法。
1. auditctl:实时控制审计规则
# 1. 查看当前所有规则sudoauditctl -l# 2. 监控文件或目录(-w 为监控路径,-p 为权限,-k 为自定义关键词)sudoauditctl -w /etc/passwd -p wa -k identity_file# -p 后跟的权限:r=读,w=写,x=执行,a=属性变更# 3. 监控系统调用(-S 为系统调用名,-F 为过滤条件)# 例:记录所有失败的open系统调用sudoauditctl -a always,exit -Sopen-Fsuccess=0-k failed_open# 4. 删除所有规则sudoauditctl -D2. ausearch:查询审计日志
用于从/var/log/audit/audit.log中检索特定事件。
# 1. 根据关键词(-k)搜索最近的事件sudoausearch -k identity_file# 2. 根据时间范围搜索(-ts 开始时间,-te 结束时间)sudoausearch -ts today 09:00 -te10:00# 3. 根据事件ID搜索(-a)sudoausearch -a12345# 4. 查看失败的登录尝试sudoausearch -m USER_LOGIN -sv no3. aureport:生成汇总报告
生成易于人类阅读的汇总报告,便于宏观分析。
# 1. 生成所有事件的汇总报告sudoaureport# 2. 生成关于文件的报告sudoaureport -f# 3. 生成认证相关(登录)报告sudoaureport -au# 4. 生成今天发生的所有事件的详细报告sudoaureport -t四、规则持久化(关键步骤)
通过auditctl添加的规则在系统重启后会丢失。要使其永久生效,必须将规则写入配置文件。
1.规则文件位置:
- /etc/audit/rules.d/audit.rules (主要配置文件)
- 你也可以在/etc/audit/rules.d/目录下创建自己的.rules文件(如myrules.rules)。
2.写入规则:
将你用auditctl测试好的规则,去掉开头的auditctl命令,直接写入规则文件。例如,将 auditctl -w /etc/passwd -p wa -k identity_file 转换为:
# 编辑规则文件sudovim/etc/audit/rules.d/audit.rules# 在文件末尾添加以下行(不要写 auditctl 命令本身)-w /etc/passwd -p wa -k identity_file -w /etc/shadow -p wa -k identity_file3.加载规则并重启服务:
# 方法一:使用augenrules重新编译并加载所有规则(推荐)sudoaugenrules --load# 方法二:重启auditd服务sudosystemctl restart auditd# 验证规则是否已永久加载sudoauditctl -l五、常见问题与解决方案
实战示例:监控Web目录篡改
假设你想监控网站目录/var/www/html是否被篡改(写入或属性变更):
1.添加临时规则测试:
sudoauditctl -w /var/www/html/ -p wa -k web_content2.测试规则:在该目录下创建或修改一个文件,然后查询:
sudotouch/var/www/html/test.txtsudoausearch -k web_content -i3.永久化规则:确认规则有效后,写入规则文件:
echo"-w /var/www/html/ -p wa -k web_content"|sudotee-a /etc/audit/rules.d/web.rulessudoaugenrules --load掌握了以上内容,你就具备了使用auditd进行系统安全审计的基础能力