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. 日志远程备份 → 防止被删除
相关推荐
梦想的旅途23 分钟前
企业微信API如何实现自动化办公
运维·自动化·企业微信
刚入门的大一新生6 分钟前
Linux-命令行参数和环境变量
linux·运维·服务器
我星期八休息41 分钟前
Linux I/O多路转接—epoll
java·linux·运维·服务器·开发语言·jvm·算法
大模型码小白1 小时前
AI 提示词专栏:使用系统指令(System Prompt)实现全局约束
java·大数据·运维·开发语言·人工智能·python·prompt
AI备忘录1 小时前
(十六)GRE/IPSec 隧道配置命令五厂商对照:华为 华三 锐捷 迈普 思科
运维·服务器·网络·网络协议·网络安全·华为
wuminyu1 小时前
Java FFM处理网络读写事件源码剖析
java·linux·c语言·jvm·c++
实心儿儿2 小时前
Linux —— 数据链路层
linux·网络·智能路由器
DO_Community2 小时前
面向 AI 工作负载,单核性能提升 30%:DigitalOcean v5 Droplets 云服务器正式上线
运维·服务器·人工智能
广凌股份(广凌科技)2 小时前
广凌智慧教室融合管理平台|现代技术如何改善课堂体验?
运维·人工智能·物联网
智购科技无人售货机厂家2 小时前
2026自动售货机出货口防夹手设计:从红外检测到电机反转的工程实践~YH
大数据·linux·单片机·嵌入式硬件·微信