Linux文件篡改怎么检测_完整性校验方案讲解【教学】

Linux文件是否被篡改,核心靠的是“比对”——拿当前文件的指纹,跟它原本该有的指纹对照。只要内容有丁点变化,指纹就完全不同。检测不难,关键是选对方法、用对时机、存好基线。

Linux文件篡改怎么检测_完整性校验方案讲解【教学】

Linux文件是否被篡改,核心靠的是“比对”——拿当前文件的指纹,跟它原本该有的指纹对照。只要内容有丁点变化,指纹就完全不同。检测不难,关键是选对方法、用对时机、存好基线。

用md5sum或sha256sum做轻量级校验

这是最直接、无需额外安装的方式(coreutils包自带)。适合检查单个关键文件或小范围目录:

  • 生成原始指纹:比如对 /etc/passwd 记录一次哈希值
    sha256sum /etc/passwd > /root/etc_passwd.sha256
  • 后续复查:运行 sha256sum -c /root/etc_passwd.sha256,输出 /etc/passwd: OK 表示未变;若显示 FAILED,说明内容已被修改
  • 注意:MD5虽快,但已不推荐用于安全场景;优先用 sha256sum,抗碰撞更强,且系统普遍支持

用RPM或debsums验证软件包文件

适用于RHEL/CentOS或Debian/Ubuntu这类包管理完善的系统。它不依赖你手动记录,而是直接查软件包数据库里“出厂时承诺的文件状态”:

  • RHEL系:运行 rpm -Va 检查所有已安装包的文件(权限、大小、哈希、时间戳等)。输出形如 S.5....T. c /etc/ssh/sshd_config,其中 5 表示哈希值变了,c 表示是配置文件
  • Debian系:先装 debsumssudo apt install debsums),再执行 sudo debsums -c;无输出即全部正常,有输出则列出被改或缺失的文件
  • 修复方式很明确:确认问题后,重装对应包即可,例如 sudo yum reinstall openssh-serversudo apt install --reinstall openssh-server

用AIDE建立长期完整性监控

如果需要持续盯防关键系统目录(如 /bin/sbin/etc),AIDE(Advanced Intrusion Detection Environment)是专业选择。它不是临时比对,而是建一个本地可信基线库:

  • 安装后先初始化数据库:sudo aide --init(生成 /var/lib/aide/aide.db.new.gz
  • 把新库设为正式基线:sudo cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
  • 日常检查只需运行 sudo aide --check,它会报告新增、删除、属性或内容变更的文件
  • 建议将AIDE数据库和配置文件(/etc/aide.conf)单独备份到离线介质或只读挂载点,防止被攻击者一并覆盖

补充技巧:快速定位可疑文件

除了比对,还可以从行为反推异常:

  • 查不属于任何包的“幽灵文件”:rpm -qf /path/to/file(RHEL)或 dpkg -S /path/to/file(Debian),若提示“not owned”,需重点审查
  • 找最近被修改的系统二进制:find /bin /sbin /usr/bin -type f -mtime -7 -ls,结合 stat 看详细时间与权限变化
  • 锁定不可篡改的关键文件(仅限确信无需再改):chattr +i /usr/bin/sudo,这样连root也无法删除或覆盖(解除用 chattr -i