如何在 Linux 中使用密码保护 GRUB 引导加载程序

你可能听说过这句古老的格言—— “引导访问==根访问”. 确实是真的! 任何可以访问引导加载程序的人都可以轻松获得对系统的 root 访问权限。 我们已经发布了一个指南,描述了如何 在 Linux 中重置 root 密码. 该教程教您如何通过 Grub 引导加载程序轻松重置或恢复 root 用户密码。 一旦有人拥有对机器的物理和/或引导加载程序访问权限,就无法阻止他们。 这就是为什么我们需要通过使用强密码保护 Grub Bootloader 来增加额外的安全性。 如果您是 Linux 管理员,您应该知道如何保护您的引导加载程序。 本指南解释了如何在 CentOS 中使用密码保护 Grub 引导加载程序。 我在 CentOS 6.x 和 CentOS 7.x 系统上测试了本指南,它工作得很好,如下所述。

密码保护 RHEL 6.x、CentOS 6.x 中的 GRUB 引导加载程序

在 CentOS 6.x、RHEL 6.x 等较旧的 Linux 发行版中,Grub 是默认的引导加载程序。 本节介绍如何在 CentOS 6.x 系统中设置 grub 密码。

在进行任何更改之前,始终建议备份 GRUB 配置文件

# cp /etc/grub.conf /etc/grub.conf.bak

首先,我们需要加密密码。 为此,请以 root 用户身份登录到您的 centos 系统并创建一个名为 grub 如下所示。 下面给出的所有命令都应执行为 root 用户。

# touch grub

接下来,使用加密密码 md5crypt 命令。 为此,请从终端运行以下命令并按 ENTER 键。

# grub-md5-crypt >grub

Enter 你的密码两次。 请注意,当您在屏幕上输入密码时,您不会看到任何内容。 无论如何只需输入密码并按 ENTER,然后重新输入相同的密码并按 ENTER。

密码已加密。 接下来,我们需要在 /etc/grub.conf 文件。

现在,让我们在 grub.conf 文件。 为此,打开两个文件 grub 和 /etc/grub.conf 文件。

# vi /root/grub /etc/grub.conf

上面的命令将打开这两个文件 vi 编辑。

您将看到如下所示的加密密码。 移动光标点并将其放在密码的前面。 然后,输入 yy 抽出(复制)密码。

Password: Retype password: $1$Ch0NF/$0XsWw8.EW31vRjm5zsnPb/
复制 Grub 密码

然后,输入 :n (冒号 n)。 这会将您切换到下一个文件,即 /etc/grub.conf.

切换到下一个文件

之后 splashimage=(hd0,0)/grub/splash.xpm.gz 行,按 p 粘贴上一个文件中的加密密码。

然后,按 i 并添加行 password --md5 在加密密码之前,如下图所示。

password --md5 $1$I2w2s1$EPZtrLn/h2M4qfh48ZL8O0

请参阅以下屏幕截图以获取更多说明。

密码保护 CentOS 6 中的 Grub 引导加载程序密码保护 CentOS 6 中的 Grub 引导加载程序

这里, $1$I2w2s1$EPZtrLn/h2M4qfh48ZL8O0 是我的 CentOS 6 系统的加密 grub 密码。 用你自己的替换它。

然后,按 退出 并输入 :wq 保存文件并 close 它。

重新启动系统。

从现在开始,您必须先输入密码才能编辑 grub 菜单。

CentOS 6 Grub 菜单CentOS 6 Grub 菜单

要编辑 Grub 菜单,请按 p. 您将被要求输入密码。 只需输入密码即可解锁 Grub 启动菜单。

解锁 Grub 启动菜单解锁 Grub 启动菜单

现在,您可以在 grub 启动菜单中进行任何您想要的更改。

Grub 菜单解锁Grub 菜单解锁

密码保护 RHEL 7.x、CentOS 7.x 中的 GRUB2 引导加载程序

