×

用好Linux的auditd工具,黑客也无所遁形!

hqy hqy 发表于2025-12-24 23:20:25 浏览2 评论0

抢沙发发表评论

大家都知道,现在信息安全对于每一个企业来说至关重要。而守护服务器信息的安全,对于每一位运维工程师来说是必备的技能之一。今天给大家分享关于 Linux 系统的内核级审计工具---auditd相关实战,助你守护服务器信息安全,用好它,即使黑客入侵,也会露出手脚!

一、auditd简介
auditd 是 Linux 系统的内核级审计工具,用于系统安全审计、合规性监控和故障排查。
二、auditd安装及启动
1.Ubuntu/Debian下安装命令

sudo apt update && sudo apt install auditd audispd-plugins
2.CentOS/RHEL下安装命令



sudo yum install audit audit-libs# 或sudo dnf install audit audit-libs
3.服务启动



sudo systemctl enable auditdsudo systemctl start auditdsudo systemctl status auditd
三、auditd组件

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

四、基本使用命令
1.查看审计状态

sudo auditctl -s
2.查看当前规则

sudo auditctl -l
五、监控命令执行
1.监控rm命令

sudo auditctl -w /usr/bin/rm -p x -k command_exec
2.监控多个删除命令



sudo auditctl -w /usr/bin/rm -p x -k file_deletionsudo auditctl -w /usr/bin/unlink -p x -k file_deletionsudo auditctl -w /usr/bin/rmdir -p x -k file_deletion
3.监控系统关键命令


sudo auditctl -w /usr/bin/passwd -p x -k password_changesudo auditctl -w /usr/bin/sudo -p x -k privilege_escalation
4.监控所有二进制文件


# 监控 /usr/bin/ 目录下的所有执行sudo auditctl -w /usr/bin/ -p x -k bin_execution

参数说明

  • -w:监控路径

  • -p:权限类型

    • r = 读

    • w = 写

    • x = 执行

    • a = 属性改变

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

六、监控文件访问
1.监控密码文件

sudo auditctl -w /etc/passwd -p wa -k passwd_change
2.监控SSH配置文件

sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config
3.监控 sudoers 文件

sudo auditctl -w /etc/sudoers -p wa -k sudoers_change
4.监控重要目录

sudo auditctl -w /etc/ -p wa -k etc_changes
5.监控相关网站目录


sudo auditctl -w /var/www/html/ -p wa -k web_contentsudo auditctl -w /opt/app/ -p wa -k app_files
七、监控系统调用
1.监控所有删除文件的系统调用

sudo auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -S rmdir -k file_deletion
2.监控文件权限更改

sudo auditctl -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k file_permission
3.监控特权命令执行

sudo auditctl -a always,exit -F arch=b64 -S execve -k command_exec
4.监控特定用户的所有命令

sudo auditctl -a always,exit -F arch=b64 -S execve -F auid=1000 -k user_commands
5.监控非特权用户的特权操作

sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=0 -F auid!=0 -k privilege_abuse
八、搜索和分析日志
1.按照关键词搜索

sudo ausearch -k file_deletion
2.按照时间搜索


sudo ausearch -ts todaysudo ausearch -ts "10/05/2025 08:00:00" -te "10/05/2025 18:00:00"
3.按照用户信息搜索


sudo ausearch -ua 1000  # 按用户IDsudo ausearch -ui username  # 按用户名
4.生成报告










# 生成文件访问报告sudo aureport -f -i# 生成命令执行报告sudo aureport -x -i# 生成用户活动报告sudo aureport -u -i# 生成汇总报告sudo aureport --summary# 生成今天的事件报告sudo aureport -t
5.格式化输出




# 人性化显示sudo ausearch -k file_deletion -i# 只显示关键信息sudo ausearch -k file_deletion --raw | aureport -f -i
九、永久规则设置
1.配置文件位置

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

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

2.添加永久规则
编辑配置文件/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
3.应用规则




# 重新加载规则sudo auditctl -R /etc/audit/rules.d/audit.rules# 或者重启服务sudo systemctl restart auditd
十、实用监控脚本
1.实时监控脚本











#!/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 "---"    fidone
2.每日报告脚本
















#!/bin/bash# daily_audit_report.shREPORT_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
十一、故障排查
1.检查服务状态


sudo systemctl status auditdsudo auditctl -s
2.查看日志信息

sudo tail -f /var/log/audit/audit.log
3.测试规则








# 添加测试规则sudo auditctl -w /tmp/test -p rwa -k test# 触发测试touch /tmp/testfilecat /tmp/testfilerm /tmp/testfile# 查看日志sudo ausearch -k test -i
十二、性能优化配置

编辑 /etc/audit/auditd.conf











# 提高性能的配置log_file = /var/log/audit/audit.logmax_log_file = 100max_log_file_action = ROTATEnum_logs = 5space_left = 250space_left_action = emailaction_mail_acct = rootadmin_space_left = 50admin_space_left_action = SUSPEND
十三、实际应用案例
1.监控 Web 服务器目录




# 永久规则添加到 /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
十四、总结

auditd 是 Linux 内核的审计框架用户空间组件,在系统安全审计、合规性监控和故障排查等方向发挥重要作用。大家可以自行去实践更详细用法,一般遵循以下几点进行,发挥其更大作用。

  1. 先测试规则再应用到生产环境

  2. 定期清理和归档审计日志

  3. 设置磁盘空间告警

  4. 结合日志分析工具(如 ELK Stack)


打赏

本文链接:https://www.jingber.cn/post/3977.html 转载需授权!

分享到:

群贤毕至

访客

您的IP地址是: