ユーザーログイン時に暗号化されたドライブを安全に自動マウントします


18

暗号化された/ homeディレクトリは、ログインすると自動的にマウントされます。ディスクユーティリティでフォーマットおよび暗号化した2番目の内部ハードドライブがあります。暗号化された/ homeディレクトリと同じように、ログイン時に自動的にマウントされるようにします。どうすればいいですか?

ここには非常によく似た質問がいくつかありますが、答えは私の状況には当てはまりません。ここで私の質問を閉じて統合し、下の2番目の質問を編集するのが最善かもしれませんが、それは放棄された可能性があります(したがって、承認済みとしてマークされることはありません)。

このソリューションは安全な方法ではなく、暗号化を回避します。
これには編集fstabが必要で、起動時に追加のパスワードを入力する必要があります。/ homeをマウントするような自動ではありません。
この質問は非常に似ていますが、暗号化されたドライブには適用されません。このソリューションは、私のニーズには機能しません。
1つですが、NTFSドライブ用です。私の場合はext4です。

ソリューションでこれが必要な場合は、2番目のドライブを再フォーマットおよび再暗号化できます。他の場所にすべてのデータをバックアップしました。


暗号化に使用するFSは何ですか?LUKSまたはecrytpfs?
デイジー

@AaronLewis Ubuntuのディスクユーティリティを使用してドライブをフォーマットし、[このドライブを暗号化する]ボックスをオンにします。これはデフォルトで/ homeが暗号化される方法なので、ecryptfsを使用すると推測する必要があります。とても簡単なので、私は一度も調べたことはありません。
トムブロスマン

回答:


5

上記のソリューションはもう必要ありません。

前提条件:

注:この方法は、暗号化されたドライブを手動でマウントするよりも安全性が低くなります。誰かがあなたのコンピューターに物理的にアクセスできる場合、ルートパスワードに不注意であるか、コンピューターに複数のユーザー/ゲストアカウントがある場合、この方法は安全ではありません。セカンダリドライブはログアウトしてもマウントされたままですが、システムをシャットダウンしないため、その内容は他のユーザーに表示されます。

パート1:セカンダリドライブを暗号化します。

  1. Unityダッシュに「disks」と入力してEnterキーを押します。
  2. [デバイス]の下で、暗号化するハードドライブをクリックします。
  3. [ボリューム]の下にある[歯車/その他のアクション]ボタンをクリックします。
  4. 「ボリュームのフォーマット」をクリックします。タイプには、「暗号化され、Linuxシステムと互換性があります」を選択します。ドライブに名前を付けて、強力なパスフレーズを付けます。
  5. 「フォーマット」をクリックします

パート2:システム起動時にHDDを自動的にマウントします。

  1. 「ディスク」アプリケーションを開いたままにして、歯車をクリックします。
  2. [暗号化オプションの編集]をクリックします。
  3. 「自動暗号化オプション」がオンになり、下のメニューがグレー表示されます。自動暗号化オプションをオフにします。
  4. ディスクをフォーマットしたときのパスフレーズを入力します。「OK」をクリックします。

これで、コンピューターの起動時に自動的にマウントされる暗号化されたハードドライブができました。


1
誰かがこれを使用すると確信していますが、それは提起された質問に対する答えではなく、システムの起動ではなく、ユーザーのログイン時にセカンダリマウントが発生することを指定します。これにより、「上記の解決策はもう必要ない」という最初の主張が不適切になり、それに応じて回答を書き直すよう著者に勧めます。
mc0e

2
ここは間違っていると思います。つまり、セカンダリログインはユーザーのログイン時に(実際に言及した操作が実行されたアカウントでのみ)発生し、1秒もかかりません。妻が同じコンピューターでUbuntuアカウントにログインすると、ドライブはマウントされません。彼女がそれをマウントしようとすると、暗号化キーを要求します。上記の回答は必要ありません。
-tryion

1
同意したのは、これがマシン上で唯一のユーザーであるため、これが今までで最も簡単な方法です。すべてのユーザーに機能するわけではありませんが、Ubuntuをインストールしていて、プライマリ/管理ユーザーである場合は、これが最適な方法です。本当にどこかで、「暗号化された/ homeとまったく同じように動作させる」という大きなチェックボックスがあるはずです。これは単純なユースケースです。
トム・ブロスマン16

