系统被篡改时应优先隔离取证,用绝对路径调用可信 工具、比对官方哈希、检查 stat 时间戳、包管理器验证(如 rpm -Vf)交叉确认;批量筛查核心命令与可疑二进制;通过重装或离线 ISO 恢复;部署aiDE、内核 lockdown、只读挂载等长效防护。

linux系统命令被篡改,说明系统可能已失陷,不能直接信任当前运行的命令(比如 ls、ps、netstat 甚至 sha256sum 本身都可能被替换)。关键在于:** 用未被污染的手段验证文件真实性,并优先隔离、取证、恢复 **。
确认是否真被篡改
别急着修复,先交叉验证。攻击者常替换常用命令但忽略冷门 工具 或静态二进制:
- 用绝对路径调用可信工具:如
/usr/bin/sha256sum /bin/ls(避免 PATH 污染); - 对比官方哈希值:从同一版本 ISO 镜像中提取
/bin/ls,本地计算sha256sum比对; - 检查文件元信息:
stat /bin/ls看mtime、ctime是否异常(如发生在凌晨 2 点且无运维操作); - 用包管理器自查:
rpm -Vf /bin/ls(RHEL/centos)或debsums -s /bin/ls(debian/ubuntu),输出含S(大小变)、5(校验和错)即为异常。
快速定位被改命令范围
单个命令异常往往不是孤立 事件,需批量筛查高频入口点:
- 检查
/bin、/usr/bin、/sbin、/usr/sbin下核心命令:用for i in ls ps top netstat ifconfig; do rpm -Vf /usr/bin/$i 2>/dev/NULL || echo "$i: not rpm-managed"; done; - 扫描可疑可执行文件:
find /bin /usr/bin -type f -perm /111 -size -500k -exec sha256sum {} ; | sort,观察是否有大量哈希值重复(可能是同个后门二进制覆盖多个命令); - 检查
$PATH开头目录:echo $PATH | tr ':' 'n',重点审查/usr/local/bin、~/bin等非系统默认路径是否混入恶意软链接或二进制。
安全恢复被篡改命令
修复动作必须基于可信源,禁止在疑似被控系统上下载或编译:
- 从原厂软件包重装:如发现
/usr/bin/curl异常,运行yum reinstall curl(RPM 系)或apt install --reinstall curl(DEB 系); - 用离线可信介质恢复:挂载原始安装 ISO,从中拷贝干净二进制,例如
mount -o loop CentOS-7-x86_64-DVD.iso /mnt && cp /mnt/Packages/curl-*.rpm ./ && rpm2cpio curl-*.rpm | cpio -idmv,再提取./usr/bin/curl; - 若整个
/usr/bin不可信,优先恢复sha256sum、cp、chown等基础工具,再逐步重建信任链。
建立长效完整性防护
事后加固比临时修复更重要,目标是让下次篡改能被秒级发现:
- 部署 AIDE:安装后立即初始化 数据库
aide --init,将生成的aide.db.new.gz重命名为aide.db.gz,加入 crontab 每日自动aide --check并邮件告警; - 启用内核模块保护:加载
kernel lockdown(如 CONFIG_SECURITY_LOCKDOWN_LSM=y),阻止未签名模块加载和 /proc/sys/kernel/kptr_restrict 绕过; - 限制命令执行权限:对非管理员用户禁用
sudo执行敏感命令,用chmod 700 /usr/bin等缩小可写范围(注意不影响服务运行); - 启用只读挂载:将
/usr、/boot等关键分区设为ro(只读),异常时需显式 remount rw 才可修改。