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