auditd可精准监控/root/.ssh/authorized_keys被谁、何时、通过哪个进程修改,命令为auditctl -w /root/.ssh/authorized_keys -p wa -k root-ssh-key-change,并需写入/etc/audit/rules.d/持久化。

直接监控 /root/.ssh/authorized_keys 文件的篡改行为,是加固SSH访问安全的关键一步。Auditd 能精准捕获“谁、在何时、通过哪个进程”修改了该文件,且记录不可删除、不可伪造。
一、添加实时监控规则
运行以下命令,立即生效(无需重启服务):
auditctl -w /root/.ssh/authorized_keys -p wa -k root-ssh-key-change
- -w:指定被监控的完整文件路径(注意路径必须真实存在,否则规则无效)
-
-p wa:仅捕获“写入(w)”和“属性变更(a)”,比如 chmod、chown、重命名或覆盖写入;不建议加
r或x,避免日志噪音 -
-k root-ssh-key-change:设置关键词标签,后续用
ausearch -k可快速过滤
二、确保规则持久化(重启后仍有效)
临时规则在系统重启后会丢失。需写入配置文件:
echo "-w /root/.ssh/authorized_keys -p wa -k root-ssh-key-change" | sudo tee /etc/audit/rules.d/ssh-keys.rules
然后加载全部规则:
sudo augenrules --load
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
验证是否载入成功:
sudo auditctl -l | grep authorized_keys
三、验证与排查技巧
手动测试一次修改(如用 echo "test" >> /root/.ssh/authorized_keys),再执行:
sudo ausearch -k root-ssh-key-change -i | tail -5
你会看到类似输出:
- type=SYSCALL:系统调用类型(如 openat、write、truncate)
- auid= 和 uid=:审计用户ID 与 实际执行用户ID(可识别 sudo 切换)
- exe="/usr/bin/bash" 或 exe="/usr/bin/nano":具体执行程序
- comm="bash":触发命令的进程名
若无输出,检查:
– 目录 /root/.ssh/ 是否存在且权限正确(700)
– auditd 服务是否运行(systemctl status auditd)
– 规则中路径是否拼写错误(区分大小写、有无多余空格)
四、进阶建议
- 同时监控
/etc/ssh/sshd_config,防止攻击者禁用密钥登录或开启 PermitRootLogin:auditctl -w /etc/ssh/sshd_config -p wa -k ssh-config-change - 若服务器允许多个管理用户,建议对每个用户的
~/.ssh/authorized_keys单独加规则(例如-w /home/alice/.ssh/authorized_keys) - 配合日志轮转策略,在
/etc/audit/auditd.conf中调大max_log_file和num_logs,避免关键事件被覆盖










