以前の記事の1つで、ルートファイルシステム全体を暗号化する方法を学びました。 Linuxで簡単に。
ただし、場合によっては、1つの単純なパーティションを暗号化する必要があります。 重要なファイルの一部が保存される可能性があります。
ご存知のとおり、ディスクの暗号化は非常に重要です 。ノートパソコンが盗まれた場合、おそらくすべての個人情報が失われるでしょう。
ただし、この問題に対処する方法はいくつかあります。ディスクパーティションを暗号化する 。
このチュートリアルでは、ディスクパーティション全体を暗号化するために必要なすべての手順について学習します。 、パスフレーズまたはキーファイルで保護します。
この例では、記事はRHEL 8オペレーティングシステムで説明されますが、別のオペレーティングシステムを使用しても違いはありません。
前提条件
この記事で提供されているほとんどのコマンドを実行するには、管理者権限が必要です。
これが当てはまるかどうかを確認するには、「グループ」を実行します。 」コマンドを実行し、「 sudo」に属していることを確認します Debianベースのディストリビューションの場合は「」グループまたは「wheel 」RedHatベースのものの場合。
$ groups
そのような権利がない場合は、UbuntuまたはCentOSディストリビューションのsudo権利の取得に関する記事の1つを読むことができます。
cryptsetupを使用してパーティションを暗号化する
以前の記事で指定したように、パーティションの暗号化にはディスク全体のフォーマットが含まれます 。
結果として、既存のデータでディスクを暗号化することを計画している場合は、データがその過程で消去されることを確認する必要があります。何かを失うことを避けるために、データのバックアップを作成する必要があります 外部ディスクまたはオンラインクラウド上。
ディスク上に新しいパーティションを作成する
パーティションを暗号化するために、最初に「fdisk」ユーティリティを使用して新しいパーティションを作成します 。この例では、「sdb」ディスクに「sdb1」という名前の新しいパーティションを作成します。
$ sudo fdisk /dev/sdb
fdiskユーティリティでは、「n」キーワードを使用して新しいパーティションを作成できます。 たとえば、5GBのサイズのパーティションが必要であることを指定します。
「fdisk」の使用方法またはパーティションの作成方法がわからない場合 、このテーマに関する専用の記事があります。
プロセスの最後に、「w」キーワードを使用する必要があります 変更をディスクに書き込むため。
素晴らしいです。パーティションが作成されたので、LUKSパーティションとしてフォーマットします 。
ディスクパーティションをLUKSとしてフォーマットする
パーティションを暗号化するには、LUKSプロジェクトに関連するコマンドを使用します 。
LUKSプロジェクト、 Linux Unified Key Systemの略 は、特別な暗号化プロトコルを使用してすべてのストレージデバイスを暗号化するために使用される仕様です。説明したように、LUKSは単なる仕様であり、それを実装するプログラムが必要になります。
この場合、「cryptsetup」ユーティリティを使用します 。マニュアルのセクションで説明されているように、cryptsetupはdm-crypt用の暗号化されたスペースを作成することを目的としています。
まず、「 cryptsetup」があることを確認してください 「which」コマンドを使用した「」コマンド。
$ which cryptsetup
サーバーでcryptsetupが見つからない場合は、次のいずれかのコマンドを使用してインストールしてください
$ sudo apt-get install cryptsetup (for Debian distributions)
$ sudo yum install cryptsetup (for RHEL/CentOS distributions)
LUKSパーティションを作成するには、「cryptsetup」に続いて「luksFormat」とフォーマットするパーティションの名前を実行する必要があります。
$ sudo cryptsetup luksFormat /dev/sdb1
まず、ディスクを暗号化すると、プロセスで実際にディスクがフォーマットされることに注意してください。
「はい」と入力した後 」を大文字で表記すると、デバイスを保護するためにパスフレーズを選択する必要があります。
LUKSは、メディアを保護する2つの方法をサポートしています。パスフレーズを使用する (現在使用しているもの)およびキーの使用 。今のところ、安全なパスワードを選択でき、パーティションは自動的にフォーマットされます。
パーティションが作成されたので、「 lsblk」を使用してパーティションを検査できます。 」コマンド:パーティションは「 crypto_luks」としてマークする必要があります 「。
$ lsblk -f
素晴らしい!ボリュームがフォーマットされたので、ボリュームを開いて、単純なext4ファイルシステムを作成できます。
パーティションにext4ファイルシステムを作成する
デフォルトでは、暗号化されたボリュームは閉じられています。つまり、そのボリュームで利用可能なデータにアクセスすることはできません。
ボリュームを「ロック解除」することを意味する「開く」には、もう一度「cryptsetup」コマンドを使用し、続いて「luksOpen」とボリュームの名前を使用する必要があります。
コマンドの最後に、開いているボリュームの名前を入力します。この場合は、「 cryptpart」を選択します。 「。
$ sudo cryptsetup luksOpen /dev/sdb1 cryptpart
ご想像のとおり、前のセクションで選択したパスフレーズを入力するように求められます。
「lsblk」コマンドを再度実行すると、「 cryptpart」という名前の「sdb1」暗号化ボリュームの下に1つのボリュームが作成されていることに気付いたと思います。 「。 「デバイスマッパー」 Linuxカーネルのフレームワークの1つである、がそれを行いました。
ボリュームのロックが解除されたので、新しいext4ファイルシステムを作成するときが来ました。 。
パーティションに新しいファイルシステムを作成するには、「mkfs」コマンドに続けてファイルシステム形式(この場合は「ext4」)を使用します。
$ sudo mkfs.ext4 /dev/mapper/cryptpart
素晴らしい、ファイルシステムが作成されました。
これで、マウントして新しいファイルを追加できます。このボリュームで作成されたファイルは自動的に暗号化されます 。
$ mkdir -p /home/devconnected/files
$ sudo mount /dev/mapper/cryptpart /home/devconnected/files
$ sudo chown devconnected:devconnected /home/devconnected/files
すばらしいです。データが暗号化されたパーティションに安全になっているので、ブート時に暗号化パーティションをマウントする方法を見てみましょう。
crypttabおよびfstabファイルを変更する
多くのシステム管理者は、initプロセスがドライブをマウントするために使用するfstabファイルの存在を知っています。
ただし、暗号化されたパーティションを処理する場合は、別のファイルが使用されます: / etc / crypttab 。
fstabファイルと同様に、crypttabは起動時にinitプロセスによって読み取られます。そこに提供されている情報を前提として、パーティションのロックを解除するように求められるか、自動的に実行するためにキーファイルを読み取ります。
注 :/ etc/crypttabがシステムに存在しない可能性があります。そうでない場合は、作成する必要があるかもしれません。
crypttabの列は上で説明されています:
- デバイス名 :復号化されたデバイスに任意の名前を付けることができます。さらに、「/ dev/mapper」パスの下のデバイスマッパーによって自動的に作成されます。前のセクションでは、「 cryptpart」を選択しました この列の「」
- 暗号化されたデバイスのUUID :暗号化されたデータが含まれているパーティションを見つけるには、システムに一意の識別子を意味するUUIDが必要です。
- 認証方法 :説明したように、「なし」を選択できます パスフレーズの場合は「」を使用するか、キーへのパスを指定できます。重要な方法については、この記事の最後の章で説明します。
- マウントオプション :この列を使用して、パスフレーズ、暗号、暗号化方式、およびその他の多くのパラメーターの試行回数を指定できます。オプションの完全なリストは、「crypttab」のマニュアルページにあります。
$ sudo nano /etc/crypttab
# Content of the crypttab file
cryptpart UUID=<partition_uuid> none luks
暗号化されたパーティションのUUIDについて疑問がある場合は、「 blkid」を使用できます。 」コマンドと単純な「grep」パイプ。
$ sudo blkid | grep -i luks
これで、「 / etc / crypttab 」ファイルが変更された場合、「 fstab」を変更する必要があります 」ファイルでマウントポイントを指定します。
$ sudo blkid | grep -i ext4
$ sudo nano /etc/fstab
fstab列で、次のように指定する必要があります:
- 復号化されたデバイスのUUID :それを見つけるために、「blkid」コマンドを使用できますが、続行する前にデバイスを開いたことを確認してください。デバイスが閉じていると、UUIDを見つけることができません。
- マウントポイント :復号化されたデバイスがマウントされる場所。パスが存在しない場合は、自動的に作成されます。
- ファイルシステムタイプ :この場合、「ext4」を使用することを選択しましたが、システムによって異なる場合があります。
- ダンプとパスのオプション :起動時にファイルシステムをチェックしたくないので、デフォルト値のままにしておくことができます。
完了したら、ファイルを保存してください。
実行した手順が完了すると、デバイスの準備が整い、起動時に自動的にマウントされます。
ブート時に暗号化されたデバイスのマウントを確認する
デバイスが正しくマウントされていることを確認するために、サーバーを再起動し、initramfsモジュールが暗号化されたデバイスを開くのを待つことができます。
$ sudo reboot
これは、サーバーを起動したときに、少なくともRHEL8で表示される画面です。パスフレーズを提供すると、マシンでパスフレーズのロックを解除してマウントできるようになります。
サーバーにログインしたら、「lsblk」を使用して、暗号化されたパーティションが正しくマウントされたことをもう一度確認できます。
$ lsblk -f | grep sdb1 -A 2
おめでとうございます。LUKSを使用してLinux上のパーティションを正常に暗号化しました!
暗号化されたパーティションのキーを作成する
前に説明したように、LUKSは2つの認証方法、つまりパスフレーズとキーファイルを処理します。
前のセクションではパスフレーズを使用しましたが、認証キーも持っていると非常に便利です。
まず、キーファイルを作成し、安全な場所に保存します(「 / boot 」など、通常のユーザーが移動できないディレクトリに保存します)。 」または「/root 「)。
$ echo "supersecretpass" > volume-key
$ sudo mv volume-key /boot/
ご覧のとおり、デフォルトでは、ファイルはユーザークレデンシャルを使用して作成されており、権限が多すぎます。
「chown」および「chmod」コマンドを使用して、ファイルの所有者として「root」を設定し、その権限を読み取り専用に変更できます。
$ sudo chown root:root /boot/volume-key
$ sudo chmod 0400 /boot/volume-key
ファイルが読み取り専用に設定されたので、LUKSボリュームのスロットの1つにキーとして追加できます。
LUKSボリュームにキーを追加
LUKSボリュームにキーを追加するには、「cryptsetup」コマンドを実行してから、「luksAddKey」、暗号化されたボリュームの名前、およびキーへのパスを実行する必要があります。
$ sudo cryptsetup luksAddKey <encrypted_device> <path_to_key>
$ sudo cryptsetup luksAddKey /dev/sdb1 /boot/volume-key
この操作を実行するために、パスフレーズの入力を求められます。提供されると、キーはキースロットに自動的に追加されます。
キーが正しく追加されたことを確認するには、「 luksDump」を使用してキースロットを検査できます。 」コマンド。
$ sudo cryptsetup luksDump /dev/sdb1
キーが追加されたので、「/ etc/crypttab」を変更するだけです システムが起動時にそれを見つけるために。
$ sudo nano /etc/crypttab
# Content of the crypttab file
cryptpart UUID=<partition_uuid> /boot/volume-key luks
再起動すると、暗号化されたパーティションが自動的にマウントされます!
結論
この記事では、Linuxでパーティションを簡単に暗号化する方法を学びました。 LUKSプロジェクトとcryptsetupという名前のその実装を使用します。
「キーファイル」を使用できることがわかります 」を使用して、パーティションのロックを自動的に解除します。
システム全体の暗号化に関心がある場合は、最近、このテーマに関する記事を作成しました。
また、Linuxシステム管理について詳しく知りたい場合は 、ウェブサイトの専用セクションをご覧ください。