在CentOS系统中,GRUB引导加载程序是启动过程的核心组件,负责加载操作系统内核,为GRUB设置密码是一项重要的安全措施,可以有效防止未经授权用户修改启动参数或进入单用户模式,从而提升系统的整体防护能力,本文将详细介绍如何在CentOS环境下配置GRUB密码,帮助您强化服务器安全。

GRUB密码的设置主要涉及修改配置文件并生成加密密码,需要了解GRUB的配置文件位置,在CentOS 7及更高版本中,GRUB配置文件通常位于/boot/grub2/grub.cfg,但直接编辑这个文件并不推荐,因为它可能被系统更新覆盖,相反,我们应修改/etc/grub.d/目录下的脚本文件或/etc/default/grub文件,然后通过工具重新生成配置。
开始操作前,请确保您拥有root权限,第一步是备份现有配置,以防意外错误,可以使用以下命令备份grub.cfg文件:
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.backup
备份完成后,接下来生成GRUB密码的哈希值,GRUB支持使用PBKDF2加密算法来存储密码,这比明文更安全,在终端中执行grub2-mkpasswd-pbkdf2命令,系统会提示输入密码,然后输出对应的哈希字符串,请妥善保存这个哈希值,因为它将用于配置中。
运行命令后,您可能会得到类似以下的输出:
Enter password:
Reenter password:
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.[长哈希字符串] 这个哈希字符串就是我们需要在配置中引用的部分,编辑/etc/grub.d/40_custom文件,这个文件用于添加自定义配置,使用文本编辑器如vi或nano打开它:

vi /etc/grub.d/40_custom
在文件末尾添加以下内容,将[哈希字符串]替换为您刚才生成的哈希:
set superusers="root"
password_pbkdf2 root [哈希字符串] 这里,superusers指定了拥有完整权限的用户(例如root),而password_pbkdf2行则设置了该用户的密码,如果您想为其他用户添加受限权限,可以进一步定义角色,但针对大多数场景,设置root用户密码已足够。
修改完成后,保存并关闭文件,需要更新GRUB配置以应用更改,运行以下命令:
grub2-mkconfig -o /boot/grub2/grub.cfg
这个命令会根据/etc/default/grub和/etc/grub.d/中的文件生成新的grub.cfg,执行后,系统会输出生成过程,请检查是否有错误提示,如果一切顺利,GRUB密码就已设置成功。
为了验证配置是否生效,可以重启系统,在GRUB启动菜单出现时,尝试编辑启动项或进入命令行模式,系统应该会提示输入密码,只有正确输入密码后,才能进行修改操作,这确保了即使物理访问服务器,未经授权用户也无法轻易绕过安全措施。

在实际应用中,设置GRUB密码只是系统安全的一环,结合其他措施如防火墙、定期更新和访问控制,能构建更坚固的防御体系,需要注意的是,如果您忘记了GRUB密码,恢复过程可能比较复杂,通常需要通过救援模式或Live CD来重置配置,建议将密码记录在安全的地方,并定期测试备份。
从个人经验来看,GRUB密码设置虽然简单,但对生产环境至关重要,它不仅能防止恶意篡改,还能在合规性检查中体现系统管理的严谨性,许多安全标准,如等保要求,都强调启动阶段的安全控制,通过这种方式,管理员可以更自信地维护服务器,减少潜在风险,花几分钟时间配置GRUB密码,能为系统带来长期的安全收益,值得每个站长认真对待。

