通过 grub2 入侵任何 Linux 机器怎么会是安全的呢?

通过 grub2 入侵任何 Linux 机器怎么会是安全的呢?

如果一个人能够以物理方式访问您的计算机,并通过上述步骤获取 root 权限,那么他的这种能力怎么会安全呢?

  1. 当 grub2 菜单打开时, e 按编辑 Linux 启动选项
  2. 改变:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro   quiet splash" 
    

    到:

    "linux   /vmlinuz-2.6.35-23-generic root=UUID=e7f1e48d-0015-485f-be7d-836217a31312 ro init=/bin/bash"
    
  3. 现在您具有 root 权限,只需执行以下操作:

    mount -o remount,rw /
    passwd user
    mount -o remount,ro / 
    sync
    
  4. 重新启动计算机,你就赢了。

我的问题是,通过 grub2 入侵任何 Linux 机器怎么会安全呢?我不明白 Linux 的这个事实,谢谢你的回答。

答案1

笔记:此答案中给出的安全建议(有意)简化,并未完全反映计算机安全某些组件的实际工作方式。此答案的重点在于,安全是一个复杂且多方面的主题,威胁建模非常重要。总会有人找到绕过问题的方法;没有所谓的“完美安全的系统”。没有安全系统可以永久阻止坚定的攻击者。话虽如此,让我们开始回答吧!


如果一个人能够以物理方式访问您的计算机并获得 root 权限(使用 Grub/Bash),那么他的这种能力如何安全呢?

因为如果 Linux 决定开始这样做,黑客就会利用其他安全漏洞。安全的第一条规则是如果我能物理访问你的系统,游戏就结束了。我赢了。

另外,想象一下您的 X 服务器坏了,您不再有 GUI。您需要启动恢复控制台来修复问题,但您无法这样做,因为这不安全。在这种情况下,您只剩下一个完全损坏的系统,但嘿,至少它是“安全的”!

但是 Kaz,这怎么可能呢?我在 Grub 上设置了密码,所以你不能将我的密码更改init为 Bash!

哦,你看到了,对吧?很有趣,因为这看起来像你的相册。GRUB 根本没有任何固有的安全因素。它只是一个引导加载程序,而不是某些安全启动和身份验证链中的一步。事实上,您设置的“密码”很容易被绕过。

那,以及系统管理员没有携带启动驱动器以备紧急情况?

但如何?!你不知道我的密码(顺便说一句,这完全不是P@ssw0rd问题)

是的,但这并不能阻止我打开你的电脑并取出你的硬盘。从那里,只需几个简单的步骤就可以将你的驱动器安装到我的电脑上,让我可以访问你的整个系统。这还有一个很棒的好处,那就是绕过你的 BIOS 密码。或者我也可以重置你的 CMOS。要么/要么。

那么...我怎样才能不让你访问我的数据?

很简单。把你的电脑拿开。如果我能触摸它、使用键盘、插入我自己的闪存驱动器或拆开它,我就能赢。

那么,我可以将我的电脑放在数据中心或其他地方吗?这些地方很安全,对吧?

是的,确实如此。但是,你忘了人类也是可以被黑客入侵的,只要有足够的时间和准备,我可能就能进入那个数据中心,从你的电脑里窃取所有珍贵的数据。但我离题了。我们正在处理真实的解决方案在这里。

好吧,你看穿了我的虚张声势。我不能把它放在数据中心。我能加密我的主文件夹吗?

当然可以!这是你的电脑!它能帮我阻止吗?一点儿也不。我可以用/usr/bin/firefox我自己的恶意程序替换一些重要的东西。下次你打开 Firefox 时,你所有的秘密数据都会被转移到某个秘密的服务器中,而你甚至都不知道。或者,如果我经常访问你的机器,我可以设置你的主文件夹以将其复制到/usr/share/nonsecrets/home/任何类似的(非加密)位置。

好的,那么全盘加密怎么样?

那……实际上相当不错。不过,它还不够完美!我总是可以表演冷启动攻击使用我信赖的压缩空气罐。或者,我可以将硬件键盘记录器插入您的计算机。显然,一个比另一个更容易,但方法并不重要。

在里面广阔的大多数情况下,这是一个很好的停靠点。也许可以将其与 TPM 搭配使用(如下所述),这样就万事大吉了。除非你惹怒了三字母机构或非常有动力的黑客,没有人会经过这个阶段所需的努力。

当然,我仍然可以通过向您提供 PPA 或类似的东西让您安装一些恶意软件/后门,但这会进入用户信任的非常模糊的领域。

那么……iPhone 为何如此安全?即使有物理访问权限,你也无能为力。

嗯,是也不是。我的意思是,如果我有足够的动力,我可以读取闪存芯片并获得我需要的一切。但是,iPhone 从根本上来说不同,因为它们从启动过程一开始就是一个完全锁定的平台。然而,这会导致您牺牲可用性和从灾难性故障中恢复的能力。GRUB(除非经过特别设计)是不是意为安全系统中的一条链。事实上,大多数 Linux 系统的安全链都是在引导后启动的,也就是在 GRUB 完成其工作之后。

iPhone 还具有加密签名强制功能(也在下面讨论),这使得它非常恶意软件很难潜入您的手机。

但是 TPM/SmartCards/[在此处插入加密技术] 又如何呢?

