在 Linux 中,有一种方法可以重置 root 密码;为什么这是允许的?
任何有权访问物理机的人都可以更改 root 密码,而不自知。
有没有办法防止这种情况发生?
答案1
因为物理篡改是极其防不胜防。
安全性和便利性之间总是需要权衡。
物理访问使得软件级保护无法实施。
那么,为什么会给用户带来不便呢?无论如何你都无法阻止黑客。
- 如果是具有物理访问权限的黑客,您不会仅仅通过告诉他们“抱歉,您没有密码”来将他们锁定,并且
- 如果是计算机的合法用户,则拒绝让他们重置密码会让他们的事情变得更加困难。
为了防止这种情况:
不允许不受信任的人物理访问您的计算机。
是的,您可以加密您的磁盘。但如果你经常允许不受信任的人进行物理访问,那么游戏就结束了反正。
答案2
如果您具有 root 访问权限,Linux 允许重置 root,因为没有办法阻止它,也没有任何理由阻止它。 Root 访问权限意味着您有权执行所有操作。一切都包括更改 root 密码。您不需要 root 密码来更改 root 密码,只需获得对 root 帐户的访问权限 - 如果您可以以不同的方式访问 root 帐户,那么您可以更改 root 密码,因为 root 可以再次访问做任何事。
没有办法防止这种情况发生,因为这在逻辑上是不可能的。如果你能做到一切,你可以更改 root 密码。显然可以给予某人有限的访问权限,不允许他们更改 root 密码,但这样他们就没有 root 访问权限,而只是拥有一个非特权帐户。
如果您有物理访问权限,Linux 本身通常不允许获得 root 访问权限。这就是它的一个特点引导装载程序:它允许在启动时有权访问控制台的人请求特殊的恢复模式,并且根据此恢复模式的工作原理,它可能允许无需身份验证的 root 访问。恢复模式的工作原理是指示Linux在启动期间启动一组与正常启动不同的程序(正常启动包括很多服务,包括登录提示);最“极端”的恢复模式是添加init=/bin/sh
到内核命令行,它指示 Linux 在控制台上运行 root shell,仅此而已。
恢复模式可以被禁用或受密码保护。这样,具有控制台访问权限的人将无法获得 root 访问权限,除非他们可以进行身份验证。这可以通过更改BIOS配置来绕过,因此为了进行有效的保护,还需要锁定BIOS配置(防止更改引导设备或在未输入密码的情况下更改BIOS配置)。
这足以防止可以访问键盘的人,但不能防止可以物理访问计算机本身的人。他们可以拔出硬盘,将其安装到另一台机器上,然后根据需要检查和更改文件。如果您想防止这种情况发生,任何密码检查都无法帮助您:您的软件没有运行。您可以通过加密硬盘来防止这种情况。然后,为了重新启动系统以访问它,攻击者必须知道加密密码(或插入带有加密密钥的智能卡)。这样做的实际缺点是某人必须输入加密密码或插入卡:您无法进行有用的加密和无人值守启动。
答案3
在 Linux 中,有一种方法可以重置 root 密码;为什么这是允许的?
这种说法并不正确。由于设计选择,许多 GNU/Linux 发行版都是如此;但 Linux 内核却并非如此。
您可以构建基于 Linux 的设备,即使通过物理访问也能防止篡改。这就是 Android 手机或平板电脑背后的想法。
通过使用加密磁盘卷进行安装,可以为台式机或笔记本电脑 Linux 机器提供一定程度的防篡改保护。每次启动时,您都必须提供正确的密码才能挂载根文件系统。 (因此能够控制启动过程,就像使用自定义内核参数一样,不会让您访问机器)。
答案4
加密您的磁盘以避免篡改和覆盖 chroot 中的密码。如今,许多(或大多数)发行版安装程序都提供加密磁盘功能。
显然,如果您丢失了磁盘密码,磁盘就会变砖,您绝对无能为力。