DAY005 – 首页文件权限错误&顺便开启日志审计服务
故障场景
故障现象:nginx health 正常,但首页无法正常读取
服务器状态:
server1:状态 INJECTED;开始时间 2026-07-15 21:00:20 +0000;影响范围 练习项目局部不可用,SSH 不受影响。
server2:状态 INJECTED;开始时间 2026-07-16 05:00:29 +0800;影响范围 练习项目局部不可用,SSH 不受影响。
排障过程
先看项目文档
先看本地实际返回
可以看出来,项目首页——nginx端口的发生权限不够的403报错,API接口都是正常的
可以看出是在nginx处出现的权限不足,从nginx相关日志、配置开始排查
查看对应应用的nginx日志
关键在于打开此首页却被拒绝访问
可能是nginx权限不足以访问文件/目录
实际看看首页文件 /opt/hermes-drills/day005/public/index.html 及其上级目录的权限设置
我去,index.html没给任何权限
先给网站恢复好,再查是谁、何时干的
测试首页返回
首页正常
后补:公网测试也正常
根因寻找
看谁或者何时干的可以看audit、history(.bashrc里开了持久时间记录更好)以及stat,但我忘记先看stat了,急着恢复业务了,没有用stat,audit服务器也没开,history时间记录也没开,只能用以下命令找找了
history | grep -E "关键词"
教训:在修复之前,应该将文件stat状态等输出保存证据到某文件
例如
stat index.html > /tmp/index.stat
ls -l index.html > /tmp/index.ls
monika用户至少在交互式终端中大概没有修改,或许是monika用户的脚本干的
又因为很多人操作喜欢用sudo,再去看看root的history
啥也没有
在项目脚本相关文件夹搜索是否是脚本所为
grep -E -R -C 3 "index\.html|chmod|touch" .
-E使用正则,-R文件夹内递归搜索,-C 3表示代码上下3行也输出,\来让index和html中间的.确实被搜索
第二张图发现问题所在
可能是把600写成了000眼花了吧
看看这个 ./bin/remote-worker.sh 是谁的文件,哪些人拥有执行权
哈哈,是monika用户个人脚本,是我干的~
这就是个AI制造故障的故障演练环境,不要太较真啊~
开启日志审计服务
为了以后能够更方便的溯源找根因,现在给服务器开个auditd(Linux 审计服务)
sudo apt update
sudo apt install auditd audispd-plugins
自启动
sudo systemctl enable --now auditd
创建规则文件
sudo vim /etc/audit/rules.d/hermes.rules
监视项目相关目录
-w /opt -p wa -k opt_watch
-w /home/monika/hermes-ops-drills -p wa -k hermes_watch
- -w即watch,监听目录或文件
- -p wa,即监控write写入变化和attribute属性变化
- -k即key,给它设置一个查询标签,下次直接搜索标签,就不用打目录名了
加载规则
sudo augenrules --load
显示No rules不要紧,我们用 sudo auditctl -l 能看到规则即可,这个才是真正生效的
试试配置成功没
touch x.md
sudo ausearch -k hermes_watch -i | grep "x.md"
可以清楚查询到文件是谁何时进行了改动
原文首发于个人博客:liujixiang.de5.net
- 点赞
- 收藏
- 关注作者
评论(0)