Linux 运维操作如何实现可审计-linux运维

应启用 auditd 服务并配置 execve 系统调用监控规则,写入 /etc/audit/rules.d/ 并重启以持久化;配合 ausearch/aureport 分析日志,联动 rsyslog 加密外发至远程服务器确保审计连续性。

如何让 shell 命令执行记录可追溯

Linux 默认不持久化记录用户执行的命令,history 只保存在内存或当前会话的 ~/.bash_history 中,且易被覆盖、清空或绕过。真要审计,得从系统级日志入手。

核心做法是启用 auditd 服务,并配置规则捕获关键系统调用。比如监控所有 execve 系统调用,就能记录每个进程启动时的完整命令行参数(包括脚本、参数、环境变量等):

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

注意:32 位系统需用 b32;-k 后的标签用于后续日志过滤;该规则仅对当前运行生效,需写入 /etc/audit/rules.d/ 下的规则文件(如 cmd.rules)并重启 auditd 才能持久化。

  • 普通用户也能触发该规则,无需 sudo —— 审计是内核级行为,不依赖权限提升
  • execve 记录的是“实际执行的程序路径”,不是 alias 或函数名,所以别指望它显示 ll,只会看到 /bin/ls --color=auto
  • 高频命令(如循环中反复调用 date)可能撑爆日志,建议搭配 -F uid!=0 过滤掉 root 自身维护行为,或用 auditctl -e 2 锁定规则防篡改

为什么不能只靠 /var/log/secure 或 auth.log

这些日志只记录登录、sudo、PAM 认证事件,不记录用户登录后具体执行了什么命令。例如:sudo systemctl restart nginx 在 auth.log 中只体现为一次 sudo 授权成功,而真正执行的 systemctl 和其子进程调用链完全不可见。

更隐蔽的问题是:用户可通过以下方式绕过常规日志捕获:

  • 用 sh -c "command" 或 python3 -c "import os; os.system('...')" 启动命令,绕过 shell 的 history 机制
  • 直接调用二进制(如 /usr/bin/curl)而非别名或函数,跳过 bash 的命令解析层
  • 使用非交互式 shell(如通过 ssh 直接执行命令)时,~/.bash_history 根本不写入

只有 auditd 能覆盖所有这些路径,因为它工作在 syscall 层。

如何安全导出和分析 audit 日志

ausearch 和 aureport 是 auditd 自带的查询工具,比直接 grep /var/log/audit/audit.log 更可靠——它们能自动解析时间戳、UID、syscall 参数等结构化字段。

夏夕资源网专注于CMS网站模板,主流语言整站网站源码下载,网站建设相关教程分享,好用的软件素材整合下载,提供一站式便捷自助服务。
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,默认解压密码为"zy.lucklyus.top",如遇到无法解压的请联系管理员!
夏夕资源网-网站模板_免费源码_资源素材 » Linux 运维操作如何实现可审计-linux运维
在线时间:12:00 - 22:00
关注微信公众号:微信公众号
站长邮箱:[email protected]
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4001920+
  • 本周更新: 0+
  • 最后更新: 2026-03-16

本站指数

×
  • 运营天数: 1392+
  • 资源总数: 47989+
  • 用户总数: 1+
  • 今日更新: 0+
  • 访问次数: 4001920+
  • 本周更新: 0+
  • 最后更新: 2026-03-16