如何安全地刪除 Linux 上的敏感資料 文章首圖

如何安全地刪除 Linux 上的敏感資料

如何安全地刪除 Linux 上的敏感資料

在一般的 Linux 操作中,我們習慣使用 rm 指令來刪除檔案。然而,許多新手甚至中階使用者可能不知道,預設的 rm 動作僅僅是將檔案的目錄索引(inode)標記為「已刪除」,而實際的資料區塊仍然殘留在硬碟上。只要磁碟空間未被新資料覆蓋,這些「遺失」的資料就可以透過專業工具輕易恢復。對於處理機密文件、私鑰或客戶資料的管理者來說,這種行為存在巨大的資安風險。

本文將介紹如何在 Ubuntu 22.04 或 Debian 12 系統上,安全且徹底地銷毀敏感資料,確保其無法被恢復。

為什麼 rm 不夠安全?

要理解為何需要特殊工具,首先必須了解檔案系統的運作原理。當您在終端機輸入 rm file.txt 時,系統實際上只做了兩件事:

  1. 將目錄中指向該檔案的連結移除。
  2. 將該檔案佔用的磁碟區塊標記為「可用」。

直到有新的資料寫入這些區塊之前,原始資料依然完整保留在磁碟上。這就是為什麼資料恢復軟體(如 TestDisk 或 PhotoRec)能夠輕易找回被刪除檔案的原因。對於敏感資料,我們需要的不是「隱藏」,而是「覆蓋」。

方法一:使用 shred 銷毀單一檔案

shred 是 GNU coreutils 套件中的標準工具,專門用於覆寫檔案內容。它預設會以隨機資料覆蓋檔案 25 次,並可選擇最後刪除檔案本身。

適用場景:刪除個別的敏感文件(如 SSH 私鑰、密碼檔)。

操作步驟:

  1. 安裝必要工具shred 通常預設已安裝。若未找到,可執行:

    sudo apt update && sudo apt install coreutils
  2. 執行安全刪除: 假設要刪除檔案 secret_key.pem,請使用以下指令:

    shred -v -n 50 -z -u secret_key.pem

    參數說明:

    • -v (verbose):顯示處理進度,讓你知道它正在工作。
    • -n 50:指定覆寫次數。預設為 25,建議敏感資料提高至 50 次以上。
    • -z (zero):最後一次覆寫使用零值。這有助於隱藏覆寫的痕跡,使檔案看起來像是一個全零的檔案。
    • -u (unlink):在覆寫完成後,刪除檔案並釋放空間。
  3. 驗證結果: 執行後,檔案應已消失,且原位置已被隨機資料覆蓋。

方法二:使用 srm 進行更嚴格的銷毀

如果系統中沒有 shred,或者需要更簡單的介面,可以安裝 secure-delete 套件,其中包含 srm 指令。

適用場景:習慣使用 GUI 或簡化指令介面的使用者。

操作步驟:

  1. 安裝 secure-delete

    sudo apt install secure-delete
  2. 執行刪除

    srm -zvv secret_key.pem

    srm 預設使用 DoD 5220.22-M 標準進行 3 次覆寫,加上 -z 參數可追加一次零值覆寫,-v 顯示詳細資訊。

方法三:銷毀整個分割區或磁碟

對於需要清空整個硬碟(例如準備捐贈或報廢的伺服器硬碟)的情況,單個檔案刪除已無意義,必須針對區塊裝置進行覆寫。

適用場景:硬碟報廢、系統重置前的資料清理。

操作步驟:

  1. 確認裝置名稱: 使用 lsblk 確認要銷毀的磁碟(例如 /dev/sdb)。請務必小心,選錯裝置會導致資料永久遺失!

  2. 使用 dd 進行零值覆寫(快速但可被部分恢復)

    sudo dd if=/dev/zero of=/dev/sdb bs=1M status=progress

    這會將整個磁碟寫滿零,速度較快,適合對安全性要求不高但需快速清空的情況。

  3. 使用 shred 進行高強度覆寫(極慢但安全)

    sudo shred -v -n 3 /dev/sdb

    這會對整個磁碟進行 3 次覆寫。對於 SSD(固態硬碟),由於寫入平衡機制,shred 的效果可能不如傳統 HDD 顯著,建議後續搭配主控台指令執行 hdparm --security-erase 或直接物理銷毀。

常見問題

Q1: 在 SSD 上進行資料銷毀還有效嗎? 是的,但效果有限。SSD 使用寫入平衡(Wear Leveling)技術,控制器會將資料寫入不同的物理區塊,導致 shred 可能無法覆寫到原始資料區塊。對於 SSD,最安全的方法是啟用 TRIM 支援(現代 Linux 通常預設啟用),並考慮使用主機名面加密(LUKS)。若資料極度敏感,物理銷毀仍是唯一保證。

Q2: 刪除後如何確認資料真的被覆蓋了? 對於普通使用者,確認檔案已不存在即可。若需技術驗證,可嘗試使用 foremostscalpel 等資料恢復工具掃描磁碟。若無法恢復出任何有意義的內容,則代表銷毀成功。不過,這僅能作為參考,無法百分之百保證。

小結

在 Linux 環境中,保護敏感資料不僅是加密的問題,刪除時的處理同樣關鍵。對於一般檔案,使用 shred 進行多次覆寫是最簡單有效的解決方案;對於整顆硬碟,則需根據儲存介質(HDD/SSD)選擇適當的策略。請記住,資安無小事,養成良好的資料銷毀習慣,是每位 Linux 管理者的基本責任。