共计 1579 个字符,预计需要花费 4 分钟才能阅读完成。
1. 描述
LUKS(Linux Unified Key Setup)是一个标准,定义了在Linux系统上进行磁盘加密的格式和规范。
而 cryptsetup
是一个实现了 LUKS 标准的工具,用于在 linux 系统上管理磁盘加密。它能够创建、管理和解锁加密的磁盘分区或整个硬盘。主要功能包括设置加密选项、创建加密设备映射、打开和关闭加密设备等。
使用 cryptsetup
对分区进行加密后,该加密分区无法直接挂载到文件系统上使用,因为操作系统无法直接识别和处理加密数据。相反,需要通过 cryptsetup
工具创建一个解密的映射,将其映射到 /dev/mapper 目录下的一个设备节点上。
2. 安装cryptsetup
centos:
yum install cryptsetup -y
debian系:
apt install cryptsetup -y
3. 创建加密磁盘
假设需要加密的磁盘分区为 /dev/sdb1
。
sudo cryptsetup luksFormat /dev/sdb1
将看到以下输出:
WARNING: Device /dev/sdb1 already contains a 'ext4' superblock signature.
WARNING!
========
This will overwrite data on /dev/sdb1 irrevocably.
Are you sure? (Type uppercase yes): YES
需要输入 YES
并回车。
然后系统将提示输入一个新的 LUKS 密钥并确认。
Enter passphrase for /dev/sdb1:
Verify passphrase:
4. 打开加密设备
sudo cryptsetup open /dev/sdb1 mydevice
这里会提示需要输入密钥。完成以后,将会在 /dev/mapper
下创建一个映射 /dev/mapper/mydevice
。
5. 格式化设备
如果是第一次对硬盘进行加密,那么需要进行格式化才能使用,对于已经加密过的硬盘,直接下一步挂载即可。
sudo mkfs.ext4 /dev/mapper/mydevice
6. 挂载设备
sudo mount /dev/mapper/mydevice /mnt
7. 取消挂载并关闭加密设备
首先需要取消挂载文件系统:
sudo umount /mnt
然后关闭加密设备:
sudo cryptsetup close mydevice
可以使用如下命令确认是否成功:
# 查看已挂载的文件系统
mount | grep /mnt
# 查看已打开的加密设备
sudo cryptsetup status mydevice
8. 开机自动解密和挂载
生成随机字符串,写入文件:
sudo dd if=/dev/urandom bs=1 count=1024 2>/dev/null | base64 -w 0 | rev | cut -b 2- | rev > /root/.luks_pass
设置文件权限,只允许 root 读写:
sudo chmod 600 /root/.luks_pass
设置开机自动解密 luks 分区:
$ vim /etc/crypttab
# <name> <device> <password> <options>
mydevice /dev/sdb1 /root/.luks_pass
# 还可以使用分区的 uuid. lsbid
#mydevice UUID=xxxx /root/.luks_pass
把密码添加到luks加密中,这一步必须执行才能使密码生效:
# 系统将向指定的 LUKS 加密分区(/dev/sdb1)添加一个额外的解密密钥
sudo cryptsetup luksAddKey /dev/sdb1 /root/.luks_pass
设置挂载点:
$ vim /etc/fstab
#配置新的home挂载信息
/dev/mapper/mydevice /mnt ext4 defaults 0 0
查看加密设备:
sudo cryptsetup status mydevice