Linux 文件篡改审计(auditctl 实战指南)

Linux 文件篡改审计(auditctl 实战指南)

在服务器安全中,仅仅"禁止修改文件"(例如 chattr +i)是不够的。

更重要的是:

当文件被修改时,能够知道是谁(进程 / 用户)在什么时候改了什么文件。

本文介绍如何使用 Linux 内核审计工具

👉 auditd

实现文件篡改监控。

一、核心命令

基础规则(推荐写法)

auditctl -a always,exit -F arch=b64 -F dir=/demo -F perm=wa -k filewatch

参数说明

-a always,exit → 在系统调用结束时记录日志

-F arch=b64 → 64位系统调用(必须加,否则性能差且可能漏日志)

-F dir=/demo → 监控目录(递归)

-F perm=wa → 监控 写(write) + 属性(attribute)

-k filewatch → 日志标签

二、效果演示

1)创建测试文件

mkdir /demo

echo "hello" > /demo/test.txt

2)修改文件

echo "hack" >> /demo/test.txt

3)查看审计日志

ausearch -k filewatch -i

4)示例输出(精简版)

type=SYSCALL ... syscall=openat ... comm=bash exe=/usr/bin/bash

type=PATH ... name=/demo/test.txt

日志含义

comm=bash → 执行修改的进程

exe=/usr/bin/bash → 程序路径

name=/demo/test.txt → 被修改的文件

如果出现:

O_RDWR|O_CREAT|O_TRUNC

说明:

👉 文件被打开并且清空后重写

三、查看规则

auditctl -l

示例:

-a always,exit -F arch=b64 -F dir=/demo -F perm=wa -F key=filewatch

四、删除规则

删除单条规则(旧写法)

auditctl -W /demo -p wa -k filewatch

清空所有规则(慎用)

auditctl -D

五、进阶用法

1)捕获更多修改行为

auditctl -a always,exit -F arch=b64

-S open,openat,rename,unlink,truncate

-F dir=/demo

-k filewatch_detail

可监控:

文件写入

重命名

删除

覆盖

2)只关注写操作

auditctl -a always,exit -F arch=b64

-S open,openat

-F dir=/demo

-k filewatch_open

重点看 flags:

O_WRONLY

O_RDWR

O_TRUNC

O_CREAT

3)只监控某个进程(推荐)

例如只监控 PHP:

auditctl -a always,exit -F arch=b64

-S open,openat

-F exe=/usr/sbin/php-fpm

-k php_write

六、查看日志(常用命令)

ausearch -k filewatch -i

查看最近:

ausearch -k filewatch -ts recent -i

查看今天:

ausearch -k filewatch -ts today -i

七、性能建议

⚠️ 审计是同步记录,规则不当会影响性能

建议:

❌ 不要监控整个系统

❌ 不要监控高频写目录

✅ 只监控核心代码目录

✅ 使用 key 分类日志

八、安全能力总结

能力 支持

记录谁改文件 ✅

记录进程路径 ✅

记录具体文件 ✅

阻止修改 ❌

九、防篡改最佳实践

  1. chattr +i → 防止关键文件被改
  2. auditd → 记录谁改
  3. AIDE → 定期完整性检测
  4. 日志远程备份 → 防止被删除
相关推荐
A心有千千结4 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github
fengkai45454 小时前
十三、Zabbix 监控
运维·服务器·zabbix·监控·网络设备
古法老登瞎折腾4 小时前
大数据智能运维实战(二):准备一个可复现的运维实验环境
java·大数据·运维·spring ai·mcp
书生执笔画浮沉4 小时前
Linux 内核模块为什么不能自己解决兼容性问题?
linux·c·kernel·update·灵感
数据中心的那点事儿4 小时前
艾特网能:GPU算力服务器冷却系统配套设计介绍
运维·服务器·gpu算力
15Moonlight4 小时前
Linux网络(03):Socket 编程 TCP
linux·网络·tcp/ip
广州灵眸科技有限公司4 小时前
单芯片同时跑 Linux 与 RT-Thread:RV1126B的AMP异构方案完整拆解
linux·运维·服务器
小雪崩5 小时前
嵌入式学习:Linux驱动开发总结
linux·驱动开发·学习
C++ 老炮儿的技术栈5 小时前
std::atomic 是什么
linux·c语言·网络·c++·visual studio
xixiaoyunya5 小时前
把网站状态巡检自动化:从“每天手动刷一遍”到秒级无人值守
运维·自动化