LUKS加密和解密操作

LUKS相关操作

LUKS开机自动加载分区

LUKS配置备份与还原

LUKS(Linux Unified Key Setup)是Redhat Linux提供的一种标准的设备加密系统。在文件系统被挂载之前一个被LUKS加密的分区或者卷必须先被解密,否则这个分区或者卷无法被挂载。

LUKS相关操作

1. 创建一个加密的分区

我们以虚拟机中的/dev/vdb1分区作为示例,将/dev/vdb1分区作为加密分区映射到/dev/mapper/mytest设备,需要设置加密密码,并且加密密码需要符合规范,需要注意yes需要大写。

[root@localhost ~]# cryptsetup luksFormat /dev/vdb1 
WARNING! ======== 
This will overwrite data on /dev/vdb1 irrevocably. 
Are you sure? (Type uppercase yes): YES 
Enter passphrase for /dev/vdb1: 
Verify passphrase:

2. 打开创建好的/dev/mapper映射

需要输入密码

[root@localhost ~]# cryptsetup open /dev/vdb1 mytest
Enter passphrase for /dev/vdb1:
[root@localhost ~]# lsblk
NAME            MAJ:MIN RM  SIZE RO TYPE  MOUNTPOINT
vdb             252:16   0   20G  0 disk
└─vdb1          252:17   0   20G  0 part
  └─mytest      253:2    0   20G  0 crypt
sr0              11:0    1 1024M  0 rom
vda             252:0    0   20G  0 disk
├─vda2          252:2    0    1G  0 part  /boot
├─vda3          252:3    0   19G  0 part
│ ├─centos-swap 253:1    0    2G  0 lvm   [SWAP]
│ └─centos-root 253:0    0   17G  0 lvm   /
└─vda1          252:1    0    4M  0 part

加密分区打开后能够通过lsblk看到对应的映射设备是mytest

对创建好的加密分区进行格式化

mkfs.ext4 /dev/mapper/mytest

然后直接对/dev/mapper/mytest进行挂载即可。

3. 关闭luks加密分区

cryptsetup close /dev/mapper/mytest

4. 检查一个分区是否是LUKS加密分区

[root@localhost ~]# cryptsetup isLuks /dev/vdb1 -v
Command successful.
[root@localhost ~]# cryptsetup isLuks /dev/vdb1 -v
Command failed with code -1 (wrong or missing parameters).

返回successful表示是加密分区,否则非加密分区。

上述操作是采用的在交互界面输入密码的方式进行加密解密,也可以采用密钥文件的方式,我们创建一个密钥文件/home/keyfile,将密钥写入到这个文件中

创建加密分区

[root@localhost home]# cryptsetup luksFormat /dev/vdb1 -d /home/keyfile

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

Are you sure? (Type uppercase yes): YES

打开加密分区

[root@localhost home]# cryptsetup open /dev/vdb1 mytest -d /home/keyfile

5. 查看LUKS加密分区状态

LUKS的加密分区一共提供了8个slot来用于加密,使用任意一个slot都可以用来解密,查看当前slot的使用情况,下面展示了/dev/vdb1的情况,可以看到只使用了slot0这一个密码槽位。可以使用一个密码来重启其他密码。

[root@localhost home]# cryptsetup luksDump /dev/vdb1
LUKS header information for /dev/vdb1

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha256
Payload offset: 4096
MK bits:        256
MK digest:      6b c0 2f 4b 62 0a f6 88 eb 9c 41 08 e7 65 76 f6 c2 17 98 e7
MK salt:        55 1e 20 10 fb 76 02 78 00 62 4e 97 11 de b1 32
                7b 0d 5e 64 34 d6 d6 7b 25 fc c7 5c a5 d9 c0 59
MK iterations:  26903
UUID:           f4172eb3-0194-489f-82e3-ef9704687369

Key Slot 0: ENABLED
        Iterations:             431156
        Salt:                   d3 69 cc e6 ee 9c 1f ae 70 a2 b0 11 f7 10 7a 8a
                                ea 6b ad 42 17 68 55 9e ca c5 ff 36 c8 af 6c 8a
        Key material offset:    8
        AF stripes:             4000
Key Slot 1: DISABLED
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

6. 添加密码

由于LUKS加密一共有8个槽位,因此可以添加密码,也可以指定密码的槽位

[root@bogon home]# cryptsetup luksAddKey /dev/vdb1 -d /home/keyfile --key-slot=1