@tryion LUKSパーティションはシステムの起動時にロック解除されますが、マウントされません。そのため、コンピューターの電源を入れるとすぐに、暗号化されていないパーティションと同じようにアクセスできます。パスワードはにクリアテキストで保存されます/etc/crypttab。パーティションにアクセスするためのユーザーパスワードは必要ありません。したがって、この設定は暗号化をまったく行わないのと同等であり、質問に対する答えではありません。
ビクター

libsecretを使用して特定のユーザーの暗号化を解除する他の場所に保存するオプションはありますか。また、非GUI /ヘッドレスユーザー向けのCLIガイドがあります。
-MrMesees

10

数年前にこの回答を書いたとき、これがソリューションを実装する最良の方法でした。代わりにmount.ecryptfs_privateを使用して次の答えを確認することをお勧めします。

また、2番目のeCryptfsボリュームを自動的にマウントする方法も探していました。次のスクリプトと設定変更のコレクションは、GUIまたはCLIのいずれかにログイン時にボリュームを安全かつ自動的にマウントします。

作成中のより良い解決策があります(ただし、このスクリプトの有効期間は限られているため、ユーザーログイン時に自動マウントする準備ができていないと思います)。

小さすぎるハードドライブのecryptfs-暗号化にリンクを追加する方法は?

スクリプトのセキュリティは、eCryptfsで暗号化されているホームディレクトリに依存しているため、パスフレーズを展開するためのパスワードを持つスクリプトとファイルは暗号化されます。ログイン後にルートシェルを開いた状態でコンピューターをロック解除したままにしておくと、パスワードにアクセスできますが、sudo NOPASSWDを使用すると、パスワードを入力したり、ユーザーが読み取れるファイルにパスフレーズを残したりせずにパーティションを安全にマウントできます。

これらのスクリプトの既知の欠点の1つは、2番目のボリュームがログアウト時にアンマウントされないことです。そのため、マルチユーザーシステムには特に適していません。

私のソリューションは、実際のマウントを実行するシェルスクリプトと、ラッパーとして機能するシェルスクリプトの2つのシェルスクリプトで実装されています。

これは、ディレクトリが既にマウントされているかどうかを検証するラッパースクリプトです。マウントされていない場合は、sudoを使用してマウントスクリプトを呼び出します。

/ home / johnf / scripts / automount_ecryptfs

#!/bin/bash

MOUNT_POINT=/home/johnf/slow

grep -q $MOUNT_POINT /proc/mounts
if [ $? -eq 1 ]; then
  sudo /home/johnf/scripts/mount_other_ecryptfs
fi

このスクリプトは、次の/ home / johnf / scripts / mount_other_ecryptfsを呼び出します。

このスクリプトは、ファイル名の暗号化が有効になっていることを前提としていることに注意してください。スクリプトを変更して検出を処理する必要がある場合(ecryptfs-recover-privateを参照)、またはecryptfs_fnek_sigマウントオプションを削除する必要があります。

以下は/ home / johnf / scripts / mount_other_ecryptfsスクリプトです。

#!/bin/bash

ENCRYPTED_VOLUME=/vol0/.ecryptfs/johnf/.Private/
MOUNT_POINT=/home/johnf/slow
PASSFILE=/home/johnf/scripts/ecryptfs_passphrase
MOUNT_PASSWORD=secret_passphrase
ECRYPTFS_SIG=`head -1 ${ENCRYPTED_VOLUME}//../.ecryptfs/Private.sig`
ECRYPTFS_FNEK_SIG=`tail -1 ${ENCRYPTED_VOLUME}//../.ecryptfs/Private.sig`

printf "%s" $MOUNT_PASSWORD | ecryptfs-insert-wrapped-passphrase-into-keyring ${ENCRYPTED_VOLUME}/../.ecryptfs/wrapped-passphrase
mount -t ecryptfs -o key=passphrase:passfile=${PASSFILE},ecryptfs_sig=${ECRYPTFS_SIG},ecryptfs_fnek_sig=${ECRYPTFS_FNEK_SIG},ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_passthrough=n ${ENCRYPTED_VOLUME} ${MOUNT_POINT}

また、パスワードを含むファイルを作成する必要があります。このファイルは、eCryptfsマウントコマンドで使用されます。

/ home / johnf / scripts / ecryptfs_passphrase:

