我的一台专用托管 CentOS 服务器已经使用了 12 年。我收到了关于它的报废通知,并且我也开始收到 SMART 错误。我想是时候放手了。但在此之前,我想尝试并安全地删除所有剩余信息,即使托管公司声称驱动器将被安全处理。但是,保持安全并采取一些自己的预防措施从来都不是坏事。
我已经使用以下方法删除了一些敏感文件:
shred -uv filename
有没有办法在操作系统运行时安全地“从轨道上核对”驱动器?
我的一台专用托管 CentOS 服务器已经使用了 12 年。我收到了关于它的报废通知,并且我也开始收到 SMART 错误。我想是时候放手了。但在此之前,我想尝试并安全地删除所有剩余信息,即使托管公司声称驱动器将被安全处理。但是,保持安全并采取一些自己的预防措施从来都不是坏事。
我已经使用以下方法删除了一些敏感文件:
shred -uv filename
有没有办法在操作系统运行时安全地“从轨道上核对”驱动器?
您可以shred
从正在运行的系统直接在磁盘的设备节点上运行。它会不高兴并抛出 IO 错误,因为文件系统仍然安装在充满随机数据的磁盘上,但是由于shred
二进制文件和它所依赖的任何库在进程开始之前已完全加载,它应该能够承受其他一切在 IO 错误下崩溃并仍然完成擦除过程。
请注意,敏感数据在被擦除后被写回磁盘的可能性很小,因为文件系统仍处于读/写状态,并且系统可能会将充满机密数据的缓冲区刷新回磁盘。为了缓解这种情况,如果可以的话,将文件系统重新挂载为只读,尽管我很确定一旦系统运行,你就不能从根文件系统轻松地做到这一点。您可以修改 fstab 以使用该ro
选项挂载它并重新启动(但请确保您的启动过程不介意它,并且至少可以足够远以启动 SSH 服务器以便您可以连接),或者从物理控制台/带外管理设备,使用自定义内核命令行启动操作系统linux /boot/vmlinuz... root=/dev/sdX ro quiet init=/bin/sh
它将根文件系统安装为只读并启动一个裸壳而不是 init 进程,并且shred
由于 FS 现在是只读的,因此您应该能够在没有任何数据泄漏的情况下运行。
请注意,如果您在要擦除的设备上设置了任何交换分区,请确保swapoff /dev/sdXY
在擦除磁盘之前“卸载”它们(或在 fstab 中注释它们并重新启动),以确保该过程可以顺利完成。虽然 IO 错误对已经加载的进程来说不是致命的,但在擦除完成之前弄乱交换分区可能会使系统完全崩溃。
最后一个选项是 ATA Secure Erase 命令:
hdparm --security-set-pass verysecure /dev/sdX
hdparm --security-erase verysecure /dev/sdX
假设您相信驱动器的制造商能够正确实施它,这应该足够了,但以上所有关于数据泄漏和交换分区的内容仍然适用。
如果您真的很偏执,您可以使用一种方法,然后通过网络在某些安装介质或恢复环境上重新启动(大多数托管服务提供商都有)并执行第二种方法。
编辑 - OP 觉得原始答案不符合 SE 标准。把它留在下面。较新的答案就在这里:
全盘擦除的两个选项。第一个利用磁盘驱动器控制器安全擦除功能,但并非所有驱动器都具有该功能,并且某些 BIOS 会阻止该命令。它比第二种选择更快。
hdparm --security-erase <PWD> <device>
apt-get install wipe
和擦除磁盘wipe /dev/sdb1
。此外,这里有很多关于清除 linux 驱动器的信息,包括hdparm
和wipe
.
旧答案
你打过驱动器的每个部分吗?交换文件呢?/tmp 目录呢?已经删除的文件怎么办?您确实需要在操作系统当前未使用的驱动器上点击已删除或未删除的每个字节。那么,磁盘驱动程序自动隔离的坏扇区呢?您无法再访问这些,但驱动器恢复服务可能可以。
我想知道您是否编写了一个直接访问磁盘设备驱动程序(我机器上的 /dev/disk0)并从那里覆盖它的程序。这将是一小段 C 代码。该程序将被读入 RAM 并运行,直到磁盘被擦除。但是,操作系统在那之后将不再工作,而且绝对不会在重新启动后工作。所以,你只能这样做一次。
最偏执的机构过去常常碾压,现在物理上粉碎他们的磁盘驱动器。有时人们不会做他们承诺会做的事。
你有多偏执?