说unix haters handbook
:
/etc/getty, which asks for your username, and /bin/login, which asks for your pass-
word, are no different from any other program. They are just programs.
They happen to be programs that ask you for highly confidential and sensi-
tive information to verify that you are who you claim to be, but you have no
way of verifying them.
对于现代 Linux 系统来说是这样吗?
答案1
默认情况下,除了文件权限(以及可能的只读挂载)之外,系统程序和库文件没有特殊的完整性保护;不存在受特殊保护的系统文件之类的东西。从这个意义上来说,答案是是的,这是真的。
您可以使用 tripwire 或 aide 等程序遵循基于主机的 IDS 方法,为每个重要文件创建合适的校验和,将它们存储在安全的地方,并定期将它们与实际重新计算的校验和进行比较,以注意到任何更改。显然,在安装每个更新或补丁时都需要更新校验和数据库。大多数包管理器都维护这样的校验和列表,并允许检查已安装文件的完整性。如果以有意义的方式遵循这种方法,则会有点复杂,因此很少见。
另一种方法是通过使用基于角色的访问控制 (RBAC) 和强制访问控制 (MAC) 的附加组件(如 SELinux 或 Grsecurity)来强化系统以防止完整性违规,如果应用正确,即使是 root 也无法修改系统文件除非它进入指定的角色。这里的关键是设计一种策略,在不破坏合法应用程序活动的情况下抑制不需要的操作。这绝非微不足道,因此也很少见。
然而,在深入考虑其中任何一个之前,需要定义攻击模型并指定场景:20 年前,Unix 机器是真正的多用户系统,潜在的不值得信任的用户可以访问该系统。这些日子已经过去了;今天,您拥有具有功能用户(例如“网络服务器”或“数据库”)的服务器,或者您拥有具有一个用户的个人计算机上的桌面系统。