passwd=secret_passphrase

いくつかのファイルのアクセス許可を変更する必要があります。

chmod +x /home/johnf/scripts/automount_ecryptfs
sudo chown root:root /home/johnf/scripts/mount_other_ecryptfs /home/johnf/scripts/ecryptfs_passphrase
sudo chmod a=x /home/johnf/scripts/mount_other_ecryptfs
sudo chmod 400 /home/johnf/scripts/ecryptfs_passphrase

スクリプトを作成する前に、sudoパスワードを入力せずにsudoを使用してマウントスクリプトを実行できるように、sudoers構成を作成する必要があります。

以下を/ etc / sudoers(または/etc/sudoers.dのファイル)に追加します。johnfをユーザー名に置き換えます。マウントスクリプトへの絶対パスを使用する必要があります。

johnf   ALL = NOPASSWD: /home/johnf/scripts/mount_other_ecryptfs

最後のステップは、ログイン時にautomount_ecryptfsスクリプトを呼び出すことです。

Ubuntu Unity(およびおそらくgnome)では、スタートアップアプリケーションアプレットを使用して、/ home / johnf / scripts / automount_ecryptfsを呼び出す新しいスタートアッププログラムを作成します。

ログイン時に2番目のeCryptfsボリュームをbashシェルに自動的にマウントするには、〜/ .bashrcファイルを変更します。以下を追加します。

/home/johnf/scripts/automount_ecryptfs

この設定が完了したら、2番目のeCryptfsボリュームを自動的にマウントする必要があります。


うわー、素晴らしい答えです!賛成し、受け入れました。まだテストできませんが、これは非常に完全に見えます。
トム・ブロスマン

mount.ecryptfs_private今の著者はecryptfs-mount-private、彼による使用を推奨していますmount.ecryptfs_private。これはのラッパースクリプトです。 thesimplecomputer.info/…は、ecryptfsとLUKSの相対的なメリットについて読む価値があります。
mc0e

9

@johnfの答えに基づいて構築しますが、代わりにmount.ecryptfs_privateを使用します:

  • /home/bob/Ubuntuの通常の暗号化されたホームディレクトリマジックを使用した暗号化(例:SSD)。
  • 暗号化/media/hdd/bob_extra/(例:HDD)、にマウントされ/home/bob/extraます。ホームディレクトリと同じように、これはログイン時に自動マウントされるはずです。
  • 両方に同じキー/資格情報を使用します。

作成する

mkdir /media/hdd/bob_extra
cp /home/bob/.ecryptfs/Private.sig /home/bob/.ecryptfs/extra.sig
echo "/media/hdd/bob_extra /home/bob/extra ecryptfs none 0 0" > /home/bob/.ecryptfs/extra.conf

試して

mount.ecryptfs_private extra

実行中mount、以下が表示されます:

...
/media/hdd/bob_extra on /home/bob/extra type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=12345678abcdef,ecryptfs_fnek_sig=abcdef12345678)

アンマウントする:

sudo umount /media/hdd/bob_extra

自動マウントのセットアップ

Create /home/bob/bin/automount_ecryptfs.extra、まだマウントされていない場合にマウントします。

#!/bin/bash

MOUNT_POINT=/home/bob/extra

grep -q $MOUNT_POINT /proc/mounts
if [ $? -eq 1 ]; then
  mount.ecryptfs_private extra
fi

実行可能(chmod +x)にしてから、以下に追加します/home/bob/.bashrc

...
/home/bob/bin/automount_ecryptfs.extra

次に、それをGnomeのスタートアップアプリケーションにも追加します。


+1答えてくれてありがとう。複数のSSDと共有ドライブへのシンボリックリンクを使用したはるかに複雑なセットアップが行われているため、これをテストすることはできません。複数のHDDの暗号化は、いつか/ homeを暗号化するのと同じくらい簡単になることを期待しています。
トム・ブロスマン

ecryptfs-mount-private同様に、より多くの機能がありますも参照してください。たとえば、ユーザーのキーリングのキーを自動的に使用できます。
mc0e

この答えは、eCryptfsプライベートディレクトリのマウントに関するものです。問題は、ディスクユーティリティで作成されたLUKSパーティションのマウントに関するものでした。
ビクター

1

暗号化されたホームディレクトリにスクリプトを作成します~/scripts/mount_storage.sh

