哈希值比对是最轻量可靠的首道防线,优先校验/bin/bash、/usr/bin/sudo等高危文件,哈希须来自发行版官网或rpm签名验证,通过脚本或工具批量比对并纳入巡检与告警。

直接比对关键二进制程序的哈希值,是最轻量、最可靠的第一道防线。它不依赖包管理器状态,也不需要额外服务,只要原始哈希可信、本地计算准确,就能快速发现篡改。
锁定高危目标文件
不是所有程序都需要校验,优先覆盖攻击者最常下手的入口点:
- /bin/bash、/usr/bin/sudo、/usr/bin/ssh:权限提升和远程控制核心载体
- /usr/sbin/sshd、/usr/bin/curl、/usr/bin/wget:网络通信与横向移动常用工具
- /etc/shadow、/etc/passwd(需用 sha256sum 配合 stat 确认 inode 和 mtime 未被伪造)
- 若系统启用 systemd,补充校验 /usr/lib/systemd/systemd
获取并验证可信哈希源
哈希值本身必须来自权威渠道,否则校验失去意义:
- 从发行版官网“Checksums”或“Release Notes”页面下载对应版本的 SHA256SUMS 文件(如 Ubuntu 的
SHA256SUMS.gpg),用 GPG 验证签名后再提取目标文件哈希 - RHEL/CentOS/Rocky 用户可查 RPM 包源:
rpm -qf /bin/bash --qf "%{SIGPGP:pgpsig}\n"确认包签名有效,再用rpm -V bash交叉验证 - 避免使用第三方博客、论坛或未经验证的 GitHub gist 提供的哈希值
执行本地哈希计算与比对
命令要简洁、可复现、防误操作:
- 单文件比对:
sha256sum /bin/bash | cut -d' ' -f1输出结果,手动与可信哈希逐字符比对(注意大小写、空格、换行) - 批量校验脚本示例(保存为
check-critical.sh):#!/bin/bash<br>declare -A hashes=(<br> ["/bin/bash"]="a1b2c3..."<br> ["/usr/bin/sudo"]="d4e5f6..."<br>)<br>for file in "${!hashes[@]}"; do<br> if [[ -f "$file" ]]; then<br> local_hash=$(sha256sum "$file" | cut -d' ' -f1)<br> if [[ "$local_hash" != "${hashes[$file]}" ]]; then<br> echo "[ALERT] $file mismatch: got $local_hash, expected ${hashes[$file]}"<br> fi<br> else<br> echo "[MISSING] $file not found"<br> fi<br>done - 图形环境用户可用 Gtkhash(银河麒麟等国产系统)或 HashCheck(Windows),右键文件 → “Properties → Hashes”,选择 SHA256,免输命令
纳入日常巡检与自动化响应
人工比对适合应急排查,长期防护需固化流程:
- 将哈希校验脚本加入 crontab(如每天凌晨 3:15 执行),输出日志到
/var/log/hash-check.log,异常时触发邮件或企业微信告警 - 配合 SysmonForLinux 监控进程启动事件:若检测到
/tmp/.bash或/dev/shm/ld.so这类路径启动 bash,立即关联检查/bin/bash哈希是否变动 - 生产环境建议升级为 AIDE:首次初始化后生成数据库并设为只读,后续定期
aide --check,自动报告所有变更(包括权限、所有者、内容)











