你可能听说过这句古老的格言—— “引导访问==根访问”. 确实是真的! 任何可以访问引导加载程序的人都可以轻松获得对系统的 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/
然后,输入 :n (冒号 n)。 这会将您切换到下一个文件,即 /etc/grub.conf
.
之后 splashimage=(hd0,0)/grub/splash.xpm.gz
行,按 p
粘贴上一个文件中的加密密码。
然后,按 i
并添加行 password --md5
在加密密码之前,如下图所示。
password --md5 $1$I2w2s1$EPZtrLn/h2M4qfh48ZL8O0
请参阅以下屏幕截图以获取更多说明。
这里, $1$I2w2s1$EPZtrLn/h2M4qfh48ZL8O0
是我的 CentOS 6 系统的加密 grub 密码。 用你自己的替换它。
然后,按 退出 并输入 :wq
保存文件并 close 它。
重新启动系统。
从现在开始,您必须先输入密码才能编辑 grub 菜单。
要编辑 Grub 菜单,请按 p
. 您将被要求输入密码。 只需输入密码即可解锁 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
按 退出 并输入 :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 引导加载程序。 为此,请按 e
.
您将被要求输入我们在前面步骤中定义的用户名和密码。
如果您输入了正确的用户名和密码,您将能够编辑 Grub2 引导加载程序。
您现在知道如何在 Linux 中使用密码保护 Grub 和 Grub2 引导加载程序。 设置 Grub 密码可能无法完全保护您的系统。 但是,它肯定会为您的 CentOS Linux 服务器增加一个额外的安全层。
GRUBGRUB 引导菜单GRUB2LinuxLinux 管理Linux howtoLinux securityPassword Protect GRUB BootloaderSecure bootloader