#!/bin/bash

sudo cryptsetup open --type luks UUID=12e26119-0ee2-4eb4-bd40-d8a3547ecf0c storage --key-file ~/keys/storage_keyfile
sudo mount /dev/mapper/storage /storage

「スタートアップアプリケーション」に追加します。

sh ~/scripts/mount_storage.sh

に追加/etc/sudoers

%sudo   ALL= NOPASSWD: /sbin/cryptsetup open --type luks UUID=12e26119-0ee2-4eb4-bd40-d8a3547ecf0c storage --key-file *
%sudo   ALL= NOPASSWD: /bin/mount /dev/mapper/storage /storage

/storageマウントポイントを作成し、上記のスクリプトでUUIDを変更する必要があります(で検索しますblkid)。


USBが接続されるたびにこのようなスクリプトを実行する簡単な方法はありますか?
naught101

私はこれを自分で試したことがないので、確かに言うことはできませんが、なぜそうなのかわかりません。特定のUSBデバイスを対象とし、上記のスクリプトを実行するudevルールを作成する必要があります。たとえば、この投稿は出発点になります。
ラウルラースナー

0

これが一般的な答えになるとは思わない...

暗号化自体のセキュリティを回避せずに、暗号化されたパーティションを自動的にマウントすることはできません。

自動的に」が何を意味するかを考え、それが自動的にあなたのデータも見るようになることを理解してください。


主観的に「安全に」使用しましたが、質問から削除することができました。/ homeのように、ログイン時に写真でいっぱいの暗号化されたドライブをマウントするだけです。私は、DéjàDupの宛先として3番目の(暗号化された)ドライブを持っているので、これが理論的に可能であることを知っています。そのドライブは、バックアップユーティリティが起動したときにのみマウントされます。完全に自動で、キーを保存しているため、毎回入力しません。ログイン画面でパスワードを入力すると、すべてのキーが自動的に処理されます。これを実現する方法はありますか?ありがとう。
トム・ブロスマン

3
このコンテキストでは自動的に、ログインパスワードを入力した後にマウントされる必要があることを意味します。ログインパスワードは、暗号化されたパーティションのキーになる場合があります。これは妥当な安全性です(適切なログインパスワードを与える)。
ハビエルリベラ

他のコンピューターに自動的にマウントされないため、ほとんどのディスクが暗号化されます。私の場合、これはバックアップの作成に使用するディスクです。私は共有スペースで働いており、あなたの多くの知識を持つ人が私のディスク/コンピューターへの物理的アクセスで私がすることを何でも回避できることを知っています:私は他の誰かができるように私のファイルへのアクセシビリティを減らしたいですしないでください。
ラモンスアレス

自動プロセスにすることで、コンピューターを盗む誰かが暗号化された追加のHDのキーにアクセスできる可能性はありますか?(そしてもちろんこのHDをマウントしてアクセスします)
-miguelfg

簡単で明白なシナリオ:USBドライブをオフィスのサーバーに接続して、データをバックアップします。サーバーに何らかの異常が発生した場合に備えて、USBドライブを自宅に持ち帰り、オフサイトバックアップを確保します。家に帰る途中で誰かが私の車に侵入し、USBディスクを受け取ります。今、彼らは1)サーバーがどこにあるかを知り、2)オフィスに侵入してディスクを解読する必要があります。その部分は、「自宅のコンピューターに接続する」よりもはるかに困難です。
アーニー

0

次の手順で安全に行う必要があります。パスフレーズを要求すると、ボリュームがマウントされていても、他のユーザーがボリュームにアクセスできなくなります。

1.ディスクを開き、ドライブを選択してLUKSボリュームをクリックします。歯車をクリックして、「ユーザーセッションのデフォルト」の選択を解除します。「システム起動時にロック解除」と「ロック解除するには追加の認証が必要」を選択します。 ここに画像の説明を入力してください

2.ディスクボリューム(LUKSボリュームの下)をクリックします。歯車をクリックして、「ユーザーセッションのデフォルト」の選択を解除します。「システム起動時にマウント」と「ユーザーインターフェイスに表示」を選択します。 ここに画像の説明を入力してください

ボリュームをマウントするために追加の認証を要求することもできますが、その場合、問題のユーザーのマウントは自動化されません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.