如何设置GRUB菜单的密码

时间:2020-03-05 15:29:26  来源:igfitidea点击:

引导加载程序是计算机的一个组成部分。
在计算中,启动是计算机系统在电源上执行的一组操作。
如今,现代计算机持续了一秒钟,通常对自检(发布)进行电源。
引导加载程序是一个计算机程序,可以在完成自检后加载计算机的主操作系统。

如今,大多数Linux发行版使用Grub 2作为引导加载程序。

GRUB 2(GNU Grand Unified Boot Loader)是来自GNU项目的引导加载程序包。

基于以下文件的GRUB2配置

GRUB 2脚本搜索用户的计算机并根据脚本查找的操作系统构建启动菜单。
要反映最新的系统引导选项,启动菜单会在更新内核时自动重建,或者添加新内核。
但是,用户可能希望构建包含特定条目的菜单或者以特定顺序具有条目。
GRUB 2允许启动菜单的基本自定义,以便用户控制屏幕上实际出现的内容。

GRUB 2使用一系列脚本来构建菜单。
这些位于/etc/grub.d /目录中:

  • 00_HEADER从/etc/default/grub文件加载grub 2设置。
  • 10_Linux,它在Hat Enterprise Linux的默认分区中找到内核。
  • 30_OS-Prober,它构建用于在其他分区上的操作系统的条目。
  • 40_custom,用于创建其他菜单条目的模板。

来自/etc/grub.d /目录的脚本按字母顺序读取,因此可以重命名以更改特定菜单条目的启动顺序。

1)在基于Debian的系统上设置GRUB启动密码

搭配grub 2,没有/boot/grub/menu.lst.它已被/boot/grub/grub.cfg取代。
GRUB.CFG被某些GRUB 2封装更新覆盖,每当添加或者删除内核时,或者用户运行更新-CRUB时。

启用GRUB 2密码保护必须尊重以下条件:

  • 必须识别授权用户,
  • 必须指定他们的密码,
  • 必须识别要受保护的菜单项。

用户和密码手动添加到/etc/grub.d/00_header文件*。
必须由Ubuntu用户使用管理权限(root)编辑文件,因为它是一个系统文件。
运行更新GRUB时,用户/密码信息将自动添加到GRUB 2菜单配置文件(GRUB.CFG)。

生成加密密码

要使GRUB需要密码启动系统,我们必须使用命令GRUB-MKPASSWD-PBKDF2生成加密密码。
所有版本的GRUB 2都可以使用此加密密码保护

# grub-mkpasswd-pbkdf2
Enter password: 
Reenter password: 
PBKDF2 hash of your password is grub.pbkdf2.sha512.10000.380AD91E6C36BB4018B5CABDAFF5CABC52A16B6EFF503B6BB2E21199C006C526AEE3A2FF8CF41F9A07AEFB1E8E2275ABB44C41B1429B9C5D509786E2B57A51DA.989F1E9FAC061899E1BB8CB38D2119B26E6CE79A5CBB637E5A611AE099EBBF7CD9BCF1A3EC516CE0E4AD007B7DF8E679220BC845E07E440F134DED2537081F54

此命令将所需的密码转换为位于GRUB 2文件中的非常长的字母数字代码。
实际密码在GRUB 2脚本中不再可见。
虽然对计算机的物理访问可以绕过GRUB 2菜单,但加密使休闲黑客更难确定菜单密码。

在GRUB2主配置文件上设置密码

超级用户/用户信息和密码不必包含在/etc/grub.d/00_header文件中。
只要该文件纳入GRUB.CFG,该信息可以放在任何/etc/grub.d文件中。
用户可能更喜欢将此数据输入自定义文件,例如/etc/grub.d/40_custom,因此即使应该更新GRUB软件包,也不会被覆盖。

# cp /etc/grub.d/40_custom /etc/grub.d/40_custom.old

使用文本编辑器打开GRUB配置文件,并在其末尾添加下面的内容。
然后将grub.pbkdf2.sha512.xxxxx替换为上面显示的加密密码的值

