导读:本期聚焦于小伙伴创作的《如何使用CentOS系统的安全审计功能来追踪系统活动》,敬请观看详情。把一条可疑的删除命令和一次真实的误操作混在一起,运维往往很难说清到底是谁在什么时候动了生产文件。CentOS自带的auditd服务能记录系统调用、文件访问和用户登录等底层事件,是解决这类追踪难题的利器。它以内核模块捕获行为,比单纯翻看日志更可靠。配置好规则后,我们可以针对特定目录、命令或用户生成审计记录,再用ausearch和aureport提炼出有用线索。不少团队忽略了对审计日志的轮转保护,导致磁盘写满后服务异常,这部分也需要在部署时提前规划。

CentOS系统内置的审计子系统由auditd守护进程和内核中的审计模块共同组成,能够记录进程级系统调用、文件读写、权限变更以及用户会话等事件。它和rsyslog的区别在于,auditd直接挂钩内核,不容易被应用层绕过,因此在安全溯源和合规检查中非常关键。通过合理的规则定义,管理员可以精确追踪某个人、某条命令或某个目录发生过的所有活动。

如何使用CentOS系统的安全审计功能来追踪系统活动

一、auditd服务的基本架构

auditd并不是单独工作的,它分为内核态的审计钩子以及用户态的auditd服务。内核在进程执行系统调用、打开文件或切换用户时,会按预设规则生成一条审计事件,放入内核缓冲区。auditd进程负责从缓冲区取出事件,写入磁盘上的日志文件,默认路径为/var/log/audit/audit.log。

除了主服务,CentOS还提供了auditctl用于控制规则,ausearch用于检索日志,aureport用于生成统计报表。这些工具组合起来,既能实时调整监控策略,也能在事故后做离线分析。理解这套架构有助于我们判断为什么某些行为没有被记录,比如规则未加载或缓冲区溢出导致事件丢弃。

二、安装与启动auditd

多数CentOS minimal安装已包含audit包,若未安装可使用yum安装。启动后建议设为开机自启,避免重启后规则丢失。

# 安装审计组件
yum install -y audit

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

# 查看服务状态
systemctl status auditd

需要注意的是,auditd在部分旧版CentOS中不能用systemctl restart直接重启,因为守护进程自身受审计规则保护,应使用service auditd restart或kill信号。如果强行restart可能导致规则清空,这一点在自动化脚本里要特别处理。

安装完成后,可以通过auditctl -s查看内核状态,确认enabled值为1。若为0,说明审计被禁用,需要修改/etc/audit/auditd.conf或引导参数开启。

三、编写审计规则追踪系统活动

规则分为三类:控制规则、文件系统规则和系统调用规则。文件系统规则适合监控重要目录,例如/etc/passwd或业务数据目录;系统调用规则则可监控特定用户执行的命令。下面示例监控所有对/etc目录下文件的写操作。

# 监控/etc目录写与属性变更,防篡改
auditctl -w /etc/ -p wa -k etc_change

# 监控某用户执行rm命令
auditctl -a always,exit -F arch=b64 -S unlink -S unlinkat -F auid=1000 -k user_rm

参数-w指定监控路径,-p定义权限类型,w表示写,a表示属性修改。-k是自定义关键字,后续检索时能用它快速过滤。系统调用规则中arch=b64表示64位架构,auid是登录用户ID,即使切换了普通用户也能溯源到最初登录者。

为了让规则重启后依然生效,应写入/etc/audit/rules.d/下的规则文件,例如audit.rules,再通过augenrules --load加载。临时用auditctl加的规则仅存在内存,重启即失效,因此生产环境务必落盘。

四、检索与分析审计日志

当怀疑某时段发生了异常,可用ausearch按时间、关键字或用户提取记录。例如查看etc_change相关事件:

# 按关键字检索
ausearch -k etc_change

# 查看指定用户今日行为
ausearch -ua 1000 --start today

输出内容包含序列号、时间、调用类型、进程ID和文件路径等。初学者会觉得字段冗长,其实重点看type=SYSCALL行的exe和name即可定位命令与对象。若日志量巨大,可配合aureport生成摘要。

aureport能按用户、命令、文件生成报表,快速看出谁的活动最频繁。比如aureport -x可列出执行过的可执行文件统计,对发现非法脚本很有帮助。定期把报表发给安全负责人,是低成本合规手段。

五、日志轮转与磁盘保护

审计日志增长很快,尤其在高并发服务器上。/etc/audit/auditd.conf里可设置max_log_file和num_logs控制单文件大小和保留个数,space_left触发警告,admin_space_left则暂停记录或旋转。忽略这些参数可能导致/var/log填满,进而影响系统写操作。

# 示例配置片段
max_log_file = 50
num_logs = 10
space_left = 500
space_left_action = email
admin_space_left = 200
admin_space_left_action = rotate

此外,审计日志本身也是敏感数据,建议权限设为600且仅root可读。如果走集中式收集,可用audisp插件转发到远程日志服务器,减少本地篡改风险。这样即使主机被攻破,原始轨迹仍保留在外部。

六、常见误区与建议

一个典型误区是认为开了auditd就绝对安全。实际上规则写得宽泛会拖慢系统,写得窄又漏掉关键行为。建议从核心资产目录和特权命令入手,逐步细化。另一个误区是用grep直接翻audit.log,效率远低于ausearch,且容易误读编码字段。

对于容器环境,由于共享内核,auditd仍可在宿主机捕获容器内进程系统调用,但需留意容器ID映射。总体来看,把CentOS审计功能纳入日常运维,不仅能追踪误操作和入侵,还能在故障复盘时提供不可替代的证据链。

CentOSauditd系统审计修改时间:2026-07-31 12:51:28

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。