ノート:

Oracle LinuxでLUKSを使用してドライブを暗号化

イントロダクション

Oracle Linuxには、ブロック・デバイスでの暗号化を処理するためのデバイス・マッパー暗号化(dm-crypt)およびLinux Unified Key Setup (LUKS)が含まれています。

この演習では、Linuxカーネルに含まれているデバイス・マッパー・サポートからdm-cryptモジュールを使用するLUKSを使用してデバイスを暗号化するフロントエンド・ツールに焦点を当てます。

目的

要件

使用可能なディスクと Oracle Linuxのフルパッチインストールを備えたシステム。

演習環境の設定

ノート: 無料ラボ環境を使用する場合、接続およびその他の使用手順については、Oracle Linux Labの基本を参照してください。

  1. まだ接続していない場合は、端末を開き、ssh経由でol-node01インスタンスに接続します。

    ssh oracle@<ip_address_of_instance>
    
  2. ブロック・ボリュームが存在することを確認します。

    lsblk -f
    

    フリー・ラボ環境の出力には、ベースOSを含むsdaと、この演習で使用するsdbの2つのブロック・デバイスが表示されます。-fオプションを使用すると、ファイルシステムタイプ(FSTYPE)およびブロック(汎用一意識別子(UUID)が表示されます。

暗号化パッケージのインストール

  1. システムでまだ使用できない場合は、cryptsetupツールをインストールします。

    cryptsetupがインストールされているかどうかを確認します。

    sudo dnf list --installed cryptsetup
    

    インストールされていない場合は、cryptsetupをインストールします。

    sudo dnf -y install cryptsetup
    

    ノート: 無料ラボ環境では、cryptsetupツールがすでにインストールされています。

LUKSを使用してボリュームを暗号化する

LUKSおよびdm-cryptは、ブロック・デバイス、RAID、LVM物理ボリューム、さらにはスワップに対して機能します。暗号化されると、これらのデバイスのデータは、適切な資格情報でブート時またはマウント時にのみアクセスできます。

フリー・ラボ環境では、このステップに対してパーティション化されたディスク/dev/sdb1が提供されます。

  1. ディスクを暗号化します。

    sudo cryptsetup -y -v luksFormat /dev/sdb1
    

    続行してパスフレーズを2回指定するには、YESと入力します。パスフレーズには次のものが含まれている必要があります。

    • 最少8文字
    • 1桁
    • 1つの大文字
    • 1つの特殊文字
    • 非ディクショナリ・ベースの単語

    重要: 入力されたパスワードは、後で使用するように覚えておいてください。

    出力例:

    [oracle@ol-node01 ~]$ sudo cryptsetup -y -v luksFormat /dev/sdb1
      
    WARNING!
    ========
    This will overwrite data on /dev/sdb1 irrevocably.
      
    Are you sure? (Type 'yes' in capital letters): YES
    Enter passphrase for /dev/sdb1: 
    Verify passphrase: 
    Key slot 0 created.
    Command successful.
    
  2. 暗号化されたボリュームを開きます。

    このステップには、任意の名前を付けることができるターゲットが必要です。mysecretsを使用します。

    sudo cryptsetup -v luksOpen /dev/sdb1 mysecrets
    

    リクエスト時に前のステップで作成されたものと同じパスフレーズを入力します。

    出力例:

    [oracle@ol-node01 ~]$ sudo cryptsetup -v luksOpen /dev/sdb1 mysecrets
    Enter passphrase for /dev/sdb1: 
    Key slot 0 unlocked.
    Command successful.
    
  3. ブロック・デバイスを再度確認します。

    lsblk -f
    

    デバイス /dev/sdb1は、FSTYPEを crypto_LUKSとして表示し、暗号化されたデバイスボリュームのマッピング mysecretsを表示します。

暗号化されたボリュームのフォーマット

暗号化されたボリュームにデータを追加する前に、フォーマットする必要があります。xfs、ext3、ext4など、様々なファイル・システムを選択できます。

  1. ファイルシステムを作成します。

    sudo mkfs.xfs /dev/mapper/mysecrets
    

暗号化されたボリュームのマウント

  1. マウントポイントを作成します。

    sudo mkdir -p /u01/my_secret_storage
    
  2. ボリュームをマウントします。

    sudo mount -v /dev/mapper/mysecrets /u01/my_secret_storage
    

    出力には、SELinux警告が表示されます。

    出力例:

    [oracle@ol-node01 ~]$ sudo mount -v /dev/mapper/mysecrets /u01/my_secret_storage/
    mount: /u01/my_secret_storage does not contain SELinux labels.
           You just mounted an file system that supports labels which does not
           contain labels, onto an SELinux box. It is likely that confined
           applications will generate AVC messages and not be allowed access to
           this file system.  For more details see restorecon(8) and mount(8).
    mount: /dev/mapper/mysecrets mounted on /u01/my_secret_storage.
    

    これには、マウント・ポイントのSELinuxセキュリティ・コンテキストのラベルを変更する必要があります。

    sudo restorecon -vvRF /u01/my_secret_storage
    

    mountコマンドを再度実行します。

    sudo mount -v -o remount /u01/my_secret_storage
    
  3. マウントされたボリュームを表示します。

    lsblk
    

    出力例:

    [oracle@ol-node01 ~]$ lsblk
    NAME               MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
    sda                  8:0    0 46.6G  0 disk  
    |-sda1               8:1    0  100M  0 part  /boot/efi
    |-sda2               8:2    0    1G  0 part  /boot
    `-sda3               8:3    0 45.5G  0 part  
      |-ocivolume-root 252:0    0 35.5G  0 lvm   /
      `-ocivolume-oled 252:1    0   10G  0 lvm   /var/oled
    sdb                  8:16   0   50G  0 disk  
    `-sdb1               8:17   0    2G  0 part  
      `-mysecrets      252:2    0    2G  0 crypt /u01/my_secret_storage
    

LUKSボリューム詳細の表示

LUKSヘッダー、データセグメント、キースロット、およびバージョン情報を表示します。

  1. LUKSの詳細をダンプします。

    sudo cryptsetup luksDump /dev/sdb1
    

    出力例:

    LUKS header information
    Version:       	2
    Epoch:         	3
    Metadata area: 	16384 [bytes]
    Keyslots area: 	16744448 [bytes]
    UUID:          	4ccea398-5864-45a9-b274-173c8ebc3356
    Label:         	(no label)
    Subsystem:     	(no subsystem)
    Flags:       	(no flags)
      
    Data segments:
      0: crypt
    	offset: 16777216 [bytes]
    	length: (whole device)
    	cipher: aes-xts-plain64
    	sector: 512 [bytes]
      
    Keyslots:
      0: luks2
    	Key:        512 bits
    	Priority:   normal
    	Cipher:     aes-xts-plain64
    	Cipher key: 512 bits
    	PBKDF:      argon2i
    	Time cost:  10
    	Memory:     1048576
    	Threads:    4
    	Salt:       ee d2 c7 5b 05 43 0f 0a 12 60 da b5 87 19 4a 6f 
    	            06 57 a2 31 b1 dd bb 60 74 53 95 b2 ca 2f ad 4b 
    	AF stripes: 4000
    	AF hash:    sha256
    	Area offset:32768 [bytes]
    	Area length:258048 [bytes]
    	Digest ID:  0
    Tokens:
    Digests:
      0: pbkdf2
    	Hash:       sha256
    	Iterations: 243628
    	Salt:       89 6c 8b aa 37 af 58 e9 26 49 c5 e5 db 2d 54 ea 
    	            f8 7a c2 89 0e ab ed 48 74 a5 23 d7 b0 e6 9c 87 
    	Digest:     4a 2b 25 76 c5 85 1a 6c a9 28 0c ee d0 c7 76 eb 
    	            e1 4c ee 9c 5b 9a e2 d0 95 6e 1f 6e bb 1b 03 d1 
    

詳細は、cryptsetup(8)マニュアル・ページ、OracleドキュメントまたはアップストリームFAQを参照してください。

詳細情報

他の関連リソースを参照してください。

その他の学習リソース

他のラボをdocs.oracle.com/learnで探すか、Oracle LearningのYouTubeチャネルでより無料の学習コンテンツにアクセスします。また、education.oracle.com/learning-explorerにアクセスしてOracle Learningエクスプローラになります。

製品ドキュメントについては、Oracle Help Centerを参照してください。