# vim /etc/grub.d/40_custom
set superusers="root"
password_pbkdf2 root grub.pbkdf2.sha512.10000.380AD91E6C36BB4018B5CABDAFF5CABC52A16B6EFF503B6BB2E21199C006C526AEE3A2FF8CF41F9A07AEFB1E8E2275ABB44C41B1429B9C5D509786E2B57A51DA.989F1E9FAC061899E1BB8CB38D2119B26E6CE79A5CBB637E5A611AE099EBBF7CD9BCF1A3EC516CE0E4AD007B7DF8E679220BC845E07E440F134DED2537081F54

更新GRUB文件

执行命令配置以生成新grub.cfg文件

# grub-mkconfig -o /boot/grub/grub.cfg
Generating grub configuration file ...

我们现在可以重新启动系统,这将提示我们输入用户(root)和密码。

对于安全性,当我们输入密码时,屏幕上不会出现任何内容。
完成后,只需验证,系统将启动。
启用密码保护并启用引导,只有指定的超级用户可以通过按"E"来编辑GRUB 2菜单项或者通过按"C"来访问GRUB 2命令行。

2)设置GRUB密码仅用于修改CentOS和Rhel 7.1上的菜单条目

为了为GRUB2设置其他分布的密码,必须使用GRUB2-MKPASSWD-PBKDF2命令。

生成加密密码

注意"GRUB2-X-X"而不是Debian系统的"Grub-x-x"。

# grub2-mkpasswd-pbkdf2

在RHEL 7.1或者RHEL 7.0上,我们也可以使用相同的命令。

在GRUB2主配置文件上设置密码

该过程与Debian系统的步骤相同。

# cp /etc/grub.d/40_custom /etc/grub.d/40_custom.old
# vim /etc/grub.d/40_custom

更新GRUB文件

其中我们将使用grub2-mkconfig命令。
还要注意"GRUB2-X"而不是"GRUB-X",如Debian系统

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...

仅针对指定的超级用户启用GRUB密码保护,谁可以通过按"E"或者"C"来编辑GRUB 2菜单项。

3)设置Centos 7和Rhel 7.2上修改和引导条目菜单的GRUB密码

在RHEL 7.2(更高版本)和CentOS 7中,GRUB 2还提供带GRUB2-SETPASSWORD命令的密码保护。

设置修改条目菜单的密码

使用grub2-setpassword设置密码可防止从未授权修改的菜单条目,但不是从未经授权的引导中获取:

# grub2-setpassword
Enter password:
Confirm password:

在此步骤中,仅针对指定的超级用户启用GRUB密码保护,谁可以通过按"E"或者"C"编辑GRUB 2菜单项。
此过程创建包含密码散列的"/boot/grub2/user.cfg"文件。
此密码,root用户的用户在"/boot/grub2/grub.cfg"文件中定义。
使用此更改,在引导期间修改引导条目要求我们指定root用户名和密码。

不要手动将超级用户帐户和密码添加到grub.cfg文件,因为grub2-mkconfig命令将在重新生成时覆盖此文件。

设置引导条目菜单的密码

现在,要为修改和引导条目菜单设置Grub2密码,我们应该继续以下步骤

  • 打开/boot/grub2/grub.cfg文件
  • 找到要通过搜索以"菜单中"开头的行来保护密码的引导条目
  • 从菜单条目块中删除"--UNRestrict""参数
# vim  /boot/grub2/grub.cfg

现在重启,当我们选择第一个默认菜单条目时,我们将被要求输入密码,并且当我们通过按"E"或者"C"来尝试编辑条目菜单时。

4)使用遗留GRUB设置旧分布的密码

对于使用传统GRUB的旧分发,可以使用GRUB-MD5-CRYPT命令设置GRUB密码:

# grub-md5-crypt

然后,我们应该修改/boot/grub/menu.lst文件来插入加密密码

# vim /boot/grub/menu.lst