linux 挂载加密分区,Linux 系统如何使用 LUKS 加密分区?

对于一些敏感数据,最常见的方法就是对它进行加密,尤其是将这些服务存在公有云环境。以下为如何使用 LUKS 套件来加密我们私密信息。

安装 cryptsetup 软件包安装cryptsetupapt-get install cryptsetup

RHEL / CentOS / Oracle / Scientific Linux 系统请使用以下命令来安装cryptsetupyum install cryptsetup-luks配置 LUKS 分区cryptsetup -y -v luksFormat /dev/sdb

可以使用指定参数:cryptsetup luksFormat --type luks2 --cipher aes-xts-plain64 --key-size 512 /dev/sdb

输出样例:WARNING!

========

This will overwrite data on /dev/sdb irrevocably.

Are you sure? (Type uppercase yes): YES

Enter LUKS passphrase:

Verify passphrase:

Command successful.

提示 :输入的YES 为大写。

此命令初始化卷,并设置初始密钥或密码短语。请注意,密码短语不可恢复,因此不要忘记它。请键入以下命令创建映射:cryptsetup luksOpen /dev/sdb backup2

输出样例:Enter passphrase for /dev/sdb:

这里已经系统已经存在一个mapper设备# ls -l /dev/mapper/backup2

输出样例:lrwxrwxrwx 1 root root 7 Oct 19 19:37 /dev/mapper/backup2 -> ../dm-0

此时可以使用以下命令来查看mapper状态:# cryptsetup status backup2

输出样例:/dev/mapper/backup2 is active.

type: LUKS1

cipher: aes-cbc-essiv:sha256

keysize: 256 bits

device: /dev/sdb

offset: 4096 sectors

size: 419426304 sectors

mode: read/write

Command successful.

可以使用以下命令来导出 KUKS 头部信息# cryptsetup luksDump /dev/sdb

输出样例:LUKS header information for /dev/sdb

Version: 1

Cipher name: aes

Cipher mode: xts-plain64

Hash spec: sha256

Payload offset:4096

MK bits: 256

MK digest: 21 07 68 54 77 96 11 34 f2 ec 17 e9 85 8a 12 c3 1f 3e cf 5f

MK salt: 8c a6 3d 8c e9 de 16 fb 07 fd 8e d3 72 d7 db 94

7e e0 75 f9 e0 23 24 df 50 26 fb 92 f8 b5 dd 70

MK iterations: 222000

UUID: 4dd563a9-5bff-4fea-b51d-b4124f7185d1

Key Slot 0: ENABLED

Iterations: 2245613

Salt: 05 a8 b4 a2 54 f7 c6 ee 52 db 60 b6 12 7f 2f 53

3f 5d 2d 62 fb 5a b1 c3 52 da d5 5f 7b 2d 38 32

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

3. 格式化LUKS分区

使用以下命令来清空分区上的数据(可选)# dd if=/dev/zero of=/dev/mapper/backup2

以上命令可能会消耗大量时间,且看不到进度,可以使用以下命令:# pv -tpreb /dev/zero | dd of=/dev/mapper/backup2 bs=128M

或者# dd if=/dev/zero of=/dev/mapper/backup2 status=progress

完成后,可以对分区进行格式化了并进行挂载# mkfs.ext4 /dev/mapper/backup2

# mkdir /backup2

# mount /dev/mapper/backup2 /backup2

QA

如何对数据进行安全卸载?# umount /backup2

# cryptsetup luksClose backup2

如何对数据分区进行挂载?# cryptsetup luksOpen /dev/sdb backup2

# mount /dev/mapper/backup2 /backup2

# df -H

# mount

如何修复 LUKS 分区?# umount /backup2

# fsck -vy /dev/mapper/backup2

# mount /dev/mapper/backup2 /backu2

如何对加密分区更改加密密码?# cryptsetup luksDump /dev/sdb

# cryptsetup luksAddKey /dev/sdb

输出样例:Enter any passphrase:

Enter new passphrase for key slot:

Verify passphrase:

移动旧密码# cryptsetup luksRemoveKey /dev/sdb

如何使用本地文件块来进行加密?

分配10GB文件fallocate -l 10G /root/encrypted-container

创建10GB文件容器的另一种方法是使用以下命令:truncate -s 10G /root/encrypted-container

此命令的优点是文件以占用文件系统上的0个字节开始,并根据需要增长。

如何对LUKS标头进行备份和还原?

**警告:**请仔细遵循这些步骤。

由于LUKS标头非常重要而丢失它意味着丢失整个容器,请将其备份:cryptsetup luksHeaderBackup /dev/sdX --header-backup-file sdX-luks-header

测试意外覆盖LUKS标头的场景:dd conv=notrunc if=/dev/zero of=/dev/sdX bs=128 count=1

尝试打开容器现在将返回错误:cryptsetup luksOpen /dev/sdX sdX-luks

恢复有效标头:cryptsetup luksHeaderRestore /dev/sdX --header-backup-file sdX-luks-header

再次打开容器:cryptsetup luksOpen /dev/sdX sdX-luks

关于LUKS密钥

LUKS提供了八个密钥槽,每个槽都可用于存储可用于访问和解密数据的密码。添加和删除这些密码的基本命令。

要更改密码:cryptsetup luksChangeKey /dev/sdX

要设置可以解锁容器的其他密码:cryptsetup luksAddKey /dev/sdX

要从密钥槽中删除密码:cryptsetup luksRemoveKey /dev/sdX

要查看正在使用的密钥槽:cryptsetup luksDump /dev/sdX

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值