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

Mic*_*pat 8 linux filesystems security deleted-files

我有一个打算删除的 VPS。这个特定的云提供商不保证在将磁盘交给下一个人之前会擦除驱动器上的数据。什么是最好的努力尝试,我可以做,以确保擦拭敏感数据(无论是现有的文件或删除数据)的驱动器上?

  • 假设提供商不提供单独的、可启动的操作系统来执行维护
  • 如果不是每一个敏感数据都可以保证被擦除,那没关系
    • (我会加密数据,如果它非常敏感的话!)

War*_*ung 6

在 VPS 文件系统的用户数据部分2上使用清理命令1

注意:以下命令会故意破坏数据

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

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

    # service stop mysql       # command varies by OS, substitute as necessary
    # find /var/lib/mysql -type f -exec scrub {} \;
    
    Run Code Online (Sandbox Code Playgroud)
  • /usr/local应该只包含您在正常操作系统包系统之外添加到系统中的软件。全部核对:

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

    # service stop apache      # ditto caveat above
    # find /var/www -type f -exec scrub {} \;
    
    Run Code Online (Sandbox Code Playgroud)

    如果您使用的是具有良好控制面板前端的托管 VPS,可以让您设置虚拟主机,或者您使用的是共享主机,那么您的网络根目录可能位于其他地方。您需要找到它并使用它而不是/var/www.

  • 电子邮件。确保同时捕获MTA的假脱机目录以及单个用户的邮箱文件和目录。

  • 任何包含潜在敏感数据的配置文件。我想不出这个类别中的任何东西,因为配置数据通常相当无聊。攻击它的一种方法是说

    # ls -ltr /etc | tail -30
    
    Run Code Online (Sandbox Code Playgroud)

    这会给你你最近接触过的 30 个文件/etc,它会给你一个最有可能被你接触过的文件列表,而不是包含库存配置信息。

    当心!您可以清除某些文件,/etc这将阻止您重新登录。您可能希望将清除这些文件推迟到该过程的后期。

  • 密码文件、密钥等。此列表因系统而异,但可以从以下位置开始查看:

    /etc/shadow
    /etc/pki/*
    /etc/ssh/*key*
    /etc/ssl/{certs,private}/*
    ~/.ssh                        # for each user
    
    Run Code Online (Sandbox Code Playgroud)

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

  • 擦除每个可能包含用户数据的已挂载文件系统上的可用空间

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

    # mkdir MOUNTPT/scrub
    # scrub -X MOUNTPT/scrub
    
    Run Code Online (Sandbox Code Playgroud)

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

    如果根文件系统上有用户数据,请不要这样做,因为填充根文件系统可能会导致系统崩溃。

  • 燃烧世界。如果此时操作系统没有崩溃,你的 shell 没有丢弃你的会话,等等,你可以尽最大努力烧毁世界:

    # find /var /home /etc -type f -exec scrub {} \;
    
    Run Code Online (Sandbox Code Playgroud)

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

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

    # mkdir /scrub
    # scrub -X /scrub
    
    Run Code Online (Sandbox Code Playgroud)
  • 核对 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那样的地方,因为它们应该只包含广泛可用的文件副本,因此很无聊。(您从公共来源安装的操作系统、软件等)

  • @MichaelKropat:谢谢。回复:清理可用空间,不,您不想过早地这样做。请记住,您是以 root 身份执行此操作的,这会绕过系统针对单个用户填充整个文件系统的正常保护。当文件系统填满时,进程开始崩溃,因为它们甚至无法执行创建临时文件等简单的操作。例如,如果您的 sshd 崩溃了,您就将自己锁定在 VPS 之外,无法重新进入并完成工作。 (2认同)