2009-08-06 23:48:03 +0000 2009-08-06 23:48:03 +0000
149
149

Linuxでディスクの空き領域を消去する方法を教えてください

ファイルを削除しても、明示的に何か他のもので上書きされない限り、その内容はファイルシステムに残っているかもしれません。wipeコマンドはファイルを安全に消去することはできますが、どのファイルも使用していないディスクの空き領域を消去することはできないようです。

これを実現するためには何を使えばいいのでしょうか?

回答 (15)

113
113
113
2009-08-07 01:55:07 +0000

警告:_ 最新のディスク/SSD ハードウェアおよび最新のファイルシステムでは、データを削除できない場所にデータが残っていることがあり、このプロセスではディスクにデータが残ることがあります。データを消去する唯一の安全な方法は、ATA Secure Erase コマンド (正しく実装されている場合) または物理的な破壊です。また、 ハード ドライブ上のすべての情報を確実に消去する方法

secure-delete と呼ばれる一連のツールを使用することができます。

sudo apt-get install secure-delete

これには 4 つのツールがあります:

srm - 既存のファイルを確実に削除する smem - ラムからファイルの痕跡を確実に削除する sfill - ハード ドライブ上の空とマークされたスペースをすべて消去する sswap - スワップ スペースからすべてのデータを消去する。

のマンページから > srmは、泥棒、法執行機関や他の脅威によって回復することができない安全な方法で媒体上のデータを削除するように設計されています。このワイプアルゴリズムは、第6回Usenixセキュリティシンポジウムで民間暗号の第一人者であるピーター・グットマン氏が発表した論文「Secure Deletion of Data from Magnetic and Solid-State Memory」に基づいています。

srmの安全なデータ削除処理は次のようになります:

  • 0xffで1パス
  • 5つのランダムパス。
  • 5つのランダムパス。 srmは、利用可能な場合、安全なRNGに使用されます。
  • ファイルの名前をランダムな値に変更する
  • ファイルを切り詰める

セキュリティの追加措置として、ファイルはO_SYNCモードでオープンされ、各パスの後に/dev/urandomの呼び出しが行われます。

74
74
74
2009-08-07 08:58:40 +0000

最速の方法は、あなただけの単一のパスを必要とし、ちょうどゼロですべてを置き換える場合は、次のとおりです。

cat /dev/zero > zero.file
sync
rm zero.file

(あなたがワイプしたいファイルシステム上のディレクトリから実行) (syncコマンドは、すべてのデータがディスクに書き込まれることを保証するパラノイア対策です - インテリジェントなキャッシュマネージャは、ファイルがアンリンクされているときに、任意の保留中のブロックのための書き込みをキャンセルすることができることをうまくいくかもしれません)

この操作の間に時間がありますが、結果のファイルが大きく、断片化されている場合は、削除するためにしばらくかかるので、数十秒になることができるファイルシステム上のすべての空き領域がありません。フリースペースが完全にゼロであるときに時間を減らすために:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
cat /dev/zero > zero.file
sync
rm zero.small.file
rm zero.file

これは、高価なフォレンジック操作なしで古いファイルの内容を読んで誰かを停止するのに十分であるべきです。より安全だが、より遅いバリアントには、/dev/zero/dev/urandom に置き換えてください。より多くのパラノイアのためには、/dev/urandom を使って複数のステップを実行しますが、それだけの労力が必要な場合は coreutils パッケージの shred ユーティリティを使うのが良いでしょう。とシュレッドプロセスは、大きなファイルの上にlong時間を取ると、NSAから何かを非表示にしようとしている場合を除き、本当に必要なIMOではありません。

上記のすべては、任意のファイルシステム上で動作する必要があります。

ファイルサイズの制限:

DanMoulding が下のコメントで指摘しているように、これはいくつかのファイルシステム上のファイルサイズの制限に問題があるかもしれません。

FAT32 の場合、それは definitely 2GiB ファイルの制限のために懸念されるでしょう: ほとんどのボリュームは、これらの日(8TiB がボリュームサイズの制限です IIRC)よりも大きいです。この問題を回避するには、大きな cat /dev/zero の出力を split を通して複数の小さなファイルを生成し、それに応じてシュレッドと削除のステージを調整することができます。

