我正在考虑使用 git 将我的整个 linux 服务器置于版本控制之下。这样做的原因是,这可能是检测恶意修改/rootkit 的最简单方法。我天真地认为,检查系统的完整性是必要的:每周左右使用救援系统挂载 linux 分区,检查 git 存储库是否仍然未被篡改,然后发出 git status 来检测对系统所做的任何更改。
除了明显的磁盘空间浪费之外,还有其他负面影响吗?
这是一个非常疯狂的想法吗?
这是否是一种检查rootkit的安全方法,因为我很可能至少要排除/dev和/proc?
答案1
那是个“坏主意”(tm)。除此之外,您的存储库运行速度会非常慢,并且随着每个修订版本的保存,情况会变得更糟。
尝试集中管理,如 puppet / cfengine / chef。这将使事情保持如您所愿,并恢复意外更改。
将其与 iwatch 之类的程序结合使用,即可获取未经授权的文件更改的电子邮件。
如果需要推出定制应用程序,可以将其与 rpm/deb 文件进一步结合。
时不时地加入像 rkhunter 或 chkrootkit 这样的东西,你就可以开始了。
任务完成。
答案2
另一种方法是设置绊线,这是 GPL 软件,它会扫描系统上所有重要文件,并确定哪些文件发生了您认为不可接受的更改。更改可以简单地定义为 mtime、inode 编号,直至加密性强的校验和。
如果您不想每晚都收到大量关于 中的文件更改/var/run
、 中的 DHCP 客户端文件更改/etc
等的报告,那么它需要进行一些设置和调整,但如果您确实为此费心,它确实会非常有帮助。
文件属性数据库已用密钥签名不是机器可以知道这些信息,这有助于您确信没有任何工具会恶意更改数据库或 tripwire 二进制文件。如果需要进行完整的取证分析,您可以将 tripwire 工具和数据库的副本刻录到只读介质中,该介质可以安装在服务器上,并用于验证自刻录光盘以来的所有更改。
如果您要这样做,那么在将机器部署到生产中之前设置并运行绊线非常重要,否则您永远无法完全确定在机器被绊线之前某些恶意用户没有机会感染机器。
答案3
我认为这不太可能奏效,但作为实验,我想看看如果只使用 /etc 文件夹执行此操作会发生什么。大多数配置信息都保存在那里。
答案4
我认为分析工具在系统中所做的更改是一个好主意:
- 在虚拟机中安装裸机 Linux
- 初始化根 git
- 安装你要分析的工具
- 查看该工具在您的系统中所做的所有更改
...删除虚拟机
您必须向.gitignore
文件中添加很多文件夹,例如 proc 等等。