被删除的文件可以被轻易恢复,被格式化的硬盘可以被还原如初,因此,对于重要文件和敏感资料必须进行安全删除,从而达到无法还原的安全目标。普通删除操作无法完成这一目标,安全删除依赖于专用工具,比如Windows操作系统中的BlankandSecurity,Linux操作系统中的shred,其他类似的安全工具的原理大体一致,只是在使用便利性和安全删除算法上有所区别。
根据文件系统和存储介质的不同,安全删除文件可以需要考虑完全不同的因素,比如FAT32和NTFS、EXT2和EXT4,固态硬盘和机械硬盘。现代的日志文件系统(如 ext3 和 ext4)都在努力确保文件不会损坏、损坏或丢失数据,使用日志文件系统时,无法保证覆写确实发生在被删除文件所使用的硬盘空间上。
以shred安全删除工具为例,此工具在自己的产品中明确说明不适用于带有日志功能的文件系统,可能并不能达到安全删除的目标,在传统非日志功能的文件系统中才可以达到安全删除的目标。shred 的设计就是为你执行覆盖操作,这样删除的文件就无法恢复了,同样的,这些技术适用于传统的机械式硬盘,不适用于固态硬盘。这样做不会奏效,还会造成额外写入,并对固态硬盘造成不必要的磨损。要安全擦除固态硬盘中的数据,应使用固态硬盘制造商提供的实用程序。
#安全删除工具shred
$shred -uvz 文件
u: 在覆盖文件后取消分配并删除文件。
v: 详细说明选项,让 shred 告诉我们它在做什么。
z: 进行最后的清零覆盖。
shred工具不支持递归操作,换言之不支持批量删除目录、子目录以及其中的文件。此时,需要使用另一款专业安全删除工具套件secure-delete。
sudo apt-get install secure-delete
安全删除捆绑包中包含四种命令。
srm 是安全 rm,用于删除文件并覆盖其硬盘空间。
sfill 是覆盖硬盘所有可用空间的工具。
sswap 用于覆盖和清理交换空间。
sdmem 用于清理内存。
srm 命令
-z(零)选项会使 srm 在最终清除时使用零,而不是随机数据。-v(verbose)选项会让 srm 显示删除进度。
可以使用 -l(降低安全性)选项,将通过次数减少到两次,这样可以大大加快速度。可以使用两次 -l(降低安全性)选项,将通过次数减少到一次。
-r(递归)选项将使 srm 删除所有子目录及其内容。你可以向 srm 传递第一个目录的路径。
如果你担心使用 rm 命令删除的文件会被覆盖,该怎么办?sfill 命令将覆盖硬盘上的所有可用空间。在此过程中,你会发现硬盘上的可用空间越来越少,直至完全没有可用空间。当 sfill 完成后,它会将所有可用空间释放给你。如果你管理的是一个多用户系统,这将会造成很大的干扰,因此这是一项应在非工作时间进行的维护任务。
为了加快运行速度,可以使用 -l(降低安全性)选项,一般建议同时使用-v(verbose)和-z(z zeroes)选项。日常清理时,可以使用sfill 安全地覆盖 /home 目录中的所有可用空间。
需要注意安全删除相当耗费时间,往往会持续运行几个小时。这还是在使用 -l(降低安全性)选项的情况下。
swap命令
sswap 命令会覆盖交换分区中的存储空间。我们首先要做的是识别交换分区。可以使用列出块设备的 blkid 命令来完成这项工作,如上图所示红色处为交换分区。
需要注意,安全清理交换分区之前需要在覆盖期间关闭磁盘对交换分区的写入,使用 swapoff来执行操作。sswap 会开始处理交换分区,覆盖其中的所有内容。它所花的时间不像 sfill 那么长,完成后,需要将交换分区恢复为活动交换空间,使用swapon来执行操作。
sdmem 命令
secure-delete 软件包包含一个擦除计算机内存的工具。冷启动攻击需要在计算机关机后不久对计算机进行物理访问。这种类型的攻击有可能允许从 内存中检索数据。如果需要保护自己免受这种攻击,可以在关闭电脑之前擦除内存。同样使用-v(verbose)和-ll(lessen security)选项。
最后,做好操作系统安全和文件管理需要熟悉常用的Linux命令,如下图所示。