如何防止他人使用Live CD重置我的密码?

最近,我的一个朋友来到我家,仅仅用了15分钟他就使用了一张Live CD黑掉了我的账户,并当着我的面重置了密码。我对这样的事情感到非常困惑。请指导我如何防止未来使用Live CD进行类似的攻击。

12拔下光驱。 - Anonymous
9可能会让你感兴趣的是,在Windows系统中也可以做同样的事情;当我在一所大学的IT部门工作时,我随身携带了一张光盘,以便在需要时进行操作。如果能够从其他媒体启动,那么任何计算机都不是真正安全的。 - Kelley
5一个空洞的声音低语着“全盘加密”。 - Joshua
6个回答

站在你的电脑旁边,手持一个棒球棒。狠狠地打击任何靠近的人。
或者将其锁起来。
如果你的电脑可以被物理接触到,那是不安全的。

24这如何保护我们免受持有大狗和机关枪的人的威胁? :D - jrg
4使用狗保护计算机的安全,并利用安全摄像头保护狗,同时在隔壁房间使用运动感应枪。 - Kangarooo
5+1 对这个回答的认真程度。你在这里做得非常好,值得投票支持。 - RolandiXor
1+1给出了很棒的答案和评论..我简直忍不住大声笑了!! :D :) @jrg发挥得淋漓尽致..哈哈哈.. :) 很高兴在askubuntu上看到这样的事情。 - Saurav Kumar

一个快速简单的方法是在您的BIOS中禁用从CD和USB设备启动,并设置BIOS密码。

根据这个维基页面

在Grub配置文件中放置密码或锁定菜单项并不能阻止用户使用在grub命令行输入的命令手动引导。

然而,没有什么能阻止别人偷走您的硬盘并将其安装到另一台机器上,或者通过移除电池来重置您的BIOS,或者其他攻击者在物理接触到您的机器时可以使用的方法之一。

更好的方式是加密您的驱动器,您可以通过加密您的主目录或加密整个磁盘来实现:


2这还不够——你还需要禁用恢复模式并锁定GRUB2,以防止启动选项被指定(或者在未输入密码的情况下无法指定)。一旦完成了所有这些步骤,不仅无法阻止有人窃取硬盘,而且打开计算机的人可以禁用BIOS密码,而不想打开计算机的人可能只需将整台计算机偷走。 - Eliah Kagan
但是伙计,如果有人拿走了我的硬盘,打开了 /etc/shadow 文件,修改了我的加密密码,然后重新启动,那么加密的个人文件目录对他来说也会自动解锁。 - coder
11@shariq 如果有人只是在/etc/shadow中更改了您的密码,那么当有人使用新密码登录时,加密的家目录将不会打开。在这种情况下,必须使用旧密码手动挂载加密的家目录,如果没有人知道旧密码,就必须进行破解,这将是困难且有一定失败的可能性。当您加密您的家目录时,通过编辑/etc/shadow更改密码不会改变数据加密所使用的密码。 - Eliah Kagan
@EliahKagan 我找不到关于如何做到这一点的任何信息,所以我引用了维基页面,如果你找到更多信息,请随意编辑到我的答案中。 - Jorge Castro
6+1 我脑海中浮现的第一件事就是加密家目录。 - Nathan Osman
@JorgeCastro 我不确定为什么Ubuntu Grub2维基页面上这样说;根据http://www.gnu.org/software/grub/manual/grub.html#Security,似乎很容易设置需要密码才能访问GRUB2命令行。然而,我暂时不愿自己编辑你的回答,以防我漏掉了什么。如果你(或其他对GRUB2有了解的用户)可以确认我对官方GRUB2文档中这一部分的解释是否正确,那么我会继续编辑你的帖子(如果你同意的话,你也可以在阅读完这个后自行编辑你的帖子)。 - Eliah Kagan
@EliahKagan 当系统允许我添加赏金时,我会添加以获得更多关注。(我不是 grub 专家) - Jorge Castro
当我在我的机器的BIOS上设置密码时,我发现只需在初始屏幕上按下一个键即可调出硬件自带的启动设备管理器来绕过密码。我还尝试在安装过程中对我的/home文件夹进行加密,但我不知道这是否会对密码安全有所帮助。 - Knowledge Cube
@EliahKagan,你可以将电脑锁在桌子上,或者使用一根连接到肯辛顿安全插槽或机箱上的钢丝。你还可以使用lm-sensors来检测对机箱的入侵,并触发一个脚本来清除加密密钥并引爆炸药。 - Anonymous
你可以通过设置密码或者断电并拆下BIOS电池一分钟来重置BIOS设置。 - Kangarooo

首先,警告...

Grub2 密码保护过程可能相当棘手,如果操作错误,有可能导致系统无法启动。因此,请务必 始终 先对硬盘进行完整的镜像备份。我的建议是使用 Clonezilla - 也可以使用其他备份工具如 PartImage

如果您想练习这个过程,可以使用一个虚拟机来回滚快照。

让我们开始吧

下面的步骤可以防止在引导时未经授权编辑 Grub 设置,即按下 e 进行编辑以更改引导选项。例如,您可以强制引导到单用户模式,从而访问您的硬盘。

这个步骤应该与硬盘加密和安全的 BIOS 引导选项一起使用,以防止从光盘引导,详见相关问题的答案。

以下几乎所有内容都可以逐行复制粘贴。

