我可以可靠地使用“dd”來擦除正在運行的 Linux 伺服器上的根檔案系統嗎?

我可以可靠地使用“dd”來擦除正在運行的 Linux 伺服器上的根檔案系統嗎?

我有一個(物理上)遠端伺服器,我想安全地銷毀它。不幸的是,磁碟被分割為一個大的根分割區,沒有其他分割區。我可以可靠地用於dd擦除包含根檔案系統的裝置嗎?

一些簡單的事情,例如:

$ sudo nohup dd if=/dev/urandom of=/dev/sda bs=1024

顯然,我永遠不會看到作業的輸出,因此我無法驗證它是否成功完成。dd和程式nohup應該足夠小,並且此時伺服器上沒有其他任何東西在運行,因此這些程式在運行時沒有理由從記憶體中彈出。它們會運行完成,還是內核可能會在dd完成之前的某個時刻出現恐慌?

我正在考慮其他可能性,但我會在單獨的問題中詢問這些可能性。

答案1

是的, 這是絕對地可能,但這需要一些工作。

大多數答案都可以在 StackExchange 上找到,但我將在這裡總結一下來源的鏈接,這些來源有更多的細節,值得讚揚的優秀信息。

  1. 建立一個記憶體基礎 Linux 環境並使用以下命令切換到它pivot_root
  2. 確保您可以使用從外部存取伺服器ssh
  3. 擦除根設備。

    # nohup dd if=/dev/urandom of=/dev/sda bs=512 > wipe.log &

  4. 請每隔一段時間檢查一下 的進度dd,因為它通常不會給您任何進度指示。

    # kill -USR1 [ddpid]

  5. 稍後回來並驗證該過程是否已完成(檢查日誌檔案)。查看磁碟以驗證其上是否有隨機垃圾而不是真正的檔案系統。如果您願意,可以擦拭第二次(或第三次)。

  6. 決定下一步要做什麼。

    如果你願意,你可以停在這裡然後走開。當機器關閉時,您將擁有一個不可啟動的設備,該設備的安全程度取決於您的決定dd

    我決定接下來要做的就是嘗試一些我以前沒有做過的事情:遠端建立一個 Linux 基礎系統。所以我繼續說:

  7. 用於fdisk根據需要重新分區根設備,並用於mkfs在這些分區上建立檔案系統。

  8. 使用debootstrap安裝基本的 Debian 環境在(未來的)根檔案系統上。
  9. chroot到新的基礎環境,安裝額外的軟體包(例如sshd)核心和引導程式(例如grub——確保引導程式實際安裝到裝置上——而不僅僅是安裝軟體包)。
  10. 使用root_pivot與上面步驟 1 相同的方式切換到新環境。啟動所有服務(例如sshd)以確保您能夠透過例如存取伺服器ssh
  11. 重啟。您的新作業系統應該已準備就緒。

答案2

在企業環境中,您可能想要擁有某種帶外管理,例如 IPMI、iDRAC 或其他遠端 KVM 解決方案。您可以使用該系統啟動到 liveCD,在其中可以執行並確認擦除。如果您的目標是安全擦除,那麼您需要驗證操作。你不能只是說「好吧,這應該有效」。因為即使它應該有效並不意味著它確實有效。某些 IPMI 系統可讓您從遠端擁有的 ISO 進行遠端引導。您可以使用簡單的東西,例如 DBAN 映像。

答案3

這不是一個很好的答案,但我確實設法做了類似的事情。正在sudo dd if=./bootcd-usb-debug.iso of=/dev/sda將 ReactOS iso 寫入我打算作為 USB 驅動器的地方,但因為我沒有驗證我正在運行的 Linux 系統。希望我能恢復我的資料。

相關內容