(まだ実験中の) btrfs では、最大ファイルサイズとボリュームサイズの両方が 16EiB になります。 http://en.wikipedia.org/wiki/Ext3#Size_limits http://en.wikipedia.org/wiki/Btrfs http://en.wikipedia.org/wiki/Ntfs#Scalability

仮想デバイス

最近のコメントで述べられているように、仮想デバイスには追加の考慮事項があります:

  • まばらに割り当てられた仮想ディスクには、zerofree で使用されているような他の方法の方が速いでしょう(ただし、catdd とは異なり、これは標準的なツールではなく、ほとんどの Unix 系 OS で利用できることを信頼できます)。

  • 疎な仮想デバイス上のブロックをゼロにしても、その下にあるphysicalデバイス上のブロックは消去されないかもしれないことに注意してください。

  • 固定サイズの仮想デバイスであっても、デバイスが物理的にどこに住んでいるかを制御できない場合がありますので、現在の場所の周りに移動したり、いつでも物理ディスクの新しいセットの上に移動することができ、あなたが拭くことができるほとんどは、現在の場所であり、ブロックが過去に存在している可能性があります任意の以前の場所ではありません。

  • 仮想デバイス上の上記の問題について: ホストを制御し、VM内のディスクをワイプしたり、仮想デバイスを移動させたりした後に、未割り当てのスペースを安全にワイプすることができない限り、事実上、この問題については何もすることができません。唯一の解決策は、最初から完全なディスク暗号化を使用して、暗号化されていないものが物理メディアに書き込まれないようにすることです。もちろん、VM内のフリースペースのワイプは必要かもしれません。また、FDE は仮想化レイヤがどのブロックが使われていないかを実際に見ることができないため、スパースな仮想デバイスはあまり役に立たないことにも注意してください。OS のファイルシステム層が仮想デバイスに (SSD のように) トリムコマンドを送信し、仮想コントローラがそれを解釈する場合、それが解決するかもしれませんが、これが実際に起こる状況を私は知りませんし、それについてのより広い議論は他の場所の問題です (私たちはすでに元の質問の話題から離れようとしています。)

47
47
47
2010-06-09 17:40:37 +0000

このように、「空き領域」を0x00で1回だけ埋めるのと、異なるキャバリスティックな基準で38回埋めるのとでは、どちらがより安全かは、学術的な議論の余地があります。シュレッダーに関する1996年の論文の著者は、これは時代遅れであり、現代のハードウェアには必要ないと言って、エピローグを自分で書いています。データが物理的にゼロに置き換えられ、その後回復されたという文書化された例はありません。

この手順における真の 壊れやすいリンクファイルシステム です。いくつかのファイルシステムは、特別な使用のためにスペースを予約しており、それは「空きスペース」として利用可能にされていません。しかし、あなたのデータはそこにあるかもしれません。それは写真や個人的な平文メールなども含まれます。今、reserved+space+ext4をググってみたところ、homeパーティションの5%が予約されていることを知りました。これは、photorecが私のものをたくさん見つけた場所だと思います。結論。シュレッダーの方法が一番重要ではなく、マルチパス方式でもまだデータが残っている

マウントする前に# tune2fs -m 0 /dev/sdn0を試してみるといい。(再起動後に root パーティションになる場合は、アンマウント後に -m 5 または -m 1 を実行してください。)

しかし、それでも、いずれかの方法で、いくつかのスペースが残っているかもしれません。


高速な方法(推奨)

あなたがワイプしたいファイルシステム上のディレクトリから実行:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
rm zero.file

_ノート: 小さなファイルの目的は、空き領域が完全にゼロになったときに時間を短縮することです; 同期の目的は、データが実際に書き込まれていることを確認することです。 _

ほとんどの人はこれで十分なはずです。

スローな方法(妄想)

上記のクリーニングの後にデータが復旧したという文書化された事例はありません。

まだ、秘密機関があなたのファイルを回復するために多くのリソースを費やすだろうと思う理由があれば、これは十分であるべきです:

dd if=/dev/urandom of=random.small.file bs=1024 count=102400
dd if=/dev/urandom of=random.file bs=1024
sync ; sleep 60 ; sync
rm random.small.file
rm random.file

