我正在努力了解文件完整性监控的工作原理,我觉得我错过了一些东西。根据我的阅读,要监视的文件的加密哈希值存储在数据库中。然后,定期重新计算这些文件的哈希值并进行比较以检查更改。这是我的问题:
如果代码要定期检查当前 哈希与我们正在检查的代码位于同一服务器上,并且 服务器遭到入侵,攻击者无法修改完整性 检查员呢?这似乎会打败整个观点。
但是,如果检查器在另一台机器上,则必须这样做 将所有文件从服务器传输到检查器机器 计算哈希值。这可能非常耗时且带宽 密集的。
我错过了什么?
更新:我徒劳地遇到了一个有趣的想法。对于类似的问题,有人建议using rsync来比较哈希值。我知道这不是什么rsync所做的,但经过一些初步测试后似乎工作(而且它真的很快)。想法?
答案 0 :(得分:2)
这取决于威胁模型。如果攻击者不知道你正在检查哈希是否为黄金,那么任何检查都会有效。如果攻击者拥有您的系统,唯一可行的是离线检查。
关于你的第一点,你是对的,一旦拥有一个系统,你就不能相信任何东西,但你可以取出驱动器并离线比较这些变化。您可以使用它来诊断攻击。此外,您可以从只读媒体运行,如之前刻录的DVD,它不会阻止所有攻击,但同样,根据线程模型会停止一些。
关于第二点,如果你信任校验和计算器,你可以将哈希移动到“检查机器”。请注意,有动机的攻击者可以在本地运行修改后的文件时为您提供远程发送文件的“原始”副本,或者甚至在其他所有情况下运行修改过的文件时将原始副本提供给本地检查程序,如果他们有足够的权限。