PR

Linux shredコマンドでデータを安全に消去する方法~情報漏えい対策に~

スポンサーリンク
Linux

最近ニュースにもなっていましたが、サーバのデータ消去はHDD廃棄時には必須です。

データ消去をする専門会社への依頼も、あのニュースがあってからではHDDを引き渡すことすら心配ですよね。

専用のデータ消去ソフトを使うにも、有償なので私は自分でデータを消去するようにしています。

今回はLinuxでのデータ消去方法を紹介します。

shredコマンド

rmコマンドではデータは完全に消去できませんし、簡単に復元可能です。

以下のshredコマンドにて、ディレクトリの中身のファイルを全て書き潰し消去します。

find <消去対象ディレクトリ> -type f | xargs shred -n 3 -u -v

findで探したファイルをxargsに引き渡し、shredコマンドで抹消します。

shredコマンドオプションの -n 3 は3回上書き(上書き回数は増やせば増やすほど、復元が困難になります)を意味し、-u オプションはデータ上書き後にファイルを削除するオプションです。

-v はshredの進捗状況を表示するオプションです。

各データに対するshredコマンドの使用例

私がいつもデータ消去している手順です。

以下の作業を行うと、次回OSは起動してこない可能性が高いので、OSが未使用であることを事前に確認してください。

データ領域のデータ消去

これが一番重要だと思います。データベース等、個人情報が入っているディレクトリは必ず抹消しておかないと、神奈川県で起こったHDD転売による情報流出事件に発展する可能性もあります。

データ領域は基本的に容量が多いので時間がかかりますが、夜間や土日で流しっぱなしにするなりしておくべきです。

find <データディレクトリ> -type f | xargs shred -n 3 -u -v

[root@linuxsv ~]# find /database -type f | xargs shred -n 3 -u -v
shred: /database/testdb/datafile2: pass 1/3 (random)...
shred: /database/testdb/datafile2: pass 2/3 (random)...
shred: /database/testdb/datafile2: pass 3/3 (random)...
shred: /database/testdb/datafile2: removing
shred: /database/testdb/datafile2: renamed to /database/testdb/000000000
shred: /database/testdb/000000000: renamed to /database/testdb/00000000
shred: /database/testdb/00000000: renamed to /database/testdb/0000000
shred: /database/testdb/0000000: renamed to /database/testdb/000000
shred: /database/testdb/000000: renamed to /database/testdb/00000
shred: /database/testdb/00000: renamed to /database/testdb/0000
shred: /database/testdb/0000: renamed to /database/testdb/000
shred: /database/testdb/000: renamed to /database/testdb/00
shred: /database/testdb/00: renamed to /database/testdb/0
shred: /database/testdb/datafile2: removed
shred: /database/testdb/datafile: pass 1/3 (random)...
shred: /database/testdb/datafile: pass 2/3 (random)...
shred: /database/testdb/datafile: pass 3/3 (random)...
shred: /database/testdb/datafile: removing
shred: /database/testdb/datafile: renamed to /database/testdb/00000000
shred: /database/testdb/00000000: renamed to /database/testdb/0000000
shred: /database/testdb/0000000: renamed to /database/testdb/000000
shred: /database/testdb/000000: renamed to /database/testdb/00000
shred: /database/testdb/00000: renamed to /database/testdb/0000
shred: /database/testdb/0000: renamed to /database/testdb/000
shred: /database/testdb/000: renamed to /database/testdb/00
shred: /database/testdb/00: renamed to /database/testdb/0
shred: /database/testdb/datafile: removed

OSユーザのデータ消去

各OSユーザが個人情報を持っていることもあるので、homeディレクトリの中身も消去します。