それははるかに長い時間がかかります。あなたが被害妄想的な方法を選択している場合は、この後、あなたはまだ高速ワイプを行いたいと思うだろうし、それは被害妄想ではありません。純粋にランダムなデータの存在は、検出するのは簡単で安価であり、それが実際に暗号化されたデータであるという疑念を高めます。復号鍵を明らかにしないために拷問の下で死ぬかもしれません。

非常に遅い方法(狂った被害妄想)

シュレッダーに関する1996年のセミファイナル論文の著者でさえ、これは時代遅れであり、現代のハードウェアには必要ないとエピローグを書いています。

しかし、まだあなたは自由時間の多くを持っているとあなたは上書きの多くとディスクを無駄にすることを気にしない場合、それはそこに行く:

dd if=/dev/zero of=zero.small.file bs=1024 count=102400
sync ; sleep 60 ; sync
shred -z zero.small.file
dd if=/dev/zero of=zero.file bs=1024
sync ; sleep 60 ; sync
rm zero.small.file
shred -z zero.file
sync ; sleep 60 ; sync
rm zero.file

注:これは本質的にセキュア削除ツールを使用することと同等です


編集の前に、この記事はデビッドSpillettの書き換えだった。"cat “コマンドを実行するとエラーメッセージが出るのですが、他人の投稿にコメントを書くことができません。

27
27
27
2013-01-05 14:51:12 +0000

少なくともUbuntuにはzerofreeユーティリティがあります: http://manpages.ubuntu.com/manpages/natty/man8/zerofree.8.html

zerofree — zero free blocks from ext2/3 file-systems

   zerofree finds the unallocated, non-zeroed blocks in an ext2 or ext3
   filesystem (e.g. /dev/hda1) and fills them with zeroes. This is useful
   if the device on which this file-system resides is a disk image. In
   this case, depending on the type of disk image, a secondary utility may
   be able to reduce the size of the disk image after zerofree has been
   run.

   The usual way to achieve the same result (zeroing the unallocated
   blocks) is to run dd (1) to create a file full of zeroes that takes up
   the entire free space on the drive, and then delete this file. This has
   many disadvantages, which zerofree alleviates:

      · it is slow;

      · it makes the disk image (temporarily) grow to its maximal extent;

      · it (temporarily) uses all free space on the disk, so other
         concurrent write actions may fail.

   filesystem has to be unmounted or mounted read-only for zerofree to
   work. It will exit with an error message if the filesystem is mounted
   writable. To remount the root file-system readonly, you can first
   switch to single user runlevel (telinit 1) then use mount -o remount,ro
   filesystem.

