直接用cron配置权限扫描任务,需锁定/etc/shadow、/etc/sudoers、/etc/ssh/sshd_config、/etc/crontab等高危文件,检查其权限是否符合000/440/600等严格值;脚本/usr/local/bin/audit-perms.sh每日凌晨2点执行,结果追加至/var/log/perm-audit.log,并同步巡查/tmp和/var/tmp下可执行shell脚本。

直接用 cron 配一个权限扫描任务,能快速发现系统里被悄悄改宽的敏感文件。关键不是扫得全,而是盯住那几个一宽松就出事的位置,再让结果自动落日志、可追溯。
明确要盯的高危文件和权限值
不是所有文件都值得天天扫,优先锁定这几类:
- /etc/shadow:必须是 000 或 400(仅 root 可读)
- /etc/sudoers 和 /etc/sudoers.d/*:必须是 440 或 400
- /etc/ssh/sshd_config:建议设为 600
- /etc/crontab 和 /etc/cron.d/*:应为 600 或 644(root 可写)
- /etc/passwd:通常 644 安全,但若意外含明文密码则需 600
写一个轻量审计脚本
保存为 /usr/local/bin/audit-perms.sh,内容如下:
#!/bin/bash
declare -A CRITICAL_FILES=(
["/etc/shadow"]="000"
["/etc/sudoers"]="440"
["/etc/ssh/sshd_config"]="600"
["/etc/crontab"]="600"
)
for file in "${!CRITICAL_FILES[@]}"; do
[[ -f "$file" ]] || continue
actual=$(stat -c "%a" "$file" 2>/dev/null)
expected=${CRITICAL_FILES[$file]}
if [[ "$actual" != "$expected" ]]; then
echo "$(date): [WARN] $file: $actual ≠ $expected" >> /var/log/perm-audit.log
fi
done给它加执行权限:chmod +x /usr/local/bin/audit-perms.sh
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
用 cron 每天自动跑一次
运行 sudo crontab -e,加入这一行:
0 2 * * * /usr/local/bin/audit-perms.sh
意思是每天凌晨 2 点执行。确保日志目录存在:mkdir -p /var/log,日志文件会自动追加。
顺手加个临时目录可执行文件巡查
恶意定时任务常把脚本扔进 /tmp 或 /var/tmp,顺带扫一下:
- 在上面脚本末尾加一行:find /tmp /var/tmp -type f -name "*.sh" -executable 2>/dev/null | xargs -r ls -l >> /var/log/perm-audit.log
- 或者单独起一条 cron:0 3 * * * find /tmp /var/tmp -type f -name "*.sh" -executable -delete 2>/dev/null(发现即删)

















