网站搜索

如何在 CentOS 7 中使用密码保护单用户模式


在我们之前的一篇文章中,我们描述了如何在 CentOS 7 上启动进入单用户模式。它也称为“维护模式”,在这种模式下,Linux 仅启动一些基本功能服务,以允许单个用户(通常是超级用户)执行某些管理任务,例如使用fsck来修复损坏的文件系统。

在单用户模式下,系统执行一个单用户 shell,您可以在没有任何登录凭据(用户名和密码)的情况下运行命令,直接进入一个可以访问整个文件系统的有限 shell。

这是一个巨大的安全漏洞,因为它使入侵者可以直接访问 shell(并可能访问整个文件系统)。因此,在 CentOS 7 上使用密码保护单用户模式非常重要,如下所述。

CentOS/RHEL 7中,救援紧急目标(也是单用户模式)是密码默认受保护。

例如,当您尝试通过 systemd目标运行级别)更改为rescue.target(也 >emergency.target),系统会要求您输入 root 密码,如以下屏幕截图所示。

systemctl isolate rescue.target
OR
systemctl isolate emergency.target

但是,如果入侵者可以物理访问服务器,他或她可以通过按 e 键编辑第一个引导选项,从 grub 菜单项中选择要引导的内核。

在以“linux16”开头的内核行上,他/她可以将参数ro更改为“rw init=/sysroot/bin/sh” 并在 CentOS 7 上启动到单用户模式,系统不会要求输入 root 密码,即使 SINGLE=/sbin/sushell 行更改为 SINGLE=/sbin/sulogin 在文件 /etc/sysconfig/init 中。

因此,在 CentOS 7 中使用密码保护单用户模式的唯一方法是使用以下说明使用密码保护 GRUB。

如何在 CentOS 7 中使用密码保护 Grub

首先使用 grub2-setpassword 实用程序创建一个强加密密码,如图所示。

grub2-setpassword

密码的哈希存储在/boot/grub2/user.cfg中,用户即“root”/中定义boot/grub2/grub.cfg文件,可以使用cat命令查看密码,如图所示。

cat /boot/grub2/user.cfg

现在打开/boot/grub2/grub.cfg文件并搜索您想要密码保护的启动项,它以menuentry开头。找到该条目后,从中删除 --unrestricted 参数。

保存文件并关闭,现在尝试重新启动 CentOS 7 系统并按e 键修改启动项,系统将要求您提供如图所示的凭据。

就是这样。您已成功用密码保护您的 CentOS 7 GRUB 菜单。