Image

ナレッジベース → 暗号化された Luks ファイルの自動マウント

[仮想サーバー]
公開日: 20.01.2024

記事 VDS Linux で暗号化されたディスクを作成する では、暗号化されたファイルを作成し、ディスクとしてマウントする方法を説明しました。その例では、接続する際に毎回パスワードを入力し、ファイルの操作が終了したら無効化します。この作業方法は、データの安全性を高めるための効果的な手段です。

ただし、毎回入力するパスワードが、入力元のPC上で行動が記録されている場合には(キーロガーがインストールされている場合など)、傍受される可能性があります。

この例では、キーファイルを使用して、サーバーの起動時に暗号化されたファイルを自動的にマウントし、ディスクをマウントする方法を紹介します。

1. キーファイルを作成する

dd if=/dev/urandom of=/root/random_data_keyfile1 bs=1024 count=4

1.1 root のみに権限を付与する

chmod 0400 /root/random_data_keyfile1

1.2 キーファイルを暗号化ファイルに追加する

cryptsetup luksAddKey /root/crypt-drive /root/random_data_keyfile1

既存のパスフレーズを入力してください:

2. 自動接続のための設定を追加する

2.1 ファイル /etc/crypttab を編集する

# <ターゲット名> <ソースデバイス> <キーファイル> <オプション>
crypto-my /root/crypt-drive /root/random_data_keyfile1 luks,discard

キーファイルを削除してサーバーを再起動した場合、起動時に暗号化ファイルのパスワード入力を求められますが、この段階ではネットワークを介してサーバーにアクセスすることはできません。パスワードを正しく入力すると、サーバーはネットワークサービスを含めた通常の起動を続行します。

2.1.1 キーファイルが存在しない場合でもサーバーが起動を続行できるようにするために、タイムアウトオプションを追加します。

# <ターゲット名> <ソースデバイス> <キーファイル> <オプション>
crypto-my /root/crypt-drive /root/random_data_keyfile1 luks,discard,timeout=30

キーファイルがない場合、30秒間パスワード入力を待機し、その後サーバーは起動を続けてネットワークにアクセスできるようになります。

2.2 ファイル /etc/fstab を編集する

...
/dev/mapper/crypto-my /mnt/crypt-volume ext4 defaults 0 0

これで完了です。サーバーを再起動して確認できます。

df -h
Filesystem Size Used Avail Use% Mounted on
udev 962M 0 962M 0% /dev
tmpfs 197M 504K 197M 1% /run
/dev/sda1 62G 2.7G 56G 5% /
tmpfs 984M 0 984M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/mapper/crypto-my 974M 72K 908M 1% /mnt/crypt-volume
tmpfs 197M 0 197M 0% /run/user/0

この方法には欠点もあります。サーバーに物理的にアクセスできる場合、rootパスワードをリセットすることができ、キーファイルがサーバー上に保存されているため、暗号化されたパーティション内のデータにアクセス可能になります。





No Comments Yet