现在,你把物理安全性也考虑进去了,事情就变得更加复杂了。但是,这并不是真正的解决方案,因为 TPM 在计算上相对较弱,而且实际的磁盘加密不是在芯片上进行的。如果你的 TPM (以某种方式) 足够强大,可以在芯片本身上进行加密 (一些非常高级的硬盘驱动器有类似的东西),那么密钥就永远不会被泄露,冷启动攻击之类的事情也不可能发生。然而,密钥 (或原始数据) 可能仍然存在于系统总线中,这意味着它们可以被拦截。

即便如此,我的硬件键盘记录器仍然可以获取你的密码,我可以轻松地将一些恶意软件加载到你的机器上,就像我之前提到的 Firefox 漏洞一样。我只需要你离开你的家/电脑大约一个小时。

现在,如果您随身携带 TPM/智能卡/任何东西,并且所有加密实际上都是在芯片上完成的(这意味着您的密钥根本不存储在 RAM 中),那么我几乎不可能进入。当然,这假设没有任何已知的安全漏洞可以利用,并且您遵循良好的安全实践。

但是,如果我对所有程序都采取某种形式的加密/数字签名强制措施以确保它们是合法的,那该怎么办?

正如各智能手机公司所证明的那样,这是一个非常处理安全问题的一种好方法。现在您已经使我无力将一些代码注入您的机器以进行恶意操作。实际上,您已经禁用了我远程保留对您的机器的持久访问权限的能力。

然而,这仍然不是一个完美的方法!首先,数字签名强制执行不会阻止硬件键盘记录器。它还需要完全没有错误,这意味着我无法找到允许我将自己的证书加载到您机器的证书存储中的漏洞。此外,这意味着系统上的每个可执行文件都需要签名除非您想手动完成所有这些操作,否则很难找到所有东西都有数字签名的 Apt 包等。同样,这会阻止未签名的可执行文件的合法使用,即恢复。如果您破坏了重要的东西,而您没有(签名的)可执行文件来修复它,该怎么办?

无论哪种方式,努力做到这一点在 Linux 上基本上已被完全废弃,并且不再适用于新内核,因此您需要创建自己的内核。

那么,我不可能不让你进入我的电脑吗?

是的,很抱歉。如果我有足够的时间和动力,总是有可能进入系统。没有例外。

但实际上,大多数坏人不会为了几张猫图片而做出这种举动。通常,只需全盘加密(甚至只需运行 Linux!)就足以阻止大多数脚本小子出名。

TL;DR:不要让你不信任的人靠近你的电脑并使用 LUKS。这通常就足够了。

答案2

如果你想把它绑起来,用密码。来自链接:

GRUB 2 密码保护注意事项

Grub 2 可以在以下位置建立密码要求:

  • 所有菜单项
  • 特定菜单项
  • 对于特定用户:例如,用户“Jane”可以访问 Ubuntu,但不能访问 Windows 恢复模式,只有超级用户“John”才能访问。
  • 管理员必须通过编辑 GRUB 2 系统文件手动启用密码保护。

  • /etc/grub.d/00_header应在或另一个 GRUB 2 脚本文件中识别用户和密码。

  • 除非需要对所有菜单项进行普遍保护,否则必须标识具体条目:

    • 通过编辑 Grub 2 脚本手动执行,/etc/grub.d/例如10_linux30_os-prober
    • 通过编辑用户创建的自定义配置文件手动进行。

    • 上述任一方法都允许 GRUB 2 在每次执行 update-grub 时自动将密码要求添加到配置文件 (grub.cfg)。

    • 通过编辑手动进行/boot/grub/grub.cfg。运行时将删除对此文件的编辑update-grub,并且密码保护将丢失。

  • 如果启用了任何形式的 GRUB 2 密码保护,则需要超级用户的名称和密码才能访问 GRUB 2 命令行和菜单编辑模式。

  • 用户名和/或密码不必与 Ubuntu 登录名/密码相同。
  • 除非使用 GRUB 2 的密码加密功能,否则密码将以纯文本形式存储在可读文件中。有关使用此功能的指导,请参阅密码加密部分。

默认情况下,在这种情况下,可用性胜过安全性。如果您不能信任周围的人,请始终将机器带在身边。需要更多安全性的人往往会加密整个系统,因此必须使用密码。

答案3

你的故意攻击从此开始:

  1. 当 grub2 菜单打开时,按“e”编辑 linux 启动选项

但您可以用密码保护该e选项,如下所述:如何在操作系统加载过程中(而不是在编辑启动选项时)添加 GRUB 密码保护

您可以采取额外的步骤来加密 grub 密码,如链接中所述。事实上,大约有 3% 的人口(猜测)在家中使用 Linux/Ubuntu,因此系统管理员最好e在工作时保护生产系统免受该功能的侵害。我想如果在工作中使用 Ubuntu,那么 30% 到 40% 的人也会在家中使用它,也许其中 10% 的人会学习如何e在他们的家庭系统上使用它。

感谢您的提问,他们刚刚学到了更多。不过,有了上面的链接,系统管理员的待办事项清单上又多了一项任务,即保护生产环境。

答案4

为了确保 grub 的安全,您需要保护对它的访问。这可以通过硬盘密码轻松实现,我在这里谈论的是磁盘安全性,它存储在磁盘本身的固件中。磁盘无法读取或写入。因此,没有密码不仅 grub 无法访问,您的数据也无法访问。

由于密码存储在磁盘本身上,将其移动到另一个系统对黑客没有帮助。

有软件可以删除某些制造商磁盘的密码,但同时也会有效擦除磁盘。因此您的数据仍然是安全的。

相关内容