首先,让我们备份我们将要编辑的grub文件 - 打开一个终端会话:
sudo mkdir /etc/grub.d_backup
sudo cp /etc/grub.d/* /etc/grub.d_backup

让我们为 grub 创建一个用户名:
gksudo gedit /etc/grub.d/00_header &

滚动到底部,添加一个新的空行,然后复制并粘贴以下内容:
cat << EOF
set superusers="myusername"
password myusername xxxx
password recovery 1234
EOF

在这个例子中,创建了两个用户名:myusernamerecovery
接下来 - 返回终端(不要关闭gedit): 仅适用于Natty和Oneiric用户 通过输入命令生成一个加密密码。
grub-mkpasswd-pbkdf2

在提示时输入您将使用两次的密码

Your PBKDF2 is grub.pbkdf2.sha512.10000.D42BA2DB6CF3418C413373CD2D6B9A91AE4C0EB4E6AA20F89DFA027CA6E6CBF3542CB39E951607E9D651D82700AF47884929BDD193E36CB262CC96201B5789AA.1A9B0033928E3D3D0338583A5BF13AF7D5CC6EC5A41456F8FE8D8EBEB7A093CD0A0CE8688949E6007188ECB3FB0FF916F258602D130CF5C8525FB318FBBE2646

我们感兴趣的部分从grub.pbkdf2...开始,到BBE2646结束。
使用鼠标高亮此部分,右键点击并复制。
切换回您的gedit应用程序 - 高亮显示文本“xxxx”,然后用您复制的内容替换它(右键点击并粘贴)。
即,该行应该如下所示:
password myusername grub.pbkdf2.sha512.10000.D42BA2DB6CF3418C413373CD2D6B9A91AE4C0EB4E6AA20F89DFA027CA6E6CBF3542CB39E951607E9D651D82700AF47884929BDD193E36CB262CC96201B5789AA.1A9B0033928E3D3D0338583A5BF13AF7D5CC6EC5A41456F8FE8D8EBEB7A093CD0A0CE8688949E6007188ECB3FB0FF916F258602D130CF5C8525FB318FBBE2646

所有的 'buntu 版本(包括 Lucid 及以上版本)
保存并关闭文件。
最后,您需要为每个 grub 菜单项(所有以 menuentry 开头的文件)设置密码保护。
cd /etc/grub.d
sudo sed -i -e '/^menuentry /s/ {/ --users myusername {/' *

这将在每一行中添加一个新的条目--users myusername
运行update-grub来重新生成你的grub。
sudo update-grub

当您尝试编辑grub条目时,它会要求您的用户名,即myusername和您使用的密码。
重新启动并测试在编辑所有grub条目时是否强制执行用户名和密码。
注意:记得在启动过程中按下SHIFT键以显示您的grub菜单。 保护恢复模式的密码 以上所有问题都可以通过使用恢复模式轻松解决。
幸运的是,您还可以强制使用恢复模式菜单项的用户名和密码。在本答案的第一部分中,我们创建了一个名为recovery的额外用户名,并设置密码为1234。要使用此用户名,我们需要编辑以下文件:
gksudo gedit /etc/grub.d/10_linux

将这行改为:

printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"

To:

if ${recovery} ; then
   printf "menuentry '${title}' --users recovery ${CLASS} {\n" "${os}" "${version}"
else
   printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}"
fi 

使用恢复模式时,请使用用户名recovery和密码1234

运行sudo update-grub来重新生成您的grub文件

重新启动并测试,在尝试进入恢复模式时是否要求输入用户名和密码。


更多信息 - http://ubuntuforums.org/showthread.php?t=1369019

嗨!我按照你的教程操作了一下,结果还不错……除非你选择其他版本,在那些版本中你可以使用“E”键而无需密码。 - gsedej
Raring在恢复过程中没有这一行代码 printf "menuentry '${title}' ${CLASS} {\n" "${os}" "${version}",但在一个if函数内有一个类似的。请问您如何编辑它呢? - papukaija
/etc/default/grub中取消注释#GRUB_DISABLE_RECOVERY="true"这一行,是保护恢复模式的替代方法吗? - King Holly

重要的是要记住,如果有人可以物理接触您的计算机,他们将始终能够对您的PC进行操作。像锁定PC机箱和BIOS密码这样的措施也无法阻止决心强烈的人从任意取走您的硬盘和数据。

4在某些情况下,这些措施甚至可以阻止一个坚决的人拿走你的硬盘和数据。例如,如果是一个具有良好物理安全措施(安全摄像头、保安人员、警觉的业主/职员)的网吧内的自助机器,即使一个坚决的人可能仍然会试图实际偷走机器或其硬盘,但他们很可能会失败。 - Eliah Kagan
6另外一点是,如果你从一个数据被加密的机器上偷走硬盘,那么你就需要破解加密才能访问数据。而且如果密码质量很高,这样做可能会非常困难,甚至是不可能的。 - Eliah Kagan

简而言之,您需要:
  • 最重要的是:使用luks进行全盘加密。这可以保护硬件存储的提取和启动到外部CD-ROM/USB攻击。仅对家目录进行加密是不够的。
  • 设置BIOS密码。这很重要,因为/boot仍然未加密,并且在TPM中存储密码时更为重要。
  • 可选:设置GRUB密码。

你可以做到即使重置,"重置者"也无法看到数据。
要做到这一点,只需加密/home。
如果你想让重置变得不可能,需要删除负责更改密码的某些内容。

访问您的个人文件并不是唯一的问题。比如说,如果您的账户拥有sudo特权,他们就不需要/home来造成重大损害。 - Kevin