每小时扫描系统二进制文件完整性并邮件报警,核心是三步:生成可信哈希快照、定时比对、差异触发邮件;使用bash脚本结合find、sha256sum、diff和mail命令实现,无需额外工具。

用 Cron 每小时扫描系统二进制文件完整性并邮件报警,核心是三步:生成可信哈希快照、定时比对、差异触发邮件。不依赖复杂工具,纯 Bash + 标准 Linux 命令即可实现。
1. 选择关键二进制目录并生成初始哈希库
系统关键命令集中在 /bin、/sbin、/usr/bin、/usr/sbin。首次运行前需确保系统干净,再用 sha256sum 生成哈希清单:
- 创建快照目录:
sudo mkdir -p /var/lib/integrity-check - 生成哈希文件(排除动态链接库和脚本):
sudo find /bin /sbin /usr/bin /usr/sbin -type f -perm /111 2>/dev/null | xargs -r sha256sum | sort > /var/lib/integrity-check/binary-hashes.sha256 - 加写保护防篡改:
sudo chown root:root /var/lib/integrity-check/binary-hashes.sha256 && sudo chmod 600 /var/lib/integrity-check/binary-hashes.sha256
2. 编写扫描比对脚本(/usr/local/bin/check-bin-integrity.sh)
该脚本每次执行时重新计算当前二进制哈希,并与快照比对,发现差异立即发邮件:
- 脚本开头加
#!/bin/bash,设置语言环境避免排序异常:export LC_ALL=C - 重新生成当前哈希临时文件:
find /bin /sbin /usr/bin /usr/sbin -type f -perm /111 2>/dev/null | xargs -r sha256sum | sort > /tmp/current-hashes.tmp - 用
diff比对:diff /var/lib/integrity-check/binary-hashes.sha256 /tmp/current-hashes.tmp > /tmp/integrity-diff.tmp - 检测到差异则发送告警邮件:
if [ -s /tmp/integrity-diff.tmp ]; then<br> echo "⚠️ 文件完整性校验失败:发现二进制文件被修改" | mail -s "[ALERT] System Binary Tampering Detected" admin@example.com<br> # 可选:附加差异详情<br> mail -s "[DETAILS] Changed binaries" admin@example.com fi
- 清理临时文件:
rm -f /tmp/current-hashes.tmp /tmp/integrity-diff.tmp - 赋予可执行权限:
sudo chmod +x /usr/local/bin/check-bin-integrity.sh
3. 配置 Cron 每小时执行
使用系统级 crontab(避免用户环境变量问题):
- 运行
sudo crontab -e - 添加一行:
0 * * * * /usr/local/bin/check-bin-integrity.sh 2>&1 >> /var/log/integrity-check.log - 日志会记录每次执行时间及输出,便于排查(如权限错误、mail 命令不可用等)
4. 确保邮件功能可用
Linux 默认不一定配置 SMTP。推荐轻量方案:
- 安装
ssmtp或msmtp并配置 Gmail / 公司 SMTP;或 - 用
mailutils+ local sendmail(开发机可接受):sudo apt install mailutils(Debian/Ubuntu)或sudo yum install mailx(RHEL/CentOS) - 测试邮件是否通:
echo "test" | mail -s "test" admin@example.com
注意:该方案不覆盖所有攻击场景(如 rootkit 替换 find 或 sha256sum 自身),但作为基础纵深防御有效。如需更强保障,可配合 AIDE 或 Tripwire,并将哈希库存放在只读介质或远程服务器。










