GRUB2密码仅限制菜单编辑权限,无法阻止物理提权;需组合BIOS/UEFI密码、Secure Boot、LUKS全盘加密及TPM绑定才能实现有效防护。

GRUB2密码设置本身不能防止物理接触提权,它只限制对引导菜单的编辑权限——比如按 e 修改内核参数、或按 c 进入命令行执行 init=/bin/bash 绕过登录。真正能阻止物理提权的,是组合防护:GRUB密码 + 全盘加密 + Secure Boot + BIOS/UEFI锁。单独设GRUB密码,攻击者插U盘启动、挂载你的/boot和/分区,就能直接删掉密码配置或重置root密码。
GRUB2菜单级防护(防误改与简单窥探)
这步是基础门槛,阻止非授权用户在开机时随意编辑启动项:
- 运行
sudo grub2-mkpasswd-pbkdf2,输入强密码两次,复制完整grub.pbkdf2.xxx字符串 - 编辑
/etc/grub.d/40_custom,末尾添加:set superusers="admin"<br>password_pbkdf2 admin grub.pbkdf2.sha512.10000.xxxxx...
- 若想锁定特定启动项(如仅允许普通启动,禁止单用户),在对应
menuentry开头加--users admin - 执行
sudo grub2-mkconfig -o /boot/grub2/grub.cfg生效
必须搭配Secure Boot(防恶意引导加载)
没有Secure Boot,攻击者可替换你硬盘上的grubx64.efi或签名无效的内核,让GRUB密码形同虚设:
- 开机进UEFI设置,确认 Secure Boot = Enabled,且模式为 Setup Mode 或 User Mode
- 终端运行
mokutil --sb-state验证状态;若显示SecureBoot disabled,需先在固件中开启 - 第三方驱动(如NVIDIA)或自编译内核模块,必须用
mokutil --import注册公钥,并在重启后进入MOK管理界面完成确认
根文件系统必须LUKS全盘加密(防离线挂载篡改)
只要/分区未加密,攻击者用Live系统挂载后可直接修改/etc/shadow、替换/sbin/init、甚至注入恶意initramfs:
- 安装时勾选“Encrypt my data”;已有系统需备份后重装并启用LUKS
- 确保
/boot也位于加密卷内(或至少将/boot/efi之外的内容移入LUKS容器),否则攻击者仍可篡改GRUB配置 - 高安全场景下,用
systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 /dev/sda2将LUKS密钥绑定本机TPM2芯片,实现“换设备即失效”
BIOS/UEFI口令与启动顺序锁定(物理层兜底)
这是最后一道防线,防止绕过所有软件防护:
- 在BIOS/UEFI中设置管理员密码(Supervisor Password),并禁用USB/CD-ROM优先启动
- 启用 Boot Order Lock 或 Secure Boot Lock(部分厂商叫“Setup Mode Lock”),防止他人进固件篡改设置
- 若服务器支持,启用 Intel Boot Guard 或 AMD Platform Security Processor(PSP)增强固件完整性校验


