[root@linuxsv ~]# find /home/dekiru -type f | xargs shred -n 3 -u -v
shred: /home/dekiru/.cache/abrt/lastnotification: pass 1/3 (random)...
shred: /home/dekiru/.cache/abrt/lastnotification: pass 2/3 (random)...
shred: /home/dekiru/.cache/abrt/lastnotification: pass 3/3 (random)...
shred: /home/dekiru/.cache/abrt/lastnotification: removing
shred: /home/dekiru/.cache/abrt/lastnotification: renamed to /home/dekiru/.cache/abrt/0000000000000000
shred: /home/dekiru/.cache/abrt/0000000000000000: renamed to /home/dekiru/.cache/abrt/000000000000000
shred: /home/dekiru/.cache/abrt/000000000000000: renamed to /home/dekiru/.cache/abrt/00000000000000
shred: /home/dekiru/.cache/abrt/00000000000000: renamed to /home/dekiru/.cache/abrt/0000000000000
shred: /home/dekiru/.cache/abrt/0000000000000: renamed to /home/dekiru/.cache/abrt/000000000000
shred: /home/dekiru/.cache/abrt/000000000000: renamed to /home/dekiru/.cache/abrt/00000000000
shred: /home/dekiru/.cache/abrt/00000000000: renamed to /home/dekiru/.cache/abrt/0000000000
shred: /home/dekiru/.cache/abrt/0000000000: renamed to /home/dekiru/.cache/abrt/000000000
shred: /home/dekiru/.cache/abrt/000000000: renamed to /home/dekiru/.cache/abrt/00000000
shred: /home/dekiru/.cache/abrt/00000000: renamed to /home/dekiru/.cache/abrt/0000000
shred: /home/dekiru/.cache/abrt/0000000: renamed to /home/dekiru/.cache/abrt/000000
shred: /home/dekiru/.cache/abrt/000000: renamed to /home/dekiru/.cache/abrt/00000
shred: /home/dekiru/.cache/abrt/00000: renamed to /home/dekiru/.cache/abrt/0000
shred: /home/dekiru/.cache/abrt/0000: renamed to /home/dekiru/.cache/abrt/000
shred: /home/dekiru/.cache/abrt/000: renamed to /home/dekiru/.cache/abrt/00
shred: /home/dekiru/.cache/abrt/00: renamed to /home/dekiru/.cache/abrt/0
shred: /home/dekiru/.cache/abrt/lastnotification: removed
shred: /home/dekiru/data/files/1G_file: pass 1/3 (random)...
shred: /home/dekiru/data/files/1G_file: pass 1/3 (random)...139MiB/1000MiB 13%
shred: /home/dekiru/data/files/1G_file: pass 1/3 (random)...164MiB/1000MiB 16%
shred: /home/dekiru/data/files/1G_file: pass 1/3 (random)...185MiB/1000MiB 18%
shred: /home/dekiru/data/files/1G_file: pass 1/3 (random)...205MiB/1000MiB 20%
shred: /home/dekiru/data/files/1G_file: pass 1/3 (random)...228MiB/1000MiB 22%
shred: /home/dekiru/data/files/1G_file: pass 1/3 (random)...250MiB/1000MiB 25%
shred: /home/dekiru/data/files/1G_file: pass 1/3 (random)...271MiB/1000MiB 27%
~省略~

OS領域のデータ消去

ログに個人情報が含まれていたり、サーバのIP情報が漏れることを防ぐために、OS領域のファイルもデータ消去します。

以下はLinuxサーバーの代表的な設定ファイルを消去する手順となります。

[root@linuxsv ~]# find /var/log -type f | xargs shred -v -n 3 -u -v
[root@linuxsv ~]# find /var/spool -type f | xargs shred -v -n 3 -u -v
[root@linuxsv ~]# shred -v -n 3 -u -v /etc/hosts 
[root@linuxsv ~]# shred -v -n 3 -u -v /etc/hostname
[root@linuxsv ~]# shred -v -n 3 -u -v /etc/sysconfig/network
[root@linuxsv ~]# shred -v -n 3 -u -v /etc/sysconfig/network-scripts/*
[root@linuxsv ~]# systemctl poweroff

HDD破砕機の使用

これまでサーバ上でのデータ消去方法を紹介してきましたが、結局はHDDを物理的に破壊することが一番手っ取り早いです。

ハードディスクを物理的に破壊する機械も販売していますので、こちらを利用しても良いと思います。

私の会社では、以下の製品を使用しています。

ハードディスクに物理的に穴を4つ開け、データ復元を不可能にします。

電動式HDD/SSD物理破壊装置 ストレージパンチャー STPN-10 (HDD)

個人情報漏洩の影響に比べたら、会社にとっては安い買い物だと思います。

最後に

個人情報漏洩の影響は、社会的にも会社的にも大ダメージとなり、最悪の場合は会社が潰れます。

データ消去の専門会社が信用できない時代でもありますので、自分のデータは自分で管理する必要があります。

少々お高い買い物としても、ハードディスク破砕機は有用だと思いますね。