
我有一個(物理上)遠端伺服器,我想安全地銷毀它。不幸的是,磁碟被分割為一個大的根分割區,沒有其他分割區。我可以可靠地用於dd
擦除包含根檔案系統的裝置嗎?
一些簡單的事情,例如:
$ sudo nohup dd if=/dev/urandom of=/dev/sda bs=1024
顯然,我永遠不會看到作業的輸出,因此我無法驗證它是否成功完成。dd
和程式nohup
應該足夠小,並且此時伺服器上沒有其他任何東西在運行,因此這些程式在運行時沒有理由從記憶體中彈出。它們會運行完成,還是內核可能會在dd
完成之前的某個時刻出現恐慌?
我正在考慮其他可能性,但我會在單獨的問題中詢問這些可能性。
答案1
是的, 這是絕對地可能,但這需要一些工作。
大多數答案都可以在 StackExchange 上找到,但我將在這裡總結一下來源的鏈接,這些來源有更多的細節,值得讚揚的優秀信息。
- 建立一個記憶體基礎 Linux 環境並使用以下命令切換到它
pivot_root
。 - 確保您可以使用從外部存取伺服器
ssh
。 擦除根設備。
# nohup dd if=/dev/urandom of=/dev/sda bs=512 > wipe.log &
請每隔一段時間檢查一下 的進度
dd
,因為它通常不會給您任何進度指示。# kill -USR1 [ddpid]
稍後回來並驗證該過程是否已完成(檢查日誌檔案)。查看磁碟以驗證其上是否有隨機垃圾而不是真正的檔案系統。如果您願意,可以擦拭第二次(或第三次)。
決定下一步要做什麼。
如果你願意,你可以停在這裡然後走開。當機器關閉時,您將擁有一個不可啟動的設備,該設備的安全程度取決於您的決定
dd
。我決定接下來要做的就是嘗試一些我以前沒有做過的事情:遠端建立一個 Linux 基礎系統。所以我繼續說:
用於
fdisk
根據需要重新分區根設備,並用於mkfs
在這些分區上建立檔案系統。- 使用
debootstrap
到安裝基本的 Debian 環境在(未來的)根檔案系統上。 chroot
到新的基礎環境,安裝額外的軟體包(例如sshd
)核心和引導程式(例如grub
——確保引導程式實際安裝到裝置上——而不僅僅是安裝軟體包)。- 使用
root_pivot
與上面步驟 1 相同的方式切換到新環境。啟動所有服務(例如sshd
)以確保您能夠透過例如存取伺服器ssh
。 - 重啟。您的新作業系統應該已準備就緒。
答案2
在企業環境中,您可能想要擁有某種帶外管理,例如 IPMI、iDRAC 或其他遠端 KVM 解決方案。您可以使用該系統啟動到 liveCD,在其中可以執行並確認擦除。如果您的目標是安全擦除,那麼您需要驗證操作。你不能只是說「好吧,這應該有效」。因為即使它應該有效並不意味著它確實有效。某些 IPMI 系統可讓您從遠端擁有的 ISO 進行遠端引導。您可以使用簡單的東西,例如 DBAN 映像。
答案3
這不是一個很好的答案,但我確實設法做了類似的事情。正在sudo dd if=./bootcd-usb-debug.iso of=/dev/sda
將 ReactOS iso 寫入我打算作為 USB 驅動器的地方,但因為我沒有驗證我正在運行的 Linux 系統。希望我能恢復我的資料。