如何防止某人通过引导加载程序获得 root 访问权限?

tor*_*eff 7 password boot grub2

在 Ubuntu 10.10 上,我可以通过替换ro quiet splashrw init=/bin/bash. 如何保护我的机器并禁用此后门?

Gil*_*il' 12

您需要确保几件事情的安全,因为让这些事情中的任何一件都打开会引入一扇具有类似影响的门(它并不是真正的后门,因为它都有很好的记录)。(例外:如果在步骤 1 中您也可以物理保护控制台,那么您不需要执行任何其他操作。)

  1. 物理保护计算机。您必须防止攻击者断开磁盘与计算机的连接并将其连接到他们控制的另一台计算机,以及重置固件访问控制。
  2. 使用密码(或其他形式的访问控制)保护计算机 BIOS(或其他引导固件)中的引导过程。确保内部硬盘是唯一选择的启动介质,以防止攻击者从 Live CD、USB 或其他介质启动。当然,也要锁定对 BIOS 的访问,这样攻击者就无法更改该设置。
  3. 保护引导加载程序,以便引导除默认命令行以外的任何内容都需要提供密码。

第 1 步和第 2 步与您的硬件有关,与操作系统无关,因此如果您遇到问题,请咨询超级用户。对于第 3 步,要做什么取决于您的引导加载程序(您没有指出)。Ubuntu 上的默认引导加载程序是Grub 2

首先,生成一个密码哈希grub-mkpasswd-pbkdf2

接下来,通过创建一个名为一个可执行文件(MOD 755或700)文件中声明一个用户名和密码/etc/grub.d/01_users(它的事项,该文件与人类01)与这些内容(这里grub.pbkdf2.….DEADBEEF就是grub-mkpasswd-pbkdf2生产):

#!/bin/sh -e
## Declare users and passwords
cat <<EOF
set superusers="torayeff"
password_pbkdf2 torayeff grub.pbkdf2.sha512.10000.DEADBEEF
EOF
Run Code Online (Sandbox Code Playgroud)

只有经过身份验证的超级用户才能编辑菜单项或输入命令行。其他用户只能引导准备好的条目。

如果您还想将某些引导条目限制为经过身份验证的用户,请在生成它们的位置替换menuentry "name"menuentry "name" --users "user1 user2"。为你的Linux系统,Memtest86是,你可能有一个机器上的任何其他操作系统的条目是/etc/grub.d/10_linux/etc/grub.d/20_memtest86+/etc/grub.d/30_os-prober分别。

在 中进行更改后/etc/grub.d,请sudo update-grub在重新启动之前运行。