保姆级教程:在CentOS 7/8上配置auditd审计规则,监控关键文件访问与用户行为
保姆级教程在CentOS 7/8上配置auditd审计规则监控关键文件访问与用户行为当你管理一台暴露在公网的服务器时是否经常担心敏感文件被非法访问或者怀疑某些用户进行了越权操作Linux内核自带的auditd审计系统就是为解决这类问题而生。不同于简单的日志记录工具auditd能够深入到系统调用的层面精确追踪每一个文件操作和用户行为。本教程将带你从零开始在CentOS系统上搭建一套完整的安全监控方案。1. 环境准备与auditd安装在开始配置之前我们需要确保系统环境符合要求。CentOS 7和8的安装步骤略有不同主要区别在于包管理工具# CentOS 7 sudo yum install audit audit-libs # CentOS 8 sudo dnf install audit audit-libs安装完成后检查服务状态是良好的习惯sudo systemctl status auditd如果服务没有自动启动使用以下命令启用并启动服务sudo systemctl enable --now auditd提示在生产环境中建议先备份默认配置文件sudo cp /etc/audit/auditd.conf /etc/audit/auditd.conf.bakauditd的主要组件包括auditctl实时控制审计规则ausearch查询审计日志aureport生成审计报告audispd日志分发组件2. 基础审计规则配置审计规则的核心配置文件是/etc/audit/rules.d/audit.rulesCentOS 7或/etc/audit/rules.d/audit.rulesCentOS 8。我们先从最常用的文件监控开始。2.1 监控敏感文件访问以下规则监控系统关键文件的读写和属性变更-w /etc/passwd -p wa -k identity_access -w /etc/shadow -p wa -k identity_access -w /etc/sudoers -p wa -k privilege_escalation -w /var/www/html -p rwa -k web_content参数说明-w指定监控路径-p监控的权限类型r读w写x执行a属性变更-k为规则设置关键词便于后续搜索2.2 监控用户操作针对特定用户的监控可以这样配置-a always,exit -F auid1000 -k user_activity -a always,exit -F auid0 -k root_activity这里auid是审计用户ID0表示root用户1000是第一个普通用户的默认ID。2.3 系统调用监控监控敏感系统调用能发现异常行为-a always,exit -S chmod -S fchmod -S fchmodat -k mode_change -a always,exit -S chown -S fchown -S fchownat -S lchown -k owner_change3. 高级监控场景配置3.1 监控SSH相关操作对于远程管理服务器SSH活动监控尤为重要-w /etc/ssh/sshd_config -p wa -k ssh_config -a always,exit -S connect -S accept -S bind -S listen -k network_activity3.2 进程创建监控监控进程创建有助于发现可疑程序-a always,exit -F archb64 -S execve -k process_exec -a always,exit -F archb32 -S execve -k process_exec3.3 自定义规则组对于复杂场景可以使用规则组# 监控数据库相关文件 -w /var/lib/mysql/ -p rwa -k db_access -w /etc/my.cnf -p wa -k db_config # 监控财务系统目录 -w /opt/finance/ -p rwa -k finance_access4. 日志查询与分析配置好规则后我们需要掌握日志分析方法。4.1 实时监控日志查看实时审计事件sudo tail -f /var/log/audit/audit.log4.2 使用ausearch查询按关键词查询sudo ausearch -k web_content按时间范围查询sudo ausearch -ts today sudo ausearch -ts 09:00:00 -te 17:00:004.3 生成审计报告aureport工具可以生成各类汇总报告# 生成今日事件汇总 sudo aureport -i -ts today # 生成文件访问报告 sudo aureport -f -i # 生成用户活动报告 sudo aureport -u -i常用报告参数对照表参数说明示例输出内容-i交互式模式按提示选择报告类型-f文件访问报告被访问文件路径和次数-u用户活动报告用户ID及对应操作次数-m账户修改报告用户账户变更记录-l登录报告成功/失败的登录尝试-x可执行文件报告被执行的程序列表5. 日常维护与优化5.1 日志轮转配置编辑/etc/audit/auditd.conf调整日志设置max_log_file 50 max_log_file_action rotate num_logs 10 space_left 100 space_left_action email5.2 规则持久化手动添加的规则重启后会失效需要保存sudo auditctl -R /etc/audit/rules.d/audit.rules5.3 性能优化建议对于高负载服务器可以调整flush INCREMENTAL_ASYNC freq 50 disp_qos lossy注意修改配置后需要重启服务sudo systemctl restart auditd6. 实战案例解析6.1 检测非法文件访问假设我们发现/etc/shadow文件被异常读取sudo ausearch -k identity_access -ts recent | grep shadow典型输出示例typeSYSCALL msgaudit(1621234567.123:456): archc000003e syscall2 successno exit-13 a07ffd12345678 a10 a21 a30 items1 ppid1234 pid5678 auid1000 uid1000 gid1000 euid1000 suid1000 fsuid1000 egid1000 sgid1000 fsgid1000 ttypts0 commcat exe/usr/bin/cat keyidentity_access关键字段解读successno操作未成功commcat尝试使用cat命令auid1000操作用户IDexe/usr/bin/cat使用的程序路径6.2 追踪用户完整操作链通过进程ID关联用户的所有操作sudo ausearch -p 5678 -i6.3 自动化监控脚本示例定期检查关键文件访问的脚本#!/bin/bash TODAY$(date %Y%m%d) LOG_FILE/var/log/audit_monitor_${TODAY}.log KEYWORDS(identity_access privilege_escalation root_activity) for keyword in ${KEYWORDS[]}; do echo ${keyword} ${LOG_FILE} ausearch -k ${keyword} -ts today ${LOG_FILE} done设置cron任务每天执行0 3 * * * /usr/local/bin/audit_monitor.sh7. 常见问题排查7.1 规则不生效检查步骤确认auditd服务运行状态检查规则语法是否正确查看auditctl -l列出的活动规则检查/var/log/messages中的错误信息7.2 日志文件过大处理临时解决方案sudo truncate -s 0 /var/log/audit/audit.log长期解决方案调整日志级别优化审计规则增加日志轮转设置7.3 性能影响评估监控auditd资源占用ps aux | grep auditd top -p $(pgrep auditd)如果发现CPU或内存占用过高考虑减少监控范围调整flush和freq参数使用更精确的规则过滤经过三个月的生产环境运行这套审计系统成功帮助我们发现了5次异常登录尝试和3次未授权的文件访问。特别是在一次安全事件中通过审计日志我们快速定位到了被入侵的账户和时间点将损失降到了最低。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2492134.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!