有时候文件系统完整性审核工具是确保系统没有被入侵的唯一办法。当防火墙,恶意软件扫描工具,入侵检测系统以及你自己小心的维护工作都没有用的时候,除非你进行常规的文件系统完整性审核,否则可能你自己都不知道系统被黑客巧妙的入侵了。将其与日常备份结合起来,你就有了检测和恢复大部分被入侵系统的能力了。
当前有很多工具可以让我们对系统进行定期快照,并通过比对来审核系统文件的完整性。从理论上讲,我们所需要做的包括:
对没有被各种恶意软件以及rootkit入侵的系统进行快照。
安全的保存快照,防止其被篡改。
将其与之后的系统快照进行对比,从而判断系统文件是否被修改。
当前很多工具都能实现上述功能,只是其易用性和效率不同而已。而这些工具也因其所针对的系统环境不同而被进一步分类。当选择一款文件系统完整性审核工具时,我们要考虑的因素很多,包括操作系统的不同,网络环境的差异,是否可以进行远程快照生成和存储,是否支持特殊文件系统格式,是否具有自动日程安排和提醒等。
工具
Tripwire是一款著名的完整性审计工具,大家可以参考《Implement integrity auditing with basic utilities》。简单来讲:
Tripwire是适用范围最广泛,使用量最高的一款专业级的完整性审核工具。商业版本叫做Tripwire Change Auditing,同时它还有一个开源版本,适用于主流的Unix开源系统。
Tripwire之所以有广泛的使用量,是因为它非常灵活,可以通过配置应用于各种不同的环境。
换句话说,如果你想拥有的功能已经能通过现有的软件来实现了,那么就用现有的软件好了。其它选择包括rsync ,它是一款相对简单的独立的文件完整性审计系统。实际上,如果你将备份工具rsync 作为一个文件系统完整性审核工具,你同时也具备了一个文件备份系统,可谓是一石二鸟。
有些操作系统本身自带这样的软件,有些则没有,对于后者,可以选择上面提到的两款产品。比如,如果你运行的是FreeBSD 系统,而你采用的备份软件并不同时具备文件系统完整性审核系统,那么可以使用一个叫做mtree的工具实现该功能,而这个工具在每一款标准的FreeBSD系统中都有。FreeBSD在安装时就会利用mtree自动创建操作系统的一系列文件夹,同时Ports系统也使用它建立端口。由于它已经被安装在系统中了,那么我们就可以使用mtree作为文件系统完整性审计工具。它甚至还具备其它工具所不具备的功能。比如和Tripwire相比,mtree可以识别Unix系统的文件标旗。
最佳规则
虽然可以用来进行系统快照拍摄以及文件系统完整性审核的工具很多,但是一些基本的使用规则还是一致的:
你的文件系统中需要合理改变的部分越少,就越适合进行文件完整性审核。比如,在Unix系统上, /var 文件系统一般都会不断的变化,因为其上有很多日志文件,而针对这种持续更新变化的文件系统而保留一个可用的文件系统快照,几乎是不可能的。而另一方面, /bin文件系统很少发生变化,因为其中存储的只是核心系统工具,即大部分稳定的可执行程序。
文件系统中所包含的操作系统基本文件越多,尤其是包含的可执行的系统工具越多,就越有必要通过文件系统完整性审核工具进行保护。核心系统工具尤其容易遭受rootkit攻击,因为将一个好的工具替换为一个可以自动清除黑客攻击痕迹的被修改过的工具,是一些精明的黑客保持自己不被发现的很好手段。/bin文件系统中就包含了大量的Unix系统工具,而/var 文件系统下一般没有任何可执行文件。
如果系统被入侵了,那么拍摄快照时,应该确保拍摄快照的工具没有被入侵。这意味着,要么将拍摄快照的可执行文件存储于只读的媒介上,如不可复写的光盘,通过光驱读取并执行程序,或者在远程未被入侵的电脑上运行程序来拍摄快照。如果拍摄快照的程序也被入侵了,那么完整性审核系统就有可能失去其应有的作用。
快照应该被保存在不被入侵的环境。不管你使用的工具有多先进,以及你如何对快照文件进行保护,一旦一个黑客高手入侵了系统,并篡改了快照文件,那么这些快照文件就再也无法正确的代表系统最初的状态,也就无法再用来进行文件系统完整性审核了。
以一个确定准确的快照为依据,进行定期的完整性审核。你需要重新建立一个干净的系统快照的时间是在需要改变系统时,即在改变一个安全系统前需要获取系统快照。有些文件系统完整性审计工具,尤其是那些和备份工具结合的审计工具,比如rsync ,可能会要求你更频繁的进行系统快照,因为此类工具实际上就是在备份系统快照。
如果你打算修改文件系统中的某些内容,那么一定要在修改前将该文件系统与之前保存的系统快照进行比对,审核文件系统的完整性没有变化。这样做可以让你确信在你修改文件系统之前,系统仍然是安全的。如果经过审核发现了问题,那么应该立即对文件系统的变动进行追查,搞清楚原因后再进行原先需要进行的修改工作。否则这就失去了文件系统完整性审核的意义了。
如果你修改了文件系统中的内容,并且在修改前对文件系统进行了完整性审核,没有发现问题,那么在修改文件系统之后,应该在任何可能的恶意入侵还没有发生之前,立即获取新的文件系统快照。一旦你对文件系统进行了合理合法的修改,那么之前那个旧的文件系统快照就不在有效了,你应该用新的文件系统快照来代替原有的文件系统快照,以便在未来进行审核。
经常备份,充分利用备份服务器,这样才能在系统被入侵后,在第一时间恢复安全的系统文件。如果你所运营的系统对于在线时间有严格要求,而你又发现系统文件已经被篡改,你一定不希望在恢复文件系统时长时间离线。一个好的备份可以极大的缩短系统的恢复时间,因为就算系统上没有什么数据,你也不能重新安装整个系统。
如果一个系统在进行文件系统完整性审核时发现有问题,那么在解决这个问题之前,一定不要将敏感数据存储在这个文件系统中。这是一个完整性审核系统的主要目的:知道一个系统被入侵了,就可以通过安全恢复防止任何进一步的损失发生。
如果你在一个文件系统中发现了非法改动的痕迹,千万不要假定这种改动就仅仅出现在这一个文件系统中。
你的系统越容易成为目标,你就应该越认真的考虑安装文件系统完整性审核系统来保护你的系统。同时,就算是最粗心的用户,就算他的服务器系统再没有价值,一个基本的文件系统完整性审核系统也可以帮助到他。毕竟,越快知道自己的系统被入侵了,那么被攻击者修改和破坏的文件系统范围就越小。