擦除 Linux 笔记本电脑

31 linux security data-destruction

我有一台装有 Debian 的笔记本电脑,我打算卖掉这台笔记本电脑。

在出售 Debian 安装之前删除它是否足以从我的个人数据中完全清除我的笔记本电脑,如果是,我该如何卸载 Debian(以便笔记本电脑上没有任何操作系统)?

Yar*_*ron 51

这个 nixCraft 帖子解释了如何擦除硬盘

安全删除数据并不像您想象的那么容易。当您使用操作系统的默认命令(例如 Linux/BSD/MacOS/UNIX 中的“rm”或 DOS 中的“del”或清空 WINDOWS 中的回收站)删除文件时,操作系统不会删除文件,该文件的内容保留在您的硬盘上。使敏感数据几乎无法恢复的唯一方法是使用几种定义的模式覆盖(“擦除”或“粉碎”)数据。要永久擦除硬盘,您可以使用标准的 dd 命令。但是,我建议使用 shred 命令或wipe 命令或scrub 命令。

警告:检查目标驱动器或分区是否正确。错误的驱动器或分区目标将导致数据丢失。在任何情况下,我们都无法对全部或部分数据丢失负责,因此请注意磁盘名称。你被警告了!

使用 live Linux cd 永久擦除磁盘

首先,下载knoppix Live Linux CD 或SystemRescueCd live CD。

接下来,刻录 Live CD 并从 Live CD 启动您的笔记本电脑或台式机。您现在可以擦除任何磁盘,包括 Windows、Linux、Mac OS X 或类 Unix 系统。

1.如何使用shred命令?

Shred 最初旨在安全地删除文件。它安全地删除文件,首先覆盖它以隐藏其内容。但是,相同的命令可用于擦除硬盘。例如,如果您的硬盘驱动器名为 /dev/sda,则键入以下命令:

# shred -n 5 -vz /dev/sda
Run Code Online (Sandbox Code Playgroud)

在哪里,

-n 5: Overwrite 5 times instead of the default (25 times).
-v : Show progress.
-z : Add a final overwrite with zeros to hide shredding.
Run Code Online (Sandbox Code Playgroud)

IDE硬盘hda(PC/Windows第一个连接IDE的硬盘)的命令是一样的:

# shred -n 5 -vz /dev/hda
Run Code Online (Sandbox Code Playgroud)

注意:来自@Gilles 的评论
将 shred -n 5 替换为 shred -n 1 或 cat /dev/zero。除非您的硬盘使用 1980 年代的技术,否则多次通过是没有用的。

在这个例子中,使用 shred 和 /dev/urandom 作为随机数据的来源:

# shred -v --random-source=/dev/urandom -n1 /dev/DISK/TO/DELETE
# shred -v --random-source=/dev/urandom -n1 /dev/sda
Run Code Online (Sandbox Code Playgroud)

2.如何使用wipe命令

您可以使用wipe命令删除包括磁盘在内的任何文件:

# wipe -D /path/to/file.doc
Run Code Online (Sandbox Code Playgroud)

3.如何使用scrub命令

您可以使用磁盘清理程序,例如scrub。它以重复模式覆盖硬盘、文件和其他设备,旨在使从这些设备恢复数据更加困难。尽管物理销毁无疑是销毁敏感数据最可靠的方法,但它既不方便又成本高昂。对于某些类别的数据,组织可能愿意做下一个最好的事情,即在所有字节上乱涂乱画,直到检索需要在实验室中进行英勇的努力。擦洗实现了几种不同的算法。语法是:

# scrub -p nnsa|dod|bsi|old|fastold|gutmann|random|random2 fileNameHere
Run Code Online (Sandbox Code Playgroud)

要擦除 /dev/sda,请输入:

# scrub -p dod /dev/sda
Run Code Online (Sandbox Code Playgroud)

4.使用dd命令安全擦除磁盘

您可以通过在每一位上写入新数据来擦除磁盘。dd 命令可以如下使用:

# dd if=/dev/urandom of=/dev/DISK/TO/WIPE bs=4096
Run Code Online (Sandbox Code Playgroud)

擦除 /dev/sda 磁盘,输入:

# dd if=/dev/urandom of=/dev/sda bs=4096
Run Code Online (Sandbox Code Playgroud)

5. 如何使用来自 OpenSSL 的随机种子 AES 密码安全地擦除驱动器/分区?

您也可以使用 openssl 和 pv 命令安全地擦除磁盘。首先,获取以字节为单位的 /dev/sda 磁盘总大小:

# blockdev --getsize64 /dev/sda
399717171200
Run Code Online (Sandbox Code Playgroud)

