如何防止单用户模式

如何防止单用户模式

您好,我想知道如何保护 init 和 systemd 免受单用户模式的影响。

答案1

潜在攻击

单用户模式

这是未经授权访问 Linux 系统的最简单方法,即启动服务器进入单用户模式,因为默认情况下,它不需要 root 密码即可获得 root 级访问权限。可以通过关闭电源并中断启动过程来访问单用户模式。要启动到使用 GRUB 引导加载程序的单用户模式,请执行以下操作:中断启动过程,按 e 编辑启动配置文件,在以Linux任一方式开始的行中附加s, S, 1 or systemd. unit=[rescue.target, emergency.target, rescue]以更改启动期间传递给内核的参数以启动到单用户模式,然后按 ctrl+x。

防止单用户模式

对于传统的基于 init 的系统

以 root 身份编辑该文件/etc/sysconfig/init,然后在行上将SINGLE=/sbin/sushellsushell 更改为sulogin

对于基于 systemd 的系统

需要修改目标配置,以便提示输入 root 密码。需要修改的目标位于和的文件中。/lib/systemd/system修改以 开头的行,并将和中的更改为。emergency.servicerescue.serviceExecStart=-/bin/sh –c “/usr/sbin/sushell; ……”/usr/sbin/sushell/usr/sbin/suloginemergency.servicerescue.service

检查这是否已生效

然后保存更改并重新启动以确认更改已生效,如果更改成功,则在启动到单用户模式时会要求输入 root 密码。

根密码

默认情况下,某些 Linux 发行版没有设置 root 密码,可以通过运行命令来检查head -1 /etc/shadow,如果第二列(使用冒号作为分隔符)是感叹号,则表示未设置密码。如果没有设置 root 密码,则无论系统是否设置为提示输入单用户模式密码,它都只会加载 root 访问权限。

保护引导加载程序

不安全的引导加载程序可能导致引导加载程序被完全绕过,并使用 shell 获得对系统的直接 root 级别访问权限。这是通过中断 GRUB 引导过程并附加到以init=/bin/bas开头的行来实现的linux16。这将告诉内核使用 bash 而不是 init。

防止引导加载程序侧载

通过将配置放入 /etc/grub.d/40_custom 文件中,可以对 GRUB 引导加载程序进行密码保护,因为此文件将不受引导加载程序更新和升级的影响。在/etc/grub.d/40_custom添加中set superusers=”admin”输入密码 admin,然后保存并退出文件并运行以下命令(允许使用制表符完成此命令,以便运行系统兼容脚本),此命令的输出来自 grub2。需要将 添加到中的grub2-mkpasswd-…行尾。之后,需要通过运行centos 或debian 上的命令重新编译 grub 文件。password admin/etc/grub.d/40_customgrub2-mkconfig –o /boot/grub2/grub.cfgupdate-grub¬

检查这是否已生效

然后保存更改并重新启动以确认更改已生效,如果启动时更改成功并想要更改 grub 设置,则需要提供用户名 admin 和加密密码。

防范恢复攻击

这些措施有助于保护,但是,如果使用磁盘,则可以使用磁盘上的恢复 Linux 功能来安装文件系统并从磁盘更改 GRUB 设置。为了防止任何可移动媒体的启动优先级低于启动驱动器,请使用密码保护 BIOS 和启动选项菜单,以阻止无权更改启动顺序并启动到磁盘以更改系统的人。

相关内容