Linux auditd系统审计实战:规则配置与安全事件追踪方法

auditd安装与基本配置

auditd是Linux内核审计子系统的用户空间守护进程,提供系统级安全审计能力。服务器安全加固场景中,auditd能够记录文件访问、系统调用、用户权限变更等关键操作,是合规审计和入侵检测的基础组件。

在CentOS/RHEL系统上安装:

# 安装auditd
yum install audit -y

# 启动并设置开机自启
systemctl start auditd
systemctl enable auditd

# 验证auditd状态
systemctl status auditd

# 查看内核审计模块是否加载
lsmod | grep audit
# 输出应包含:
# audit        98304  3
# 表示audit子系统已正常工作

auditd的主配置文件位于/etc/audit/auditd.conf,关键参数说明:

# /etc/audit/auditd.conf 核心配置
log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
disk_full_action = SUSPEND
disk_error_action = SUSPEND
max_log_file = 100
max_log_file_action = ROTATE
num_logs = 10
space_left = 75
space_left_action = EMAIL
action_mail_acct = rootadmin@example.com

审计规则编写与加载方法

审计规则通过auditctl命令添加,或写入/etc/audit/rules.d/audit.rules文件实现持久化。规则文件修改后需要执行augenrules –load重新加载。

监控关键文件变更的规则配置:

# 监控/etc/passwd文件的写入操作
auditctl -w /etc/passwd -p wa -k identity_changes

# 监控/etc/shadow文件
auditctl -w /etc/shadow -p wa -k identity_changes

# 监控/etc/sudoers文件
auditctl -w /etc/sudoers -p wa -k privilege_escalation

# 监控SSH配置文件
auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config_change

# 监控crontab文件变更
auditctl -w /etc/crontab -p wa -k cron_change
auditctl -w /var/spool/cron/ -p wa -k cron_change

# 监控系统二进制文件篡改
auditctl -w /bin/ -p wa -k binary_tamper
auditctl -w /sbin/ -p wa -k binary_tamper
auditctl -w /usr/bin/ -p wa -k binary_tamper
auditctl -w /usr/sbin/ -p wa -k binary_tamper

# 监控用户/组变更
auditctl -w /etc/group -p wa -k identity_changes
auditctl -w /etc/gshadow -p wa -k identity_changes

规则参数说明:-w指定监控路径,-p指定监控权限(r读取/w写入/a属性变更/x执行),-k设置规则键值用于日志检索。同一key可以关联多条规则,方便后续按事件类型查询。

系统调用级别的审计规则:

# 审计所有execve系统调用(命令执行)
auditctl -a always,exit -F arch=b64 -S execve -k cmd_execution

# 审计unlink系统调用(文件删除)
auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -k file_delete

# 审计chmod/chown系统调用(权限变更)
auditctl -a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k perm_change
auditctl -a always,exit -F arch=b64 -S chown -S fchown -S fchownat -S lchown -k perm_change

# 审计特定UID的socket操作
auditctl -a always,exit -F arch=b64 -S socket -S connect -F auid=1000 -k network_access

# 按用户ID过滤,监控uid>=1000的普通用户
auditctl -a always,exit -F arch=b64 -S open -F auid>=1000 -F auid!=4294967295 -k user_file_open

安全事件追踪与日志分析

audit日志存储在/var/log/audit/audit.log中,格式为键值对。直接阅读原始日志效率低,通常使用ausearch和aureport工具进行检索分析。

# 搜索identity_changes相关的审计事件
ausearch -k identity_changes

# 搜索今天的时间范围内的特权提升事件
ausearch -k privilege_escalation -ts today

# 搜索特定用户的操作记录
ausearch -ua 1000 -ts today

# 搜索命令执行记录
ausearch -k cmd_execution -ts today | head -50

# 生成审计摘要报告
aureport --summary

# 生成事件类型报告
aureport -x --summary

# 生成用户登录报告
aureport -l

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

# 查看失败的系统调用
aureport --failed

解析单条审计日志的典型输出:

type=SYSCALL msg=audit(1726012345.678:1234): arch=c000003e   syscall=2 success=yes exit=3 a0=7ffd12345678 a1=0   a2=1b6 a3=0 items=1 ppid=1234 pid=5678 auid=1000   uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0   fsgid=0 tty=pts0 ses=2 comm="cat" exe="/usr/bin/cat"   key="user_file_open"

关键字段:auid是审计uid(原始登录用户),uid是当前有效用户,exe是执行程序的完整路径,comm是进程名,key是规则标记的键值。通过auid可以追踪即使用户执行了sudo提权后的原始身份。

auditd性能优化策略

auditd在高负载服务器上可能产生大量日志,影响系统性能。以下优化措施可以平衡审计覆盖度与性能开销:

# 限制审计速率,防止日志洪泛
auditctl -r 100
# 每秒最多记录100条审计事件

# 排除高频率但低价值的审计事件
auditctl -a never,exit -F arch=b64 -S clock_gettime -k time_call
auditctl -a never,exit -F arch=b64 -S gettimeofday -k time_call
auditctl -a never,exit -F arch=b64 -S stat -k stat_call
auditctl -a never,exit -F arch=b64 -S lstat -k stat_call
auditctl -a never,exit -F arch=b64 -S fstat -k stat_call

# 排除特定进程的审计
auditctl -a never,exit -F arch=b64 -S open -F exe=/usr/sbin/sshd -k ssh_internal

日志轮转方面,建议设置max_log_file为256MB,num_logs为20,配合logrotate做压缩归档。对于安全要求高的环境,可以将audit日志实时转发到集中式日志服务器(如rsyslog远程转发或Filebeat采集到ELK),防止攻击者通过删除本地日志掩盖痕迹。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linuxauditd-xi-tong-shen-ji-shi-zhan-gui-ze-pei-zhi-yu-an/

(0)
小编小编
上一篇 8小时前
下一篇 8小时前

相关推荐