我在 CentOS 6 机器上遇到了一个奇怪的问题。几个小时前,我丢失了 /bin 中的大部分文件 - 例如 ls、ps、mount、rpm 都不见了。似乎丢失的文件是 coreutils 提供的文件,但其他 coreutils 文件(手册页、/etc、/usr/bin 中的内容)仍在原处。
这到底是什么原因造成的?有人见过类似的事情吗?
今天早些时候,我注意到 crond 没有在系统上运行,于是我重新启动了它。目前还不知道它为什么停止运行。它可能已经休眠了一段时间,因为它在启动后每天、每周和每月运行脚本。到目前为止,我唯一的理论是 cron 运行的某些东西删除了文件,但我不知道这是怎么发生的。唯一的自定义 cronjob 是一个备份脚本,它将 mysqldump 和 gzip 运行到 nfs 共享。
我发誓我没有意外删除这些文件。并且目前没有其他管理员可以访问该系统,因为该系统尚未投入生产。
这是我现在在 /bin 中的内容的列表。“dir”仍然有效。
# 目录 /bin awk dd gettext lscgroup sleep umount basename df grep mail 排序 uname bash dns域名 gtar ping stty unicode_stop cgclassify dumpkeys gunzip readlink su 取消链接 cgcreate ed 主机名 rmdir sync zcat cgexec ex ipcalc rnano tar 删除 false iptables-xml rview 任务集 dbus-cleanup-sockets 查找链接 setfont touch dbus-uuidgen gawk loadkeys sh traceroute6
没什么。。我感觉我这里漏掉了一些重要/简单的东西,但我却想不起来。我可以根据要求提供更多信息。
更新: 我一直在浏览系统日志,没有发现任何奇怪的登录、rm 命令或错误。root 的邮箱中有很多来自 cron 作业的“未找到命令”消息,但在这种情况下这是意料之中的。服务器是运行 apache 和 mysql 的 VMware VM。入侵不太可能发生(是的,我知道这听起来像什么)。
更新 2:
我安装了另一个 Centos 6 VM(来自 dvd iso,之前的问题主机来自最小映像)并很快遇到了类似的问题,但到目前为止我只缺少几个命令......
以下是我所做的完整列表:
- 从 DVD .iso 安装 centos 6,安装到 esxi 4.1 vm 中
- 在安装中选择“Web 服务器”作为基础包
- 配置的网络接口
- 在 /etc/profile 中配置代理(使用 vi - 稍后注意)
- 安装了 mysqld 和一些 php 包
- 删除了 postgresql
- 将一些数据放入 mysql db + apache documentroot
- yum 更新
- 尝试配置 apache 虚拟主机 -注意到 vi 丢失了
- 注意到 /bin/cp 也丢失了
- coreutils & vim-minimal 根据 rpm 安装
yum.log 显示在 yum 更新期间 vim-minimal 已更新,coreutils 未更新,未看到任何软件包删除。在 dmesg、/var/log/secure、/var/log/messages 中看不到任何异常
答案1
像往常一样,这是人为错误造成的。看来我记录的任务列表并不完整。在某个时候,一个未完成的备份脚本被推送到服务器,它没有清理旧备份,而是清理了……其他东西。
答案2
您是否尝试过在已知干净的完全离线安装版本上运行文件完整性检查器,而不是当前安装?您是否对安装映像/CD 进行过检查?如果重新安装相关软件包,这些文件是否会重新消失?它们是否以特定间隔或随时间发生(文件完整性检查器)?您的驱动器空间是否正在减少(想要检查文件是否被隐藏而不是被删除)?您是否尝试过从取证/其他操作系统启动并从那里运行审计?例如,BackTrack 或 Knoppix?您是否运行过网络/数据包嗅探器来查找异常活动?