当我使用“ dd”覆盖运行Ubuntu的磁盘时会发生什么?


9

如果我使用会发生什么

sudo dd if=/dev/zero of=/dev/sda

从安装Ubuntu 运行 /dev/sda


我在VM中进行了尝试,它似乎已正确擦除了磁盘。每次都会这样吗?这是“擦除” Ubuntu安装和所有数据的安全方法吗?

我的问题受到以下因素的启发:

  1. 如何从计算机上卸载Ubuntu?
  2. “ rm -rf /”如何删除系统中的所有文件?

2
不不不。馊主意。如果要安全擦除数据,请不要依赖于此。
安德烈BORIE

Answers:


16

实际上,文件系统仍处于挂载状态,并且某些写入被缓冲,这意味着它们仍在RAM中等待写入磁盘。假设dd正确地覆盖了所有内容,并且紧随其后的是缓冲区被刷新,并且一些潜在的敏感数据被写回到磁盘。因此,这不是擦除磁盘的安全方法。

您可以通过以下方式避免此问题:首先以只读模式重新安装磁盘上的根文件系统和任何其他文件系统(或完全卸载它们,但是您将无法使用根文件系统),然后再进行应该在文件系统上完全允许更多写操作(因此,没有要刷新的缓冲区),因此您的命令现在应该是安全的,即使在发生紧急情况时这仍然是一个坏主意,因为这需要很长时间。

如果您想要某种紧急删除功能,建议您使用LUKS(Ubuntu安装程序可以做到)对磁盘加密,然后在Security Stack Exchange上按照我的回答进行操作。这涉及擦除仅2MB大小的cryptheader,并且只需不到一秒钟的时间即可覆盖。然后重新启动系统,磁盘加密密钥将从内存中消失,因为cryptheader本身也消失了,因此无法恢复它们。



10

我牺牲了VM,使用了dd来自Arch Wiki页面的略微更高级的使用和修改。

首先安装一个不错的进度表:

sudo apt-get install pv

然后运行“增强” dd命令

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null \
| base64)" -nosalt </dev/zero \
| pv -bartpes "$(sudo blockdev --getsize64 /dev/sda)" \
| sudo dd bs=64K of=/dev/sda

这将使磁盘充满AES密文。完整安全地擦除磁盘吗?可能比您自己的dd示例更好,但是没有什么是完全安全或有保证的...

在此处输入图片说明

而且您欠我一台VM :)

参考文献:


您能否举一个例子,说明如果希望使用ddpv请用零填充磁盘(if = / dev / zero)的语法如何?
风暴之王'16

1
@Stormlord您只需通过pv(管道查看器)对其进行管道dd if=/dev/zero | pv | dd of=/dev/sdX
传输

2
您无需牺牲虚拟机-只需预先制作快照,完成后
即可恢复

因此,即使有一些后写,总的结果在隐写上也很复杂。如果没有“垃圾”,则将磁盘转储以查找非零值很简单。
mckenzm '16

6

简短的答案:它将大致执行您想要的操作,然后什么也不会起作用。使用dd您在文件系统以下的级别进行操作,这意味着所有适用的约束都不再相关(这并不意味着内核无法阻止您执行此操作,但事实并非如此)。文件系统中的某些内容已在内存中,例如内核和dd程序本身,而某些内容将在缓存中。如果系统处于多用户模式,则可能会在文件进行过程中写回某些文件dd(假定它们实际上已更改),并且如果您在内存压力下,那里的某些页面也可能被换出(它们应该被加密,因此重启后将无法使用)。

在此之后您要发出的大多数命令(包括reboot)将不在缓存中,因此将无法使用。因此,如果您处于单用户模式下,它将做得非常好;如果处于多用户模式下,它将擦除绝大多数数据。理想情况下,您应该从其他介质启动它(甚至可能停止在initrd上),以便可以确定所有写入来自何处。

如果要安全擦除,将无法完成任务,因为如果将其归零,仍然会残留一些原始数据。通常,您最多需要进行三次随机写入,这意味着从中复制/dev/urandom而不是/dev/zero-慢得多但更安全。有人可能建议您使用/dev/random“纯”随机数据的设备-无伪随机-但为此目的,有人设法破解PRNG种子并成功掩盖数据的机会基本上可以忽略不计。

如果您真的很偏执,则需要将存储设备放入熔炉中,以使其消磁/放电。


1
您还记得dd挑战吗?这是几年前的事,但他们向任何可以从曾经被归零一次的硬盘驱动器中恢复任何数据的公司提供悬赏。他们没有参加者。
Casey's

1
“三回”的事完全是胡说八道。随机数据1次肯定无法恢复。即使从零恢复,也要付出昂贵的代价(请参阅@Casey的评论)。也许如果赏金是$ 1b左右,那么他们就会有参与者...
R .. GitHub停止帮助ICE 2016年

取决于您的预算和磁盘技术。如果是盘子,您可能可以获取数据。即使采用“垂直”磁性技术。内存越不稳定,您就越安全。
mckenzm '16

4

它会像在VM中一样擦除磁盘并导致系统无法使用。

但是,如果您想到的是“紧急删除”,dd可能还不够快,并且我不确定在这种情况下是否有更快的命令或程序提供该功能。


1

它应该可以工作,正在运行的进程保存在Ram中,不需要磁盘。无论如何,我都会使用从cd或usb运行的实时系统。甚至还有dban,一个专门用于磁盘擦除的实时Linux。

用零覆盖磁盘是可以节省的,但是如果您对偏执狂或有合法规则,则可以多次覆盖随机数据。

使用ssd覆盖时要格外小心,因为损耗平均,不能保证删除所有数据。

如果使用全盘加密(luks),则不必删除整个磁盘,只需删除luks标头即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.