3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2024年02月版】Linuxでディスク暗号化・LUKS・cryptsetup【初心者向け】

Last updated at Posted at 2024-02-11

はじめに

Linuxで暗号化を行いたい。 LUKSeCryptfs が使われる。
今回は、LUKS を用いて、ディスクの暗号化と復号化の手順をメモ。

環境

  • macOS上のPrallelsのUbuntu22.04
$ uname -a
Linux ubuntu03 5.15.0-94-generic #104-Ubuntu SMP Tue Jan 9 15:26:57 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04.3 LTS"
  • ディスク構成は、HDD2台で、1台はOS、もう1台が今回暗号化するディスク(/dev/sdb)
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk 
├─sda1        8:1    0     1G  0 part /boot/efi
├─sda2        8:2    0     2G  0 part /boot
└─sda3        8:3    0  60.9G  0 part 
  └─vg0-lv0 253:0    0  60.9G  0 lvm  /
sdb           8:16   0     2G  0 disk 
  • マウント先は、/mnt/crypt とする

手順

マウント先の作成

$ sudo mkdir -p /mnt/crypt

暗号化

ディスクを丸ごと暗号化

  • YES を大文字で入力する
  • 暗号化のパスフレーズを入力する
$ sudo cryptsetup luksFormat /dev/sdb

WARNING!
========
This will overwrite data on /dev/sdb irrevocably.

Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/sdb: 
Verify passphrase: 
  • 暗号化してもブロックデバイスとしてはぱっと見の変化なし
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk 
├─sda1        8:1    0     1G  0 part /boot/efi
├─sda2        8:2    0     2G  0 part /boot
└─sda3        8:3    0  60.9G  0 part 
  └─vg0-lv0 253:0    0  60.9G  0 lvm  /
sdb           8:16   0     2G  0 disk 

ディスクを復号化してマッピング

  • 暗号化でつかったパスフレーズを入力する
  • マッピング名を指定する、今回は cryptdisk がマッピング名
  • /dev/mapper/cryptdisk にマッピングされる
$ sudo cryptsetup open /dev/sdb cryptdisk
Enter passphrase for /dev/sdb: 
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk  
├─sda1        8:1    0     1G  0 part  /boot/efi
├─sda2        8:2    0     2G  0 part  /boot
└─sda3        8:3    0  60.9G  0 part  
  └─vg0-lv0 253:0    0  60.9G  0 lvm   /
sdb           8:16   0     2G  0 disk  
└─cryptdisk 253:1    0     2G  0 crypt 
$ ll /dev/mapper
total 0
  :
  :
lrwxrwxrwx  1 root root       7 Feb 11 01:38 cryptdisk -> ../dm-1
lrwxrwxrwx  1 root root       7 Feb 11 01:22 vg0-lv0 -> ../dm-0

パーティションの作成

$ sudo mkfs.ext4 /dev/mapper/cryptdisk 
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 520192 4k blocks and 130048 inodes
Filesystem UUID: e5731e7a-14f3-4e23-a31d-bb264b1d37ed
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done 

マウント

$ sudo mount /dev/mapper/cryptdisk /mnt/crypt
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk  
├─sda1        8:1    0     1G  0 part  /boot/efi
├─sda2        8:2    0     2G  0 part  /boot
└─sda3        8:3    0  60.9G  0 part  
  └─vg0-lv0 253:0    0  60.9G  0 lvm   /
sdb           8:16   0     2G  0 disk  
└─cryptdisk 253:1    0     2G  0 crypt /mnt/crypt
$ df -h
Filesystem             Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0     60G  5.7G   51G  11% /
/dev/sda2              2.0G  250M  1.6G  14% /boot
/dev/sda1              1.1G  6.4M  1.1G   1% /boot/efi
/dev/mapper/cryptdisk  2.0G   24K  1.9G   1% /mnt/crypt

テストファイルの書き込み

  • 1GBのテストファイルを書き込む
$ cd /mnt/crypt/
$ sudo dd if=/dev/random of=./test.dat bs=1M count=1024 status=progress
964689920 bytes (965 MB, 920 MiB) copied, 2 s, 482 MB/s
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.24187 s, 479 MB/s
dev@ubuntu03:/mnt/crypt$ ls -alht
total 1.1G
-rw-r--r-- 1 root root 1.0G Feb 11 02:14 test.dat
drwxr-xr-x 3 root root 4.0K Feb 11 02:14 .
drwx------ 2 root root  16K Feb 11 01:55 lost+found
drwxr-xr-x 3 root root 4.0K Feb 11 01:54 ..

