“
谁动了我的服务器?每一步操作都无处遁形!
在日常运维工作中,你是否遇到过这样的场景:
今天,我们就来手写一套轻量级、高可靠性的Linux命令行审计方案,让你的服务器拥有自己的“黑匣子”。
”
日志字段说明:
字段 | 含义 |
|---|
TIME | 精确到秒的时间戳 |
USER | 用户名+登录终端+来源IP(who am i输出) |
DIR | 执行命令时的当前工作目录 |
SCRIPT | 完整的命令原文 |
SUCCESS/FAILED | 命令退出码是否为0 |
为什么记录SUCCESS/FAILED?
这是审计的关键维度。如果某条命令返回非零退出码,往往意味着错误操作或异常行为,方便后续排查时快速定位风险操作。
一、核心思路:利用PROMPT_COMMAND钩子
Linux的PROMPT_COMMAND环境变量是一个非常强大的机制——每次用户在Shell中输入命令并按下回车后,Bash都会在执行下一个提示符之前,先执行PROMPT_COMMAND中定义的命令。
我们只需要在这个钩子里插入一段日志记录逻辑,就能实现“每敲一条命令,立刻写入审计日志”,而且不受用户注销、会话关闭的影响。