GRUB密码保护仅限引导菜单操作,不加密磁盘或内核;需结合LUKS全盘加密与Secure Boot才能实现真正安全。

GRUB引导菜单密码保护能防止未授权用户进入恢复模式、单用户模式或修改启动参数,但需注意:它只保护GRUB运行时操作,不加密磁盘或内核本身。真正安全需结合全盘加密(如LUKS)和Secure Boot。
一、为GRUB2设置启动菜单密码(明文哈希方式)
现代Linux发行版默认使用GRUB2,密码通过grub-mkpasswd-pbkdf2生成哈希值,避免明文存储:
- 在终端中执行:sudo grub-mkpasswd-pbkdf2,按提示输入并确认密码,得到类似 grub.pbkdf2.sha512.10000.…… 的长字符串
- 编辑GRUB配置文件:sudo nano /etc/grub.d/40_custom,在末尾添加:
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000.……(粘贴上一步生成的完整哈希)
- 保存后更新配置:sudo update-grub(Debian/Ubuntu)或 sudo grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/CentOS/Fedora)
- 重启后,按c进入命令行或按e编辑启动项时,会提示输入用户名(admin)和密码
二、限制特定菜单项仅限授权访问
仅锁定整个菜单不够精细,可对关键入口单独设密。例如,禁止无密码进入“Recovery Mode”:
- 复制原菜单项定义(通常在/boot/grub/grub.cfg中查找“Recovery”相关段落),在/etc/grub.d/40_custom中新建一个带权限控制的条目
- 添加--unrestricted以外的项,并用linux /vmlinuz ...前加insmod auth和auth指令校验
- 更实用做法:在/etc/default/grub中设置GRUB_DISABLE_RECOVERY=true,然后update-grub彻底隐藏恢复模式
三、加固GRUB自身防篡改
密码防不了物理接触者直接替换grub.cfg或内核镜像。需配合以下措施:
- 启用UEFI Secure Boot:确保厂商密钥签名的GRUB2 EFI程序被固件信任,阻止未签名模块加载(需关闭CSM/Legacy BIOS模式)
- 锁定GRUB配置文件权限:sudo chmod 600 /boot/grub/grub.cfg 和 sudo chown root:root /boot/grub/grub.cfg
- 禁用GRUB命令行交互(可选):在/etc/default/grub中添加GRUB_TERMINAL_OUTPUT=console和GRUB_DISABLE_OS_PROBER=true,再配合GRUB_CMDLINE_LINUX_DEFAULT="quiet splash rd.systemd.show_status=false"减少暴露面
四、必须搭配磁盘级加密才真正有效
GRUB密码无法阻止攻击者卸下硬盘挂载读取/etc/shadow、/home等数据。务必同步启用:
- 安装系统时选择“Encrypt the new Ubuntu/Debian/RHEL installation”(LUKS2加密根分区)
- 确保/boot虽通常不加密(因GRUB需读取),但/boot/efi(EFI系统分区)应保持只读且无敏感配置
- 若需更高保障,可将/boot也放入LUKS容器(需initramfs支持,配置较复杂,一般推荐仅加密/和/home)
GRUB密码是纵深防御的第一道门禁,不是万能锁。配好密码后,记得测试能否正常输入、是否仍可启动、恢复模式是否受限——配置错误可能导致系统无法启动。

















