核心是锁死grub编辑入口并组合参数约束与完整性审计:生成pbkdf2哈希密码写入40_custom,清除rd.break等危险参数,屏蔽emergency.target,设置audit=1和lockdown=confidentiality,用chattr+i保护grub.cfg并每日校验哈希,记录所有变更日志。

系统启动参数加固和变更记录,是防御物理篡改入侵的关键防线。攻击者一旦获得物理接触权限,常通过修改 GRUB 启动参数(如 init=/bin/bash、rd.break 或 single)绕过登录认证,直接获取 root 权限。因此,加固不能只停留在“设密码”,而需结合引导验证、参数锁定与审计追踪三重机制。
一、锁定 GRUB 启动菜单并加密管理员访问
防止未授权编辑启动项,核心是启用 GRUB 密码保护并禁用交互式编辑:
- 生成加密密码:运行
grub2-mkpasswd-pbkdf2(RHEL/CentOS)或grub-mkpasswd-pbkdf2(Debian/Ubuntu),复制输出的加密字符串 - 编辑
/etc/grub.d/40_custom,添加管理员账号(示例):set superusers="admin"password_pbkdf2 admin grub.pbkdf2.sha512.10000.…… - 在
/etc/default/grub中设置:GRUB_DISABLE_RECOVERY="true"(禁用恢复模式菜单)GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"(移除调试参数如rd.break) - 更新配置:
grub2-mkconfig -o /boot/grub2/grub.cfg(CentOS/RHEL)或update-grub(Debian/Ubuntu)
二、启用内核启动参数安全约束
通过内核命令行强制启用关键防护机制,限制运行时逃逸能力:
- 在
GRUB_CMDLINE_LINUX中追加以下参数(建议组合使用):audit=1— 启用内核审计子系统kernel lockdown=confidentiality— 禁止加载未签名模块、禁止写入/dev/mem和/dev/kmemiommu=force— 强制启用 IOMMU,阻断 DMA 攻击路径slab_nomerge— 增加堆喷射难度(可选) - 避免使用不安全参数:严禁保留
init=/bin/bash、rd.break、systemd.unit=emergency.target等调试入口
三、固化启动配置并监控文件完整性
防止攻击者篡改 GRUB 配置文件本身,需实施静态保护+动态审计:
- 对关键文件设置不可变属性:
chattr +i /boot/grub2/grub.cfg(CentOS/RHEL)chattr +i /boot/grub/grub.cfg(Debian/Ubuntu)
注意:修改前先执行chattr -i,操作完立即恢复 - 将 GRUB 配置哈希加入完整性基线:
使用sha256sum /boot/grub2/grub.cfg > /etc/grub.cfg.sha256保存基准值 - 建立每日校验脚本(例如放入 cron):
if ! sha256sum -c /etc/grub.cfg.sha256 >/dev/null 2>&1; then logger -t grub-guard "GRUB config changed!"; echo "$(date): GRUB mismatch" >> /var/log/grub-integrity.log; fi
四、记录所有启动参数变更并关联责任人
单纯技术防护不够,必须实现可追溯的变更管理:
- 启用 GRUB 日志:在
/etc/default/grub中添加GRUB_RECORDFAIL_TIMEOUT=30(记录启动失败事件)
并确保rsyslog或journald持久化保存 boot 日志 - 每次手动修改 GRUB 配置前,强制执行登记:
echo "$(date) - $(whoami) modified /etc/default/grub (reason: ...)" >> /var/log/grub-changes.log - 结合审计日志查看启动上下文:
journalctl -b | grep -i "command line\|lockdown\|grub"aureport -m -ts today | grep -i "grub\|boot"(需启用 auditd)
不复杂但容易忽略的是:GRUB 密码仅保护菜单编辑,不防物理提取磁盘镜像;真正可靠的防护必须叠加 Secure Boot(验证 EFI 签名)、TPM 测量启动链、以及启动后立即校验内核内存布局。这些属于纵深防御的下一层,但启动参数加固是第一道且最易落地的闸门。