接下来,键入以下命令来擦除 /dev/sda 磁盘:

# openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt </dev/zero | pv -bartpes
Run Code Online (Sandbox Code Playgroud)

399717171200 | dd bs=64K of=/dev/sda

6. 如何使用 badblocks 命令安全地擦除磁盘

语法是:

# badblocks -c BLOCK_SIZE_HERE -wsvf /dev/DISK/TO/WIPE
# badblocks -wsvf /dev/DISK/TO/WIPE
# badblocks -wsvf /dev/sda
Run Code Online (Sandbox Code Playgroud)

  • 并且要非常非常非常小心这一点。除非你有绝对可靠的备份,否则没有回头路。 (23认同)
  • 放火烧房子时要非常小心——你可能会无家可归。 (23认同)
  • @MichaelKjörling:这就是重点!!任何带有 `--undo` 标志的工具都不适合该任务。 (5认同)
  • 这些解决方案需要启动操作系统并从操作系统下擦除驱动器。这可能会在擦除过程中导致内核崩溃,从而使笔记本电脑部分未擦除。正确的解决方案是从外部媒体启动,https://unix.stackexchange.com/a/371029/69068 (3认同)
  • 关于“shred”的一个细节:虽然擦除整个分区没有问题,但它不适用于位于日志文件系统上的单个*文件*,日志文件系统也记录数据和牛文件系统,例如 btrfs,因为 shred 只会覆盖一个副本而不是原始数据。另外,我第二次提到@RuiFRibeiro - 在擦除过程中,Linux 系统不太可能必须从磁盘加载模块或驱动程序。 (3认同)

小智 17

从 USB/CD 启动您的笔记本电脑并使用 DBAN:https ://dban.org/

问候。

  • 并且要非常非常非常小心这一点。除非你有绝对可靠的备份,否则没有回头路。 (8认同)

jpm*_*c26 13

我将建议考虑擦拭驱动器的替代方法。

擦除驱动器很危险,因为您可能会永久丢失数据。此外,根据您对有人窃取数据的担心程度,可能很难确保某些驱动器确实不可恢复(例如,SSD 具有可四处传播写入的内部机制)。

一种简单且 100% 有效的解决方案是用新的驱动器更换驱动器。为自己保留驱动器,然后您甚至不必担心它(除非有人闯入您的家或它所连接的计算机受到损害)。这是否值得您花钱是只有您可以确定的事情,但这并不那么麻烦。作为奖励,现在您可以为自己提供额外的动力。通过权衡成本与您希望防范的攻击风险来做出决定。

  • @ThorbjørnRavnAndersen 我已经考虑过了。这是考虑权衡成本的一个因素。尽管如此,它保证有效,这对 OP 来说可能更有价值。 (2认同)

Rui*_*iro 10

我建议使用以下方法清洁磁盘:

sudo dd if=/dev/urandom of=/dev/sda bs=4M oflag=direct
Run Code Online (Sandbox Code Playgroud)

我建议/dev/urandom反对,/dev/zero尤其是在处理 SSD 驱动器时。您可以/dev/zero在机械磁盘中使用,但是据说使用随机值也会为可能的高级恢复行为增加更多噪音(不太可能发生,但必须说)。

dd 也比这里提出的替代方案更有效(更快),即做一只猫。

此外,此方法不需要您从其他媒体启动,并且dd在 Linux 中默认存在。

还要注意如何使用此命令,因为无法从中恢复。小心的话,双重或三次检查它是否是预期的设备(甚至断开任何外部备份驱动器),因为很容易错误地彻底清除错误的设备。

  • `/dev/urandom` 是非阻塞的。它比某些 PRNG 慢,但绝对不是“*非常* 慢”。也许你正在考虑`/dev/random`? (3认同)

hsc*_*hou 8

以 root 身份登录:

cat /dev/zero > /dev/sda
Run Code Online (Sandbox Code Playgroud)

使用硬盘无需多次执行此操作。如果您有旧的 8" 软盘,最好擦除几次。

  • 并且要非常非常非常小心这一点。除非你有绝对可靠的备份,否则没有回头路。 (5认同)
  • dd 应该比 cat 快 (3认同)
  • @RuiFRibeiro 但它不是 https://unix.stackexchange.com/questions/9432/is-there-a-way-to-determine-the-optimal-value-for-the-bs-parameter-to-dd/9492 #9492 XD (2认同)
  • @RuiFRibeiro `dd` 在 `bs=1M` 下比 `cat` 快 15%。当“bs=1K”时,速度是相同的。结论:如果安装了“dd”,请使用它。 (2认同)