从 VPS 本身安全擦除 (scrub) VPS 文件系统

从 VPS 本身安全擦除 (scrub) VPS 文件系统

我有一个 VPS,打算删除。该特定的云提供商不保证在将磁盘交给下一个人之前驱动器上的数据将被擦除。什么是最大努力我可以尝试安全擦除敏感数据(无论是否作为文件存在或作为删除的数据)在驱动器上?

  • 假设提供商不提供单独的可启动操作系统来执行维护
  • 如果不能保证敏感数据的最后一位都被擦除,那也没关系
    • (如果数据那么敏感的话,我就会对数据进行加密!)

答案1

使用擦洗命令VPS 文件系统的用户数据部分2上的图1所示。

谨防:以下命令故意破坏数据

以下是按合理顺序清理目标的想法列表,但您可能需要根据您的特定 VPS 配置进行更改:

  • 数据库,通常存储在/var.例如,如果您使用 MySQL,您可能会想说这样的话:

    # service stop mysql       # command varies by OS, substitute as necessary
    # find /var/lib/mysql -type f -exec scrub {} \;
    
  • /usr/local应该只包含您在正常操作系统软件包系统之外添加到系统中的软件。用核武器摧毁一切:

    # find /usr/local -type f -exec scrub {} \;
    
  • 网络根。对于运行 Apache 的裸 VPS 上的大多数 Linux Web 服务器来说,这是一个很好的猜测:

    # service stop apache      # ditto caveat above
    # find /var/www -type f -exec scrub {} \;
    

    如果您使用的是带有良好控制面板前端的托管 VPS(可让您设置虚拟主机),或者您使用的是共享主机,那么您的 Web 根目录很可能位于其他地方。您需要找到它并使用它来代替/var/www.

  • 电子邮件。一定要抓住这两个MTA的假脱机目录以及各个用户的邮箱文件和目录。

  • 任何配置文件其中包含潜在的敏感数据。我无法正确地思考这一类别中的任何内容,因为配置数据通常相当无聊。攻击它的一种方法是说

    # ls -ltr /etc | tail -30
    

    这将为您提供您最近接触过的 30 个文件/etc,这将为您提供您最有可能接触过的文件列表,而不是包含库存配置信息。

    小心!有些文件可能/etc会阻止您重新登录。您可能希望将清除这些文件的时间推迟到稍后再进行。

  • 密码文件、密钥等此列表在不同系统之间差异很大,但可以从以下一些地方开始查找:

    /etc/shadow
    /etc/pki/*
    /etc/ssh/*key*
    /etc/ssl/{certs,private}/*
    ~/.ssh                        # for each user
    

    此时,您可能无法再次登录,因此请务必不要断开与 VPS 的 SSH 连接。

  • 擦除可用空间在每个可能包含用户数据的已安装文件系统上:

    对于每个用户数据文件系统2 个挂载点MOUNTPT

    # mkdir MOUNTPT/scrub
    # scrub -X MOUNTPT/scrub
    

    例如,如果/home在它自己的文件系统上,您将创建一个/home/scrub目录scrub -X。您必须分别为每个文件系统执行此操作。这会填充该文件系统伪随机噪音。

    如果根文件系统上有用户数据,请不要执行此操作,因为填充根文件系统可能会导致系统崩溃。

  • 燃烧世界。如果此时操作系统尚未崩溃,您的 shell 尚未删除会话等,您可以尽最大努力尝试烧毁世界:

    # find /var /home /etc -type f -exec scrub {} \;
    

    Unix 是文件锁定的方式,在执行此命令时,您仍然可能不会失去与 VPS 的连接,即使它会覆盖您需要登录的文件。一旦发生,您可能无法再执行任何命令结束。这绝对是一个“锯掉你所坐的树枝”之类的命令。

    如果完成后您仍然处于登录状态,那么您现在可以擦除根文件系统上的可用空间:

    # mkdir /scrub
    # scrub -X /scrub
    
  • 核对 VPS。最后,登录您的 VPS 控制面板并告诉它使用不同的操作系统重新安装您的 VPS。选择您的 VPS 提供商提供的最大且功能最齐全的一款。这将用新鲜的、无趣的数据覆盖您的 VPS 磁盘的一部分。它有可能会覆盖您之前的步骤遗漏的敏感内容。

在上面的所有scrub(1)命令中,我没有给出任何特殊选项,因为默认值是合理的。如果您感觉特别偏执,可以使用一些方法来scrub使用更多遍、不同的数据覆盖模式等。

Scrub 使用数据覆盖技术,需要采取真正的英雄措施才能克服。这是一个激励问题:有人愿意投入多少工作来恢复您的数据?这告诉您对于执行上述步骤并添加其他步骤应该有多么偏执。

由于虚拟机的性质,由于 VPS 迁移等原因,您的用户数据可能会在主机系统中产生“回声”,但外人无法访问这些回声。如果您关心这些事情,那么您一开始就不应该选择使用 VPS 提供商。

如果您将其他目录添加到用户数据树的标准列表2中,您可能应该尽早清理这些目录,因为清理的顺序是从最以用户为中心到最不以用户为中心。

最后执行最少以用户为中心的部分,因为它们往往是影响系统自身功能的文件系统的一部分。在完成清理之前,您不想将自己锁定在 VPS 之外。


  1. Scrub 具有高度可移植性,并且可能已经在您的操作系统的软件包存储库中,但是如果您必须从源代码构建它这并不难

  2. 通常,包含用户数据的树是/home/usr/local/var/etc,用户数据与系统默认数据的“密度”递减。由于您的系统管理风格或 VPS 管理软件首选项,您可能需要将其他目录添加到此列表中。

    我们不会费心清理像/usr/bin和 之类的地方/lib,因为这些地方应该只包含广泛可用的文件副本,因此很无聊。 (操作系统、您从公共来源安装的软件等)

答案2

首先,删除包含私有数据的所有文件。这意味着文件 in /home、 in /srv/etc您自定义的任何内容、登录/var/log、邮件输入/var/mail,通常是 等下的许多其他内容/var。仅保留一些最低网络配置,特别是 SSH 密钥(如果需要)(您可能希望创建一次性 SSH)键在擦除期间,并删除其他键)。

覆盖并卸载除根以外的所有分区,例如

# you shouldn't have any open file on non-root partitions at this point
umount /srv
</dev/zero cat >/dev/sda2

现在填写空白:

</dev/zero cat >/zero
rm /zero

那时,您的大部分数据都消失了。对于某些文件系统,每个文件的最后一个块中可能会残留一些数据(例如,在具有 1kB 块的文件系统上,如果文件长为 2000 字节,则末尾有 48 个未使用的字节);在 ext4 上,我认为这个未使用的空间总是被清零。

对于最后的“这是再见”,请终止尽可能多的服务,然后覆盖根分区,例如

</dev/zero cat >/dev/sda1

您的系统将无法重新启动。

不要费心使用多个随机通道而不是零进行覆盖:此建议基于 20 世纪 90 年代的磁盘技术,不再相关;今天,归零同样有效,即使在那时,恢复归零的数据也需要昂贵的设备和相当多的运气。看覆盖磁盘并点击链接了解更多详情。

相关内容