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 系:先装
debsums(sudo apt install debsums),再执行sudo debsums -c;无输出即全部正常,有输出则列出被改或缺失的文件 - 修复方式很明确:确认问题后,重装对应包即可,例如
sudo yum reinstall openssh-server或sudo 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)