如何在 Linux 中使用密码保护 Grub 引导加载程序

举报
Tiamo_T 发表于 2022/05/17 06:31:11 2022/05/17
【摘要】 如果您是 Linux 系统管理员,您可能不希望 IT 部门中对服务器具有物理访问权限的其他人更改系统启动期间显示的 GRUB 引导加载程序菜单中的任何内容。

如果您是 Linux 系统管理员,您可能不希望 IT 部门中对服务器具有物理访问权限的其他人更改系统启动期间显示的 GRUB 引导加载程序菜单中的任何内容。

GRUB 安全功能允许您为 grub 条目设置密码。一旦你设置了密码,你就不能编辑任何 grub 条目,或者在不输入密码的情况下从 grub 命令行向内核传递参数。

强烈建议按照本文所述在任何关键生产系统上设置 GRUB 密码。

1.在grub.conf中使用grub密码命令

在未使用密码保护 GRUB 的系统上,系统启动期间将在 GRUB 菜单正下方显示以下消息。

正如您从这条消息中看到的,任何在控制台前重新启动服务器的人,都可以编辑 grub 命令,甚至修改内核参数,这可能会导致问题,如果有人不知道他们在做什么,在生产系统上玩这个。

Use the up-arrow and down-arrow keys to select which entry is highlighted. 
Press enter to boot the selected OS,
'e' to edit the commands before booting, 
'a' to modify the kernel arguments before booting, or
'c' for a command-line

/boot/grub/grub.conf 包含有关在系统启动期间显示在 GRUB 菜单中的条目的信息。在某些系统上,/etc/grub.conf 是指向 /boot/grub/grub.conf 的符号链接


将以下“密码”行添加到 grub.conf 文件。

$ cat /etc/grub.conf
default=0
timeout=15
password GrbPwd4SysAd$
..

一旦将“密码”命令添加到 grub.conf 中,系统启动期间将在 GRUB 菜单下方显示以下消息。

正如您从该消息中看到的,如果不输入您在 grub.conf 中提供的 GRUB 密码,任何人都无法编辑 grub 命令或修改内核参数。他们所能做的就是选择显示的条目之一并从这里启动。

Use the up-arrow and down-arrow keys to select which entry is highlighted. 
Press enter to boot the selected OS or
'p' to enter a password to unlock the next set of features.

2. 使用 grub-crypt 加密 grub 密码

在阅读上面的条目时,您可能会想:是的,grub 是由密码保护的。但是,密码本身在 grub.conf 文件中是明文形式,这违背了目的。

您可以使用 grub-crypt 实用程序创建加密密码。

grub-crypt 会从用户那里获取明文密码,并显示加密后的密码,如下图所示。

# grub-crypt
Password: GrbPwd4SysAd$
Retype password: GrbPwd4SysAd$
^9^32kwzzX./3WISQ0C

修改 grub.conf 文件,添加带有 –encrypted 参数的“password”条目,如下所示。只需复制 grub-crypt 命令的输出,并将其粘贴到密码条目中的“–encrypted”参数之后。

$ cat /etc/grub.conf
default=0
timeout=15
password --encrypted ^9^32kwzzX./3WISQ0C
..

默认情况下,grub-crypt 命令使用 SHA-512 算法加密密码。您还可以使用 SHA-256 或 MD5 算法加密密码,如下所示。

# grub-crypt --sha-256
# grub-crypt --md5

您还可以使用 md5crypt 来加密密码。在这种情况下,您应该在 grub.conf 文件中使用“password –md5 encrypted-password”。

在 grub.conf 文件的脚本部分中,如果您指定“lock”,则只有在用户通过身份验证时,grub 才会执行菜单条目该部分中的其余命令。

3. 为 Grub 菜单加载不同的文件

默认情况下,系统启动期间 GRUB 菜单中的条目是从 grub.conf 文件中提取的。即基于 grub.conf 文件中以“title”条目开头的行。

如果您正在测试新内核的某些变体,您可能需要创建一个单独的 grub 菜单文件,其中包含自定义菜单条目。在系统启动期间,默认情况下它只会显示来自 grub.conf 的条目。但是,当您输入密码时,您可以指示 grub 加载您的自定义菜单条目。

这是通过将自定义菜单文件名传递给密码命令来实现的,如下面的 grub.conf 文件所示。

在以下示例中,当您在系统启动期间提供密码时,它将从 /etc/mymenu.lst 加载并显示 grub 菜单条目。

$ cat /etc/grub.conf
default=0
timeout=15
password --encrypted ^9^32kwzzX./3WISQ0C /etc/mymenu.lst
..
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200