テストファイルのハッシュの採取

$ md5sum test.dat 
ca12c1a7e0b7c805e01f13d93ffea3ea  test.dat

マッピングの解除

  • マウント解除し、その後、マッピング解除する
  • マウントしていると close できないので注意
$ sudo cryptsetup close cryptdisk
Device cryptdisk is still in use.
  • マウント解除前の状況
$ df -h
Filesystem             Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0     60G  5.7G   51G  11% /
/dev/sda2              2.0G  250M  1.6G  14% /boot
/dev/sda1              1.1G  6.4M  1.1G   1% /boot/efi
/dev/mapper/cryptdisk  2.0G  1.1G  821M  56% /mnt/crypt
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk  
├─sda1        8:1    0     1G  0 part  /boot/efi
├─sda2        8:2    0     2G  0 part  /boot
└─sda3        8:3    0  60.9G  0 part  
  └─vg0-lv0 253:0    0  60.9G  0 lvm   /
sdb           8:16   0     2G  0 disk  
└─cryptdisk 253:1    0     2G  0 crypt /mnt/crypt
  • マウント解除
$ sudo umount /dev/mapper/cryptdisk
  • マウント解除後の状況
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk  
├─sda1        8:1    0     1G  0 part  /boot/efi
├─sda2        8:2    0     2G  0 part  /boot
└─sda3        8:3    0  60.9G  0 part  
  └─vg0-lv0 253:0    0  60.9G  0 lvm   /
sdb           8:16   0     2G  0 disk  
└─cryptdisk 253:1    0     2G  0 crypt 
$ df -h
Filesystem           Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0   60G  5.7G   51G  11% /
/dev/sda2            2.0G  250M  1.6G  14% /boot
/dev/sda1            1.1G  6.4M  1.1G   1% /boot/efi
  • マッピングの解除
$ sudo cryptsetup close cryptdisk
  • マッピング解除後の状況
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk 
├─sda1        8:1    0     1G  0 part /boot/efi
├─sda2        8:2    0     2G  0 part /boot
└─sda3        8:3    0  60.9G  0 part 
  └─vg0-lv0 253:0    0  60.9G  0 lvm  /
sdb           8:16   0     2G  0 disk 

復号化

ディスクを丸ごと復号化

$ sudo cryptsetup open /dev/sdb cryptdisk
Enter passphrase for /dev/sdb: 
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk  
├─sda1        8:1    0     1G  0 part  /boot/efi
├─sda2        8:2    0     2G  0 part  /boot
└─sda3        8:3    0  60.9G  0 part  
  └─vg0-lv0 253:0    0  60.9G  0 lvm   /
sdb           8:16   0     2G  0 disk  
└─cryptdisk 253:1    0     2G  0 crypt 

マウント

$ sudo mount /dev/mapper/cryptdisk /mnt/crypt
$ df -h
Filesystem             Size  Used Avail Use% Mounted on
  :
  :
/dev/mapper/vg0-lv0     60G  5.7G   51G  11% /
/dev/sda2              2.0G  250M  1.6G  14% /boot
/dev/sda1              1.1G  6.4M  1.1G   1% /boot/efi
/dev/mapper/cryptdisk  2.0G  1.1G  821M  56% /mnt/crypt
$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINTS
  :
  :
sda           8:0    0    64G  0 disk  
├─sda1        8:1    0     1G  0 part  /boot/efi
├─sda2        8:2    0     2G  0 part  /boot
└─sda3        8:3    0  60.9G  0 part  
  └─vg0-lv0 253:0    0  60.9G  0 lvm   /
sdb           8:16   0     2G  0 disk  
└─cryptdisk 253:1    0     2G  0 crypt /mnt/crypt
$ cd /mnt/crypt
$ ls -alth
total 1.1G
-rw-r--r-- 1 root root 1.0G Feb 11 02:14 test.dat
drwxr-xr-x 3 root root 4.0K Feb 11 02:14 .
drwx------ 2 root root  16K Feb 11 01:55 lost+found
drwxr-xr-x 3 root root 4.0K Feb 11 01:54 ..

テストファイルのハッシュの比較

  • md5ca12c1a7e0b7c805e01f13d93ffea3ea かどうか確認する
$ md5sum test.dat 
ca12c1a7e0b7c805e01f13d93ffea3ea  test.dat

さいごに

かんたんでしたね

参考リンク

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?