Linux 磁盘加密和自动挂载


共计 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

Tips:清朝云网络工作室

阅读剩余
THE END