使 passwd/shadow 文件更安全

信息安全 linux Unix
2021-08-24 10:48:25

类 unix 操作系统中的 passwd/shadow 文件包含敏感信息,例如用户密码。此外,这些文件不一定是安全的:使用 Live CD,我们可以访问硬盘驱动器上的这些文件,并可能获得对敏感信息的访问权限。

我的问题是:有没有办法让这两个文件更安全——也许“锁定”它们,甚至改变它们在文件系统上的位置?

3个回答

如果有人可以物理访问机器,他们可以修改这些文件以创建新的 root 帐户或破解现有的密码哈希,由于密码重用的普遍存在,这很有用。重命名或更改位置将是“(in)security 尽管默默无闻”,并且不会为这种攻击模式提供明显的保护。

保护自己的步骤:

1)设置BIOS密码,并强制您的硬盘驱动器为引导驱动器。但是,这并不妨碍有人从机器上卸下驱动器。

2) 考虑全盘加密。即使您只是加密 /etc/ ,也有人可以将 /usr/bin 或 /bin 替换为可以以 root 身份运行的恶意二进制文件。如果您是 suoder,甚至您的 /home/user/.bashrc 文件也可用于劫持您的 PATH 并获取 root。

但这不是一个完美的解决方案。您应该考虑分层安全性,并尝试阻止对机器的物理访问。(@jimbob 博士有一个很好的观点。)

默默无闻的安全性——在这种情况下,要求更改系统上密码文件的位置实际上并不能增强安全性。最初的 Unix 设计者知道这一点,并确保所有密码都在 passwd 文件中进行哈希处理,即使 /etc/passwd 文件对所有人都是完全可读的。影子文件——将散列密码令牌移动到 /etc/passwd 文件之外——只有在另一层安全被认为是有益的时候才变得流行起来。

Rook 的回答也很到位。如果您无法保护物理机器,那么敏感文件上的任何“锁定”都不会被遵守。即使在所有 POSIX 操作系统相互识别的文件上创建了某种形式的“锁”,我当然可以使用一些忽略“锁”的工具来提取数据。物理加密磁盘是“锁定”文件以防止从 Live-CD 环境访问文件的唯一方法。

密码当然是安全散列的。如果密码足够复杂,那么这应该足以让您的密码不为人知。

我假设您想阻止某人清除密码然后启动。这并不简单,但你可以有一个根启动脚本,这样当计算机启动时,它会检查影子文件是否不正确,如果是,它会删除、崩溃或以其他方式禁用机器或制作私人信息里面不可读。这不会停止清除密码,而是让您有机会在下次启动时采取措施。

但请记住,如果机器永远无法启动,黑客仍然可以读取所有文件,而不管影子文件是什么。

警告当然是您需要编写一些程序来检测对密码文件的恶意更改,同时在进行真实更改时不会破坏您。可能您只是想检测自上次已知副本以来是否有更改,但前提是该更改发生在机器脱机时