在信息安全中,完整性意味着数据不能被不检测地修改。
这个答案引起了我的兴趣,当然,我想保证我的操作系统的完整性,概述这里。假设有一个安全摄像头项目,您将每张照片存储到一个文件夹中。我使用 fswebcam -program、crontab 和一些 bash 脚本来自动拍摄照片。我是在二手店做的,预算非常低,重复使用旧笔记本电脑和旧相机,并且有一些限制,例如没有互联网连接。我不确定 obsd 操作系统是否提供了一些我可以使用但未使用的额外功能,也许是某种偏执模式。基本上,每个比较都有明确的预定义时间表:拍照(执行脚本,...),将其保存到文件中,... - 如果有任何不同,则发出警报。我不知道是否有任何方法可以冻结操作系统的其余部分,使其在其他服务中完全无法使用。一些笔记本电脑可能是射手,而一台笔记本电脑可能是接收器或核心数据中心。
- 如何使用可以协同工作的 obsd 笔记本电脑来做到这一点?
- 如何保证操作系统的完整性,使图片无法被删除,或者删除后会留下痕迹?
- 您会将射手和接收器放置在哪种模式下?它们处于不同的模式吗?为什么?
相关但不相同
答案1
如果你不需要物理安全,甚至对于一小部分物理攻击者来说,在我看来 OpenBSD 可以做到这一点,除非存在完美的错误风暴和选择不当的世界可访问服务,可以允许在内核模式下运行任意代码。
阅读 chflags(1)。它们甚至可以阻止 root 修改或删除文件。基本上将 sappnd 设置为您的照片目录并将 securelevel(7) 移动到 -> 2 即可完成这项工作。您还应该保护其他所有内容(特别注意未标记为 noexec、nodev 和 rc 脚本的分区),但即使您搞砸了,也必须重新启动系统才能从现有照片中删除标志。
结合类似的东西这很难不注意到有人试图篡改您的照片。
拍摄快照的机器可以进一步锁定,因为它们甚至不需要写入磁盘(系统日志除外)。
答案2
除非您可以阻止未经授权的访问操作系统和硬件,我不明白如何在不使用一次性写入存储的情况下保证任何系统的完整性。
答案3
您所描述的应用程序不一定需要操作系统级别的完整性 - 您可以只使用一次写入多次读取驱动器 (WORM),该驱动器物理上不允许删除/覆盖任何文件。
或者,您可以花费不多的钱购买带有 TPM 的机器(仍然比购买 WORM 驱动器要贵)
或者将 Tripwire 与 chroot 环境结合使用。
答案4
只是针对您的特定示例的一个额外想法,为了让事情变得简单:您可以向场外发送每张图片的哈希值(如果您买不起整张图片)。
确保场外服务仅具有“添加”功能(当然还要读取),即源系统无法删除现有记录。
最后有一个绊线式的场外脚本来将源服务器与场外哈希历史记录进行比较。
不确定这是否回答了您的问题,但对我来说,没有简单的方法可以在不求助于外部世界(第三方)的情况下绝对保证一个系统的完整性。即使这样也不能保证 100%,但至少可以显着降低所有系统受到损害的风险。