在 RHEL 7 及其克隆版本(如 CentOS 7、Scientific Linux 7)中,Grub2 是默认引导加载程序。 使用密码保护 Grub2 引导加载程序与 grub 引导加载程序不同。

首先,使用以下命令创建加密密码 root 用户:

# grub2-mkpasswd-pbkdf2

样本输出:

Enter password:  Reenter password:  PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.62C46DE64C6BDE39A440092F521F86E24F486F5F9FE58B38D1CA9DDA27D6DDA6A6F5615836537B31AF2D06D2C5A8C6BE26709269A08E81286357501882016523.FD91A05503B0538FBA4CF9783A13727C43917E63528FF9FFC9917E4780B9C420CEDAE98451CF9256BA77AC144FA6734CA193D1E4183AC71E1F297BD7868FFC4B

我们刚刚创建了一个加密密码来保护 Grub2 引导加载程序。

你可能已经知道, 不推荐 直接在grub2主配置文件中编辑并粘贴新生成的密码。

相反,我们应该在自定义 Grub2 菜单文件中添加密码,该文件位于 /etc/grub.d/ 目录,最后更新Grub2主配置文件即 /etc/grub.cfg.

制作自定义 Grub2 菜单文件的副本:

# cp /etc/grub.d/40_custom /etc/grub.d/40_custom.bak

然后,将自定义 Grub2 菜单配置文件编辑为 root 用户:

# vi /etc/grub.d/40_custom

添加以下行。 确保您粘贴了我们之前生成的正确密码。

set superusers="root" password_pbkdf2 root grub.pbkdf2.sha512.10000.62C46DE64C6BDE39A440092F521F86E24F486F5F9FE58B38D1CA9DDA27D6DDA6A6F5615836537B31AF2D06D2C5A8C6BE26709269A08E81286357501882016523.FD91A05503B0538FBA4CF9783A13727C43917E63528FF9FFC9917E4780B9C420CEDAE98451CF9256BA77AC144FA6734CA193D1E4183AC71E1F297BD7868FFC4B
为 Grub 设置密码为 Grub 设置密码

退出 并输入 :wq 保存和 close 文件。

现在,是时候更新 Grub2 主配置文件了。

确保您有 Grub2 主配置文件的备份副本。

# cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak

使用命令更新 Grub2 引导加载程序配置文件:

# grub2-mkconfig -o /boot/grub2/grub.cfg

样本输出:

Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.10.0-327.22.2.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-327.22.2.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-327.13.1.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-327.13.1.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-123.9.3.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-123.9.3.el7.x86_64.img Found linux image: /boot/vmlinuz-3.10.0-123.el7.x86_64 Found initrd image: /boot/initramfs-3.10.0-123.el7.x86_64.img Found linux image: /boot/vmlinuz-0-rescue-e250d471d5594282ba042c653cfa0172 Found initrd image: /boot/initramfs-0-rescue-e250d471d5594282ba042c653cfa0172.img done

您可以验证密码是否已正确设置在 /etc/grub2.cfg 文件如下图。

# cat /etc/grub2.cfg

示例输出为:

查看 Grub2 文件内容查看 Grub2 文件内容

我们都准备好了。 重新启动系统以验证引导加载程序是否已使用密码保护。

重新启动系统后,尝试编辑 Grub2 引导加载程序。 为此,请按 e.

编辑 Grub2 引导程序编辑 Grub2 引导程序

您将被要求输入我们在前面步骤中定义的用户名和密码。

Enter  解锁 Grub2 的密码Enter 解锁 Grub2 的密码

如果您输入了正确的用户名和密码,您将能够编辑 Grub2 引导加载程序。

Grub2 解锁Grub2 解锁

您现在知道如何在 Linux 中使用密码保护 Grub 和 Grub2 引导加载程序。 设置 Grub 密码可能无法完全保护您的系统。 但是,它肯定会为您的 CentOS Linux 服务器增加一个额外的安全层。

GRUBGRUB 引导菜单GRUB2LinuxLinux 管理Linux howtoLinux securityPassword Protect GRUB BootloaderSecure bootloader