监控/etc/shadow非法读取的核心是第一时间发现读取者,auditd通过内核级系统调用捕获实现精准识别;需确保auditd运行、加载模块、添加带-k的-w规则并固化到rules.d,再用ausearch按key实时检索。

监控 /etc/shadow 的非法读取,核心不是“防住读取”,而是“第一时间发现谁在读”。Auditd 能精准捕获内核级 open/read 系统调用,不依赖进程名或命令行,因此比日志分析或进程监控更可靠。
确认 auditd 已就绪并启用
没运行的审计服务加再多规则也无效:
- 执行
systemctl status auditd,看到 active (running) 才算正常 - 若未安装:RHEL/CentOS 用
yum install audit,Ubuntu/Debian 用apt-get install auditd - 首次启用后建议运行
systemctl enable --now auditd,确保开机自启且立即生效 - 检查内核是否加载审计模块:
lsmod | grep audit,无输出需手动modprobe audit
添加精准的只读监控规则
影子文件的非法读取往往来自非授权工具(如 cat、strings、perl -e 'open...'),必须用 -w 监控真实路径,并限定 -p r:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先确认真实路径和 inode:
ls -i /etc/shadow,规则中必须写这个绝对路径,不能写软链接或别名 - 添加临时规则测试:
sudo auditctl -w /etc/shadow -p r -k shadow_read -
-p r表示仅捕获读操作(open with O_RDONLY / O_RDWR / O_PATH 等触发读权限检查) -
-k shadow_read是关键——后续所有过滤都靠它,没有 key 就等于没加规则
让规则长期有效
临时规则重启即失效,生产环境必须固化:
- 新建规则文件:
sudo tee /etc/audit/rules.d/10-shadow-read.rules -w /etc/shadow -p r -k shadow_read<br>EOF
- 执行
sudo augenrules --load加载(不是 restart auditd) - 验证是否生效:
sudo auditctl -l | grep shadow_read,有输出说明已加载 - 再检查
sudo auditctl -s | grep enabled,确保 enabled 值为 1
实时发现与快速定位读取行为
加完规则不查日志,等于装了摄像头不看回放:
- 查最近 5 分钟的读取事件:
sudo ausearch -k shadow_read -m SYSCALL -i --start 5 minutes ago - 只看触发命令名(最常用):
sudo ausearch -k shadow_read -m SYSCALL -i --start now | grep "comm=",输出类似comm="cat"或comm="python3" - 结合用户 ID 过滤:
sudo ausearch -k shadow_read -ui 1001 -m SYSCALL -i(查 UID 1001 的读取) - 若返回为空,优先排查:规则路径是否写错、
auditd是否真在运行、enabled是否为 1










