![什么样的 Linux 可以像 debsums(Debian) 一样验证其所有文件/包,甚至更多?](https://linux22.com/image/50972/%E4%BB%80%E4%B9%88%E6%A0%B7%E7%9A%84%20Linux%20%E5%8F%AF%E4%BB%A5%E5%83%8F%20debsums(Debian)%20%E4%B8%80%E6%A0%B7%E9%AA%8C%E8%AF%81%E5%85%B6%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%2F%E5%8C%85%EF%BC%8C%E7%94%9A%E8%87%B3%E6%9B%B4%E5%A4%9A%EF%BC%9F.png)
# debsums -a, --all check configuration files (normally excluded)
然而,不仅在 tmp-dir 中,到处都有大量的临时辅助文件。
python的大约4000个二进制.pyc文件,默认情况下无法禁用:
# cat /etc/python/debian_config
# standard, optimize
byte-compile = standard
ETC...
是否有任何 Linux 发行版具有在线存储库,能够安全地验证我的计算机上安装的每个文件?
我说的是包管理器例如基于主机的入侵检测系统,具有现代加密技术,能够预防/检测任何感染。
答案1
基于 RPM 的系统有rpm -q --verify
,它做类似的事情。
然而,我认为这些功能都不是 IDS 的合适替代品。关键问题是校验和位于有问题的机器上,因此如果它已被泄露,您就不能信任本地校验和。
也许您可以从互联网存储库中获取新的校验和,但我仍然认为您使用包校验和的方式是错误的。
更好的选择是使用专用的文件完整性检查器,例如助手或者绊线。一旦系统进入已知良好状态,这些工具就可以让您计算系统的校验和,然后将它们存储在可移动只读介质(例如 CD-R)上以供以后比较。
包校验和方法的另一个问题是它不能检查/etc
文件之类的东西,因为众所周知它们会故意更改库存内容。使用 AIDE 之类的工具,您可以计算校验和后您对这些文件的库存版本进行更改,因此您可以自信地说更改是否是预期的。
这并不是说包校验和验证没有用。只是它并不是为了检测恶意修改。它用于检测意外更改,以便修复它们。例如,某人可能做了一个笨手笨脚的chmod -R
命令,然后Ctrl-C在意识到自己的错误后很长时间才运行,因此您验证包以找出哪些包的文件权限被破坏。
答案2
我更喜欢 Warren 的解决方案 (AIDE),但如果您真的想监视您的系统,请使用 CFEngine 或衍生产品(Puppet、Chef、saltstack 等)来管理文件系统的全部内容。使用包管理器来安装文件,使用配置管理系统来管理所有配置文件的内容,并在配置系统之外发生任何更改时发出警报(以及可能将内容更改回来)。不过,你走得越深入,解决方案就越复杂。完全管理系统及其上的所有文件是一项非常艰巨的任务。如果您不关心文件内容而只是在事情发生变化时收到通知,CFEngine 可以学习文件的校验和并为您监视它们。其他人可能有类似的功能,但速度会慢一些。我可以告诉你,你真的不想用 Puppet 进行频繁的递归文件系统监控。话又说回来,不同工具的学习曲线是不同的。 AIDE 很容易上手,CFEngine 可能是一个小挑战。