深入linux的审计服务auditd —— 筑梦之路

https://codemiracle.blog.csdn.net/article/details/151958547?spm=1011.2415.3001.5331

安装与启动

bash 复制代码
yum install audit audit-libs

sudo systemctl enable auditd --now

sudo systemctl status auditd

组件简介

组件 功能
auditd 审计守护进程
auditctl 控制审计规则的命令行工具
ausearch 搜索审计日志的工具
aureport 生成审计报告的工具
audit.log 日志文件(通常位于 /var/log/audit/audit.log)

常用命令

bash 复制代码
# 查看审计状态

sudo auditctl -s

# 查看当前规则

sudo auditctl -l

# 使用示例

## 监控rm命令

sudo auditctl -w /usr/bin/rm -p x -k command_exec

## 监控多个删除命令

sudo auditctl -w /usr/bin/rm -p x -k file_deletion
sudo auditctl -w /usr/bin/unlink -p x -k file_deletion
sudo auditctl -w /usr/bin/rmdir -p x -k file_deletion

## 监控 /usr/bin/ 目录下的所有二进制文件

sudo auditctl -w /usr/bin/ -p x -k bin_execution

参数说明

-w:监控路径

-p:权限类型

r= 读

w= 写

x= 执行

a= 属性改变

-k:自定义关键词(用于搜索过滤)

## 监控文件访问

### 监控密码文件

sudo auditctl -w /etc/passwd -p wa -k passwd_change

### 监控ssh配置文件

sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config

### 监控sudoers文件

sudo auditctl -w /etc/sudoers -p wa -k sudoers_change

### 监控/etc 目录

sudo auditctl -w /etc/ -p wa -k etc_changes

### 监控其他重要目录

sudo auditctl -w /var/www/html/ -p wa -k web_content
sudo auditctl -w /opt/app/ -p wa -k app_files

## 监控系统调用

### 监控所有删除文件的系统调用

sudo auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -S rmdir -k file_deletion

### 监控文件权限更改

sudo auditctl -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k file_permission

### 监控特权命令执行

sudo auditctl -a always,exit -F arch=b64 -S execve -k command_exec

### 监控特定用户的所有命令

sudo auditctl -a always,exit -F arch=b64 -S execve -F auid=1000 -k user_commands

### 监控非特权用户的特权操作

sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=0 -F auid!=0 -k privilege_abuse

## 搜索和分析日志

### 按照关键词搜索

sudo ausearch -k file_deletion

### 按照时间搜索

sudo ausearch -ts today
sudo ausearch -ts "10/05/2025 08:00:00" -te "10/05/2025 18:00:00"

### 按照用户信息搜索

sudo ausearch -ua 1000  # 按用户ID
sudo ausearch -ui username  # 按用户名

### 生成报告

# 生成文件访问报告
sudo aureport -f -i

# 生成命令执行报告
sudo aureport -x -i

# 生成用户活动报告
sudo aureport -u -i

# 生成汇总报告
sudo aureport --summary

# 生成今天的事件报告
sudo aureport -t

### 格式化输出

# 人性化显示
sudo ausearch -k file_deletion -i

# 只显示关键信息
sudo ausearch -k file_deletion --raw | aureport -f -i

配置文件方式配置

bash 复制代码
# 配置文件

主配置:
/etc/audit/auditd.conf

规则文件:
/etc/audit/rules.d/audit.rules

# 编辑配置文件/etc/audit/rules.d/audit.rules 配置永久规则

# 监控命令执行
-w /usr/bin/rm -p x -k file_deletion
-w /usr/bin/unlink -p x -k file_deletion
-w /usr/bin/rmdir -p x -k file_deletion
# 监控重要文件
-w /etc/passwd -p wa -k passwd_file
-w /etc/shadow -p wa -k shadow_file
-w /etc/sudoers -p wa -k sudoers_file
# 系统调用规则
-a always,exit -F arch=b64 -S unlink -S unlinkat -S rmdir -k file_deletion_syscall


# 重新加载规则
sudo auditctl -R /etc/audit/rules.d/audit.rules
# 或者重启服务
sudo systemctl restart auditd

脚本1:实时监控

bash 复制代码
#!/bin/bash
# realtime_audit_monitor.sh

echo "开始实时监控审计日志..."
sudo tail -f /var/log/audit/audit.log | while read line; do
    if echo "$line" | grep -q -E "rm|unlink|rmdir"; then
        echo "⚠️  删除操作检测: $(date)"
        echo "$line" | grep -o -E 'exe=.*|auid=.*|uid=.*'
        echo "---"
    fi
done

脚本2:每日报告

bash 复制代码
#!/bin/bash
# daily_audit_report.sh
REPORT_FILE="/var/log/audit/daily_report_$(date +%Y%m%d).txt"
{
    echo "=== 审计日报 $(date) ==="
    echo "1. 文件删除操作:"
    sudo ausearch -k file_deletion -ts yesterday -i
    echo ""
    echo "2. 特权命令执行:"
    sudo ausearch -k privilege_escalation -ts yesterday -i
    echo ""
    echo "3. 今日汇总:"
    sudo aureport --start yesterday --end today -i
} > $REPORT_FILE
# 发送邮件(如果有配置邮件)
# mail -s "审计日报 $(date)" admin@company.com < $REPORT_FILE

性能优化

bash 复制代码
编辑 /etc/audit/auditd.conf

# 提高性能的配置
log_file = /var/log/audit/audit.log
max_log_file = 100
max_log_file_action = ROTATE
num_logs = 5
space_left = 250
space_left_action = email
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND

案例

bash 复制代码
案例1:监控网站目录

# 永久规则添加到 /etc/audit/rules.d/web.rules
-w /var/www/html/ -p wa -k web_content
-w /etc/nginx/ -p wa -k nginx_config
-w /etc/apache2/ -p wa -k apache_config


案例2:监控数据库相关操作

# 监控数据库文件和命令
-w /var/lib/mysql/ -p wa -k mysql_data
-w /usr/bin/mysql -p x -k mysql_command
-w /usr/bin/mysqldump -p x -k mysql_backup
相关推荐
Decay__4 小时前
05_MySQL 常用 SQL 大全 —— 诊断、管理、优化辅助 SQL 与三大系统库速查
运维·数据库·sql·mysql·架构
贞明电子6 小时前
工业三色报警灯怎么接入项目系统?开关量与RS485控制应用指南
运维·网络·微信公众平台·贞明电子
HideF7 小时前
Linux
linux·服务器·网络
万联WANFLOW7 小时前
海外网络故障怎么排查?Cloudflare 三季度断网报告解读与 mtr 实战
运维·网络·故障分析
Ruiery8 小时前
Linux 6.6内核内存管理深度解析(十三):slab/slub 分配器
linux·运维·服务器
乌恩大侠9 小时前
从 AI-RAN 到 AI Agent:基于 NVIDIA Nemotron 构建 5G/6G 智能网络故障诊断系统
服务器·人工智能·5g·o-ru·ai-ran·电信大模型
Decay__10 小时前
04_MySQL DBA 日常运维手册 —— 会话管理、锁与阻塞、事务监控、慢查询与日志巡检
运维·数据库·sql·mysql·架构
丰锋ff11 小时前
压缩命令笔记
linux
江华森11 小时前
数据中心基础设施运维实战:概述与实验环境搭建
运维
迪菲赫尔曼11 小时前
【基础篇 11】把官方源码放到服务器:版本、解压层级和安装位置,一次弄清楚
运维·服务器·开发语言·人工智能·python·yolo·目标检测