Ale*_*x B 162 linux security storage secure-erase ubuntu
当一个文件被删除时,它的内容可能仍然留在文件系统中,除非被其他东西明确覆盖。该wipe命令可以安全地擦除文件,但似乎不允许擦除任何文件未使用的可用磁盘空间。
我应该用什么来实现这一目标?
fno*_*_ix 120
警告:现代磁盘/SSD 硬件和现代文件系统可能会将数据存放在您无法删除的地方,因此此过程可能仍会在磁盘上留下数据。擦除数据的唯一安全方法是 ATA Secure Erase 命令(如果正确实施)或物理破坏。另请参阅如何可靠地擦除硬盘驱动器上的所有信息?
您可以使用一套称为安全删除的工具。
sudo apt-get install secure-delete
Run Code Online (Sandbox Code Playgroud)
这有四个工具:
srm- 安全地删除现有文件
smem- 安全地从内存中删除文件的痕迹
sfill- 擦除硬盘驱动器上标记为空的所有空间
sswap- 擦除交换空间中的所有数据。
从手册页 srm
srm 旨在以安全的方式删除媒体上的数据,窃贼、执法部门或其他威胁无法恢复这些数据。擦除算法基于领先的民用密码学家之一彼得·古特曼 (Peter Gutmann) 在第 6 届 Usenix 安全研讨会上发表的论文“从磁性和固态存储器中安全删除数据”。
srm的安全数据删除流程是这样的:
- 1 次通过 0xff
- 5 随机通过。
/dev/urandom用于安全 RNG(如果可用)。- 27 次传递具有由 Peter Gutmann 定义的特殊值。
- 5 随机通过。
/dev/urandom用于安全 RNG(如果可用)。- 将文件重命名为随机值
- 截断文件
作为额外的安全措施,文件以 O_SYNC 模式打开,每次通过后都会进行一次
fsync()调用。srm出于速度目的写入 32k 块,填充磁盘缓存的缓冲区以强制它们刷新并覆盖属于文件的旧数据。
Dav*_*ett 87
如果您只需要一次传递并且只想用零替换所有内容,最快的方法是:
cat /dev/zero > zero.file
sync
rm zero.file
Run Code Online (Sandbox Code Playgroud)
(从要擦除的文件系统上的目录运行)
(该sync命令是确保所有数据都写入磁盘的偏执措施 - 智能缓存管理器可能会发现它可以在取消链接文件时取消对任何挂起块的写入)
在此操作期间,文件系统上将有一段时间根本没有可用空间,如果生成的文件很大且碎片化,因此需要一段时间才能删除,这可能需要数十秒。减少空闲空间完全为零的时间:
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
cat /dev/zero > zero.file
sync
rm zero.small.file
rm zero.file
Run Code Online (Sandbox Code Playgroud)
这应该足以阻止某人读取旧文件内容,而无需进行昂贵的取证操作。对于稍微更安全但更慢的变体,请替换/dev/zero为/dev/urandom. 对于更多的偏执狂,使用 运行多个步骤/dev/urandom,但如果您需要那么多努力shred,那么 coreutils 包中的实用程序是您的最佳选择:
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
shred -z zero.small.file
cat /dev/zero > zero.file
sync
rm zero.small.file
shred -z zero.file
sync
rm zero.file
Run Code Online (Sandbox Code Playgroud)
请注意,上面的小文件在创建较大的文件之前被粉碎,因此一旦较大的文件完成就可以将其删除,而不必等待它被粉碎,从而在所需的时间内使文件系统的可用空间为零。粉碎大文件的过程需要很长时间,除非您试图向 NSA 隐藏某些内容,否则 IMO 并不是真正必要的。
以上所有内容都适用于任何文件系统。
文件大小限制:
正如 DanMoulding 在下面的评论中指出的那样,这可能在某些文件系统上存在文件大小限制问题。
对于 FAT32,由于 2GiB 文件限制,这肯定是一个问题:现在大多数卷都比这大(8TiB 是卷大小限制 IIRC)。您可以通过将大cat /dev/zero输出输出通过管道split传输以生成多个较小的文件并相应地调整切碎和删除阶段来解决此问题。
使用 ext2/3/4 则不必担心:使用默认/通用 4K 块,文件大小限制为 2TiB,因此您必须有一个巨大的卷才能成为问题(这些条件下的最大卷大小)是 16TiB)。
使用(仍处于试验阶段)btrfs,最大文件和卷大小都是 16EiB。
在 NTFS 下,在某些情况下,最大文件长度甚至大于最大卷长度。
更多信息的起点:
http : //en.wikipedia.org/wiki/Ext3#Size_limits
http://en.wikipedia.org/wiki/Btrfs
http://en.wikipedia.org/wiki/Ntfs#Scalability
虚拟设备
正如最近评论中提到的,虚拟设备还有一些额外的考虑:
对于稀疏分配的虚拟磁盘,其他方法(例如 by 使用的方法)zerofree会更快(尽管与标准工具不同,cat而且dd这不是您可以依赖的标准工具,几乎可以在任何类 Unix 操作系统中使用)。
请注意,将稀疏虚拟设备上的块归零可能不会擦除底层物理设备上的块,实际上我会说它不太可能 - 虚拟磁盘管理器只会使该块不再使用所以以后可以分配给别的东西。
即使对于固定大小的虚拟设备,您也可能无法控制设备的物理位置,因此可以随时将其移动到当前位置或一组新的物理磁盘上,并且您最多可以擦除当前位置,而不是该块可能曾驻留在过去的任何先前位置。
对于虚拟设备上的上述问题:除非您控制主机并且可以在擦除虚拟机中的磁盘或移动虚拟设备之后安全擦除其未分配的空间,否则在此之后您无能为力事实。唯一的办法是从一开始就使用全盘加密所以没有任何未加密的内容首先写入物理媒体。当然,可能仍然需要在 VM 内擦除可用空间。还请注意,由于虚拟化层无法真正看到哪些块未使用,因此 FDE 可以使稀疏虚拟设备变得不那么有用。如果操作系统的文件系统层向虚拟设备发送修剪命令(就好像它是一个 SSD),并且虚拟控制器解释这些,那么这可能会解决这个问题,但我不知道这种情况实际发生的任何情况以及更广泛的对此的讨论是其他地方的事情(我们已经接近脱离原始问题的主题,所以如果这引起了您的兴趣,可能需要进行一些实验和/或后续问题)。
use*_*559 49
我对photorec可以从我的磁盘中检索的文件数量感到震惊,即使在擦除之后也是如此。
仅使用 0x00 填充 1 次或使用不同的 cabalistic 标准填充 38 次是否更安全,更多的是学术讨论。1996 年关于切碎的开创性论文的作者给自己写了一个结语,说这对于现代硬件来说已经过时且不必要了。没有记录的数据被物理替换为零并随后恢复的案例。
这个过程中真正脆弱的环节是文件系统。一些文件系统为特殊用途保留空间,并且它不作为“空闲空间”提供。但是您的数据可能在那里。这包括照片、个人纯文本电子邮件等等。我刚刚在 google 上搜索了 reserved+space+ext4 并了解到我的home分区的5%是保留的。我想这是我photorec发现这么多东西的地方。结论:粉碎方法不是最重要的,即使是多遍方法仍然保留数据。
您可以# tune2fs -m 0 /dev/sdn0在安装之前尝试。(如果这将是重新启动后的根分区,请确保运行-m 5或-m 1卸载它后)。
但是,无论如何,可能还有一些空间。
唯一真正安全的方法是擦除整个分区,再次创建文件系统,然后从备份中恢复文件。
快捷方式(推荐)
从要擦除的文件系统上的目录运行:
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file
Run Code Online (Sandbox Code Playgroud)
注意:小文件的目的是减少空闲空间完全为零的时间;同步的目的是确保实际写入数据。
这对大多数人来说应该足够了。
缓慢的方式(偏执)
没有记录在上述清理后数据被恢复的案例。如果可能的话,这将是昂贵的并且需要资源。
但是,如果您有理由认为秘密机构会花费大量资源来恢复您的文件,那么这应该就足够了:
dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file
Run Code Online (Sandbox Code Playgroud)
这需要更长的时间。
警告。如果您选择了偏执的方式,那么在此之后您仍然希望进行快速擦除,这不是偏执。纯随机数据的存在很容易被检测到,而且成本低廉,并让人怀疑它实际上是加密数据。你可能会因为没有透露解密密钥而被折磨致死。
很慢的方式(疯狂的偏执狂)
甚至 1996 年关于切碎的开创性论文的作者也写了一个结语,说这对于现代硬件来说已经过时且不必要了。
但是,如果您有很多空闲时间并且不介意通过大量覆盖来浪费磁盘,那么它就可以了:
dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file
Run Code Online (Sandbox Code Playgroud)
注意:这本质上等同于使用安全删除工具。
在编辑之前,这篇文章是对 David Spillett 的重写。“cat”命令会产生一条错误消息,但我无法对其他人的帖子发表评论。
osg*_*sgx 29
至少在 Ubuntu 中有 zerofree 实用程序:
http://manpages.ubuntu.com/manpages/natty/man8/zerofree.8.html
zerofree — zero free blocks from ext2/3 file-systems
zerofree finds the unallocated, non-zeroed blocks in an ext2 or ext3
filesystem (e.g. /dev/hda1) and fills them with zeroes. This is useful
if the device on which this file-system resides is a disk image. In
this case, depending on the type of disk image, a secondary utility may
be able to reduce the size of the disk image after zerofree has been
run.
The usual way to achieve the same result (zeroing the unallocated
blocks) is to run dd (1) to create a file full of zeroes that takes up
the entire free space on the drive, and then delete this file. This has
many disadvantages, which zerofree alleviates:
· it is slow;
· it makes the disk image (temporarily) grow to its maximal extent;
· it (temporarily) uses all free space on the disk, so other
concurrent write actions may fail.
filesystem has to be unmounted or mounted read-only for zerofree to
work. It will exit with an error message if the filesystem is mounted
writable. To remount the root file-system readonly, you can first
switch to single user runlevel (telinit 1) then use mount -o remount,ro
filesystem.
Run Code Online (Sandbox Code Playgroud)
另请查看有关 zerofree 的链接: Keeping filesystem images sparse - 它来自其作者 - Ron Yorston(2012 年 8 月 9 日)
| 归档时间: |
|
| 查看次数: |
300151 次 |
| 最近记录: |