「Dm-crypt/root 以外のファイルシステムの暗号化」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (カテゴリを変更) |
Kusanaginoturugi (トーク | 投稿記録) (校正(でき・出来)) |
||
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
{{Lowercase title}} |
{{Lowercase title}} |
||
− | [[Category:デ |
+ | [[Category:保存データ暗号化]] |
[[Category:ファイルシステム]] |
[[Category:ファイルシステム]] |
||
[[en:dm-crypt/Encrypting a non-root file system]] |
[[en:dm-crypt/Encrypting a non-root file system]] |
||
78行目: | 78行目: | ||
# losetup /dev/loop0 /bigsecret |
# losetup /dev/loop0 /bigsecret |
||
− | {{Note|{{ic|/dev/loop0: No such file or directory}} というエラーが吐かれる場合、先に {{ic|modprobe loop}} でカーネルモジュールをロードしてください。最近は (カーネル 3.2) ループデバイスは必要に応じて作成されるようになっています。新しいループデバイスの作成は {{ic|# losetup -f}} で |
+ | {{Note|{{ic|/dev/loop0: No such file or directory}} というエラーが吐かれる場合、先に {{ic|modprobe loop}} でカーネルモジュールをロードしてください。最近は (カーネル 3.2) ループデバイスは必要に応じて作成されるようになっています。新しいループデバイスの作成は {{ic|# losetup -f}} でできます。}} |
ここからの作業は [[#パーティション]] と同じです。違うのはコンテナは既にランダム化されており消去する必要がないということだけです。 |
ここからの作業は [[#パーティション]] と同じです。違うのはコンテナは既にランダム化されており消去する必要がないということだけです。 |
2024年7月10日 (水) 20:42時点における最新版
以下は dm-crypt で root 以外のファイルシステムを暗号化するサンプルです。
目次
概要
セカンダリファイルシステムの暗号化は基本的に重要なデータだけを保護します。オペレーティングシステムやプログラムファイルは暗号化されないままです。USB ドライブなどの外部メディアを暗号化したいときは、別のコンピュータに安全に持っていけるようになるので便利です。また、アクセスする人ごとに暗号化するデータを選択することもできます。
dm-crypt はブロックレベルの暗号化レイヤーなので、完全なデバイスやパーティション、loop デバイスなどしか暗号化できません。個別のファイルを暗号化するには、eCryptfs や EncFS などのファイルシステムレベルの暗号化レイヤーが必要です。個人データを守る方法に関する一般的な情報はディスク暗号化を見て下さい。
パーティション
この例では /home
パーティションの暗号化を説明しますが、root 以外の同じようなパーティションなら同じ方法で暗号化できます。
まず、パーティションを完全に消去することでパーティションの準備をしてください。Dm-crypt/ドライブの準備#ハードディスクドライブの完全消去 を参照。
そして次のコマンドで LUKS ヘッダーを設定:
# cryptsetup options luksFormat device
device
は先に作成したパーティションに置き換えて下さい。options
に利用できるオプションなどは Dm-crypt/デバイスの暗号化#LUKS モードの暗号化オプション を見て下さい。
暗号化されたパーティションにアクセスできるようにするには、デバイスマッパーでロックを解除します:
# cryptsetup open device name
パーティションを解錠した後は /dev/mapper/name
から利用できるようになります。お好きなファイルシステムを作成してください:
# mkfs.fstype /dev/mapper/name
ファイルシステムを /home
にマウントするか、誰か一人のユーザーにだけアクセス可能にしたい場合は /home/username
にマウントします。#手動でマウント・アンマウント を見て下さい。
手動でマウント・アンマウント
パーティションをマウントするには:
# cryptsetup --type luks open device name # mount -t ext4 /dev/mapper/name /mnt/home
パーティションをアンマウントするには:
# umount /mnt/home # cryptsetup close name
ロック解除とマウントの自動化
パーティションのロックの解除とファイルシステムのマウントを自動化する方法は複数あります。
起動時
/etc/crypttab
設定ファイルを使用することで、起動時に systemd によって自動的にファイルが読み取られロックが解除されます。全てのユーザーの home パーティションに共通のパーティションを使用する場合や、他の暗号化ブロックデバイスを自動的にマウントしたい場合に推奨される方法です。
詳しくは Dm-crypt/システム設定#crypttab を見て下さい。設定例は Dm-crypt/システム設定#起動時にマウント を見て下さい。
ユーザーのログイン時
pam_exec を使って、ユーザーのログイン時にパーティションを解錠できます (cryptsetup open): 特定のユーザーのホームディレクトリだけがパーティションにある場合に推奨される方法です。dm-crypt/ログイン時にマウントを見てください。
pam_mount を使ってユーザーのログイン時に解錠することもできます。
Loop デバイス
ループデバイスを使って util-linux の標準ツール losetup
でファイルにブロックデバイスをマップすることができます。ファイルにはファイルシステムが含まれ、他のファイルシステムと同じように使うことが可能です。暗号化されたコンテナを作成するツールとしては TrueCrypt が有名ですが、ループデバイスファイルシステムを使って LUKS で暗号化することで同じような機能が実現できると考えてください。
まず、適切な乱数生成器を使用して、暗号化するコンテナを作成します:
# dd if=/dev/urandom of=/bigsecret bs=1M count=10
このコマンドで10メガバイトの容量の bigsecret
ファイルが作成されます。
次にデバイスノード /dev/loop0
を作成して、コンテナをマウント・利用できるようにします:
# losetup /dev/loop0 /bigsecret
ここからの作業は #パーティション と同じです。違うのはコンテナは既にランダム化されており消去する必要がないということだけです。
手動でマウント・アンマウント
コンテナをアンマウントするには:
# umount /mnt/secret # cryptsetup close secret # losetup -d /dev/loop0
コンテナをマウントするには:
# losetup /dev/loop0 /bigsecret # cryptsetup --type luks open /dev/loop0 secret # mount -t ext4 /dev/mapper/secret /mnt/secret