CentOS/RHEL 7:如何为 GRUB2 菜单项设置密码

仅限制 GRUB 菜单项编辑

如果我们只想简单地阻止用户进入 grub 命令行和编辑菜单项(而不是完全锁定菜单项),那么所需要的只是执行 grub2-setpassword 命令。

使用密码保护 GRUB2

请按照以下步骤在 RHEL 7 中对 GRUB2 进行密码保护。

  1. 从 /etc/grub.d/10_linux 文件中的主 CLASS= 声明中删除 -unrestricted。

这可以通过使用 sed 替换

# sed -i "/^CLASS=/s/ --unrestricted//" /etc/grub.d/10_linux
  1. 如果用户尚未配置,使用 grub2-setpassword 为 root 用户设置密码:
# grub2-setpassword

这将创建一个文件 /boot/grub2/user.cfg(如果尚未存在),其中包含散列的 GRUB 引导加载程序密码。
此实用程序仅支持只有一个 root 用户的配置。

示例 /boot/grub2/user.cfg 文件:

# cat /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.CC6F56BFCFB90C49E6E16DC7234BF4DE4159982B6D121DC8EC6BF0918C7A50E8604CA40689A8B26EA01BF2A76D33F7E6C614E6289ABBAA6944ECB2B6DEB2F3CF.4B929016A827C36142CC126EB47E86F5F98E92C8C2C924AD0C98436E4699DF7536894F69BB904FDB5E609B9A5D67E28A7D79E8521C0B0AE6C031589FA0452A21
  1. 使用 grub2-mkconfig 重新创建 grub 配置:
# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-f9725b0c842348ce9e0bc81968cf7181
Found initrd image: /boot/initramfs-0-rescue-f9725b0c842348ce9e0bc81968cf7181.img
done
  1. 重启服务器并验证。
# shutdown -r now

请注意,所有定义的 grub 菜单条目现在都需要在每次启动时输入用户和密码;此后,如果没有来自控制台的直接用户干预,系统将不会启动任何内核。
当提示输入用户时,输入“root”。
当提示输入密码时,输入传递给 grub2-setpassword 命令的任何内容:

更多: zhilu jiaocheng

移除密码保护

要删除密码保护,我们可以再次在 /etc/grub.d/10_linux 文件的主 CLASS= 声明中添加 -unrestricted 文本。
另一种方法是删除存储散列 GRUB 引导加载程序密码的 /boot/grub2/user.cfg 文件。

为什么 Linux 引导加载程序应该有密码保护?

以下是使用密码保护 Linux 引导加载程序的主要原因:

  1. 阻止进入单用户模式 如果攻击者可以启动进入单用户模式,他就成为 root 用户。

  2. 阻止访问 GRUB 控制台 如果机器使用 GRUB 作为其引导加载程序,攻击者可以使用 GRUB 编辑器界面更改其配置或者使用 cat 命令收集信息。

  3. 防止访问非安全操作系统 如果是双启动系统,攻击者可以在启动时选择一个操作系统,例如 DOS,它忽略访问控制和文件权限。

日期:2020-09-17 00:12:05 来源:oir作者:oir