在我们之前的一篇文章中,我们介绍了如何在CentOS 7上启动单用户模式 。 它也被称为“ 维护模式 ”,其中Linux仅启动一些基本功能的服务,以允许单个用户(通常是超级用户)执行某些管理任务,例如使用fsck来修复损坏的文件系统。
在单用户模式下,系统执行单用户shell ,您可以在没有任何登录凭据(用户名和密码)的情况下运行命令,直接登录到有限的shell并访问整个文件系统。
这是一个巨大的安全漏洞,因为它可以让入侵者直接访问一个shell(并可能访问整个文件系统)。 因此,如下所述,密码保护CentOS 7上的单用户模式非常重要。
在CentOS / RHEL 7中 , 救援和应急目标 (也是单用户模式 )在默认情况下受密码保护。
例如,当您尝试通过systemd将目标 ( 运行级别 )更改为rescue.target (也是emergency.target )时,系统会要求您输入根密码,如以下屏幕截图所示。
# systemctl isolate rescue.target OR # systemctl isolate emergency.target
CentOS 7中的单用户模式
但是,如果入侵者具有物理访问服务器的权限,则可以通过按e
键编辑第一个引导选项来选择要从grub菜单项启动的内核。
在以“linux16“
开头的内核行上,他/她可以将参数ro
更改为“rw init=/sysroot/bin/sh”
并在CentOS 7上启动到单用户模式,而无需系统询问root密码,即使在文件/ etc / sysconfig / init中将行SINGLE=/sbin/sushell
更改为SINGLE=/sbin/sulogin
。
更改CentOS引导选项
因此,在CentOS 7中密码保护单用户模式的唯一方法是使用以下说明使用密码保护GRUB。
如何在CentOS 7中使用密码保护Grub
首先使用grub2-setpassword实用程序创建一个强大的加密密码,如图所示。
# grub2-setpassword
为GRUB创建加密密码
密码的哈希存储在/boot/grub2/user.cfg&user中 ,即在/boot/grub2/grub.cfg文件中定义了“root” ,您可以使用cat命令查看密码,如图所示。
# cat /boot/grub2/user.cfg
GRUB密码
现在打开/boot/grub2/grub.cfg文件并搜索您想要密码保护的启动项,它以menuentry
。 条目一旦找到,请--unrestricted
删除--unrestricted
参数。
密码在CentOS 7中保护Grub
保存文件并关闭,现在尝试重新启动 CentOS 7系统并通过按e
键修改启动项,将会要求您提供如图所示的凭据。
密码保护的Grub
CentOS 7引导配置
而已。 您已成功密码保护您的CentOS 7 GRUB菜单。