Enter new passphrase for key slot:

Verify passphrase:

添加完成后使用luksDump查看能够看到新的slot被启动,以后界面这个LUKS分区可以使用任意一个密码。

[root@bogon home]# cryptsetup luksDump /dev/vdb1
LUKS header information for /dev/vdb1

Version:        1
Cipher name:    aes
Cipher mode:    xts-plain64
Hash spec:      sha256
Payload offset: 4096
MK bits:        256
MK digest:      6b c0 2f 4b 62 0a f6 88 eb 9c 41 08 e7 65 76 f6 c2 17 98 e7
MK salt:        55 1e 20 10 fb 76 02 78 00 62 4e 97 11 de b1 32
                7b 0d 5e 64 34 d6 d6 7b 25 fc c7 5c a5 d9 c0 59
MK iterations:  26903
UUID:           f4172eb3-0194-489f-82e3-ef9704687369

Key Slot 0: ENABLED
        Iterations:             431156
        Salt:                   d3 69 cc e6 ee 9c 1f ae 70 a2 b0 11 f7 10 7a 8a
                                ea 6b ad 42 17 68 55 9e ca c5 ff 36 c8 af 6c 8a
        Key material offset:    8
        AF stripes:             4000
Key Slot 1: ENABLED
        Iterations:             429040
        Salt:                   b0 7c 48 fd e8 5c f7 3d 69 28 6c 40 50 e1 01 76
                                cd 65 df 49 71 57 d7 00 bb 38 2a 14 59 ec a2 ce
        Key material offset:    264
        AF stripes:             4000
Key Slot 2: DISABLED
Key Slot 3: DISABLED
Key Slot 4: DISABLED
Key Slot 5: DISABLED
Key Slot 6: DISABLED
Key Slot 7: DISABLED

LUKS开机自动加载分区

在系统启动的时候如果需要被LUKS加密的卷能够自动挂载,需要执行以下操作:

1. /etc/crypttab文件中必须包含在boot的时候需要解密的设备,每行列出一个设备,格式如下:

name /dev/vdaN /path/to/keyfile

其中,name表示设备需要在/dev/mapper中映射的设备名称,/dev/vdaN表示需要解密的设备,/path/to/keyfile表示用于解密设备使用的密钥文件,如果此字段为空,则在启动的时候会提示用户输入解密密码。

2. 使用用户提供的密码或者使用keyfile中提供的密钥,加密的卷或者分区会被解密并映射到/dev/mapper/name设备

3. 如果加密卷解密成功,则会创建对应的解密后的映射设备,然后其内容可以直接提供访问。可以在/etc/fstab中编写条目进行挂载,可以通过映射文件名称或者直接使用设备的UUID进行挂载。例如:

/dev/mapper/name /secret ext4 default 1 2

或者

UUID="d8fc433d-2f08-480a-a631-20f3e102518e" /secret ext4 defaults 1 2

例如我们需要将/dev/vdb1这个LUKS加密后的分区挂载到/mnt目录下,/dev/vdb1映射后的设备是/dev/mapper/mytest,对应的加密文件是/home/keyfile,则我们需要在/etc/crypttab文件中添加如下内容:

[root@localhost ~]# cat /etc/crypttab mytest /dev/vdb1 /home/keyfile

/etc/fstab文件内容如下:

[root@localhost ~]# cat /etc/fstab
……………………
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=22284215-208d-405b-b482-c375b174a0d0 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/mapper/mytest /mnt                         ext4    defaults   0 0

LUKS配置备份与还原

当LUKS的加密被损坏,如果提前有备份可以通过备份的头文件来恢复损坏的部分。

1. LUKS头部备份

cryptsetup luksHeaderBackup /dev/vdb1 --header-backup-file=/home/luks.backup

2. LUKS头部还原

如果存在备份文件需要进行还原,最好先尝试使用备份的头文件进行解密,然后再还原

使用指定的头文件解密:

cryptsetup open /dev/vdb1 mytest --header-backup-file /home/luks.backup

还原指定的头文件

[root@bogon home]# cryptsetup luksHeaderRestore /dev/vdb1 --header-backup-file /home/luks.backup

WARNING!
========
Device /dev/vdb1 already contains LUKS header. Replacing header will destroy existing keyslots.

Are you sure? (Type uppercase yes): YES

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aolitianya

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值