また、zerofreeについてのこのリンクをチェックしてください。ファイルシステムのイメージを疎かにしておく](http://intgat.tigress.co.uk/rmy/uml/index.html) - それはその著者からのものです - Ron Yorston (9th August 2012)

3
3
3
2015-09-08 19:27:48 +0000

ドライブを最高速度でワイプしてください。

ドライブを暗号化するための典型的な指示は、最初にドライブをワイプするように指示しています。

ターミナルを開き、あなたの特権を昇格させる:

sudo bash

私たちは安全であるためにシステム上のすべてのドライブをリストアップしてみましょう:

cat /proc/partitions

注意: あなたが拭くためにしたいデバイスと /dev/sd{x} を置き換えます。あなたのシステムをunbootableにすることができます!

sudo openssl enc -aes-256-ctr -pass pass:"$(dd if=/dev/urandom bs=128 count=1 2>/dev/null | base64)" -nosalt < /dev/zero > /dev/sd{x}

私はこれがいかに速いかで唖然としています。

2
2
2
2009-08-07 01:04:21 +0000

私は dd を使用して、空き領域を埋めるために 1 つ以上の大きなファイルを割り当ててから、安全な削除ユーティリティを使用します。

dd でファイルを割り当てるには:

dd if=/dev/zero of=delete_me bs=1024 count=102400

これは、サイズが 100 MB の delete_me という名前のファイルを生成します。(ここで bs は 1k に設定された “ブロックサイズ "であり、count は割り当てるブロック数です。)

その後、作成されたファイルにお気に入りの安全な削除ユーティリティ(私は shred を使用しています)を使用してください。

But NOTE THIS:バッファリングは、あなたがwholeディスクを行う場合でも、あなたは絶対にすべてを取得しない場合があります!


このリンクは、空き領域のワイピングのための scrub をお勧めします。試していません。

2
2
2
2013-07-04 21:22:51 +0000

あなたは、安全な削除パッケージを使用して、あなたの空き領域を消去することができます。

そのパッケージでは、泥棒、法執行機関や他の脅威によって回復することができない安全な方法で媒体上の利用可能なディスクスペースにあるデータを削除するように設計されているsfillツールを見つけることができます。

Linux (Ubuntu) に安全な削除パッケージをインストールするには、次のコマンドでインストールしてください。 .html ](http://manpages.ubuntu.com/manpages/hardy/man1/sfill.1.html)

1
1
1
2009-08-07 01:58:44 +0000

おそらくあなたのシステムには、 GNU coreutilsパッケージ がすでにインストールされているでしょう。これは shred というコマンドを提供しています。

1
1
1
2011-11-26 03:38:47 +0000

もっと簡単なのは、 scrub :

scrub -X dump

これは、現在の場所にdumpフォルダを作成し、ディスクがいっぱいになるまでファイルを作成します。-pオプション(nnsa|dod|bsi|old|fastold|gutmann)でパターンを選択することができます。

scrubをインストールするのは簡単ではありませんが(これについてはUbuntuフォーラムを参照してください)、インストールが完了したら、あなたはあなたの手に本当にシンプルで効率的なツールを持っています。

1
1
1
2015-09-27 18:29:48 +0000

私が使用している「sdelete.sh」スクリプトはこちらです。詳細はコメントを参照してください。

1
1
1
2015-09-30 09:27:44 +0000

私は、Linux上で、MacOS上で動作する簡単なソリューションを見つけました。ディスクのルートフォルダに移動し、このコマンドを起動します:

for i in $(seq 1 //DISKSPACE//); do dd if=/dev/zero of=emptyfile${i} bs=1024 count=1048576; done; rm emptyfile*;

//DISKSPACE//は、ハードディスクのGBのサイズです。

1
1
1
2013-05-25 20:40:26 +0000

それは神話のデータが何度も書き込まれている必要があります(ちょうどピーター・ガンマンに聞いてみてください)とランダムなデータ、1とは対照的に、0は不自然な活動を意味しています。photorecがまだ何かを見つけた場合、それは利用可能なすべてのものをスキャンしていることを覚えているので、rootユーザーでもう一度慎重に行う。

覚えている、CIA/FBI/NSAはあなたの磁気メディアビットの実際の状態を読み取ることができる派手なマシンを持っていない。

0
0
0
2016-05-11 16:59:32 +0000

これは答えではありません! .3**では、pv(pipe view)を使って書き込みの進捗状況を取得することができます。例:

# Install pv (pipe view)
sudo apt-get install pv

# Write huge file of approximate size of /dev/sdb, using urandom data:
pv --timer --average-rate --progress --numeric --eta --interval 5 --size "$(blockdev --getsize64 /dev/sda )" /dev/urandom >rand.file

この場合の利点は、プログレスバー、ETA、継続的に更新されるデータレートが得られることです。欠点は、これが1行に書き込まれ、ディスクがいっぱいになると(エラーを返す)消えてしまうことです。これは、この非常に長い操作が行われている間、OSがディスクを使用する可能性が高いため、フルサイズは概算であるために起こります。

非常に古いHDでは、pvを使用すると約13 MB/s/dev/urandomを使用すると約70 MB/sのデータレートが得られます。これはおそらく、/dev/zeroではなく、生のddcatを使用した場合には、さらに改善されるでしょう。

0
0
0
2015-07-30 09:30:08 +0000

私は時々このbashのワンライナーを使っています:

while :; do cat /dev/zero > zero.$RANDOM; done

ディスクがいっぱいだと言い始めたら、Ctrl+Cを押して、作成されたzero.*ファイルを削除してください

ファイルサイズの制限が何であれ、どのシステムでも動作します。

-13
-13
-13
2009-08-06 23:59:57 +0000

ファイルがファイルシステムのレコードから消えてしまえば、ハードディスクに残されたデータは1と0の無意味なシーケンスです。その無意味なシーケンスを別の無意味なシーケンスに置き換えようとしているのであれば、arconisのような安全にドライブを消去するためのいくつかの市販品をアドバイスすることができます。

関連する質問

6
10
5
37
11