在Debian上安装LUKS并创建加密的LUKS分区

时间:2020-03-21 11:45:34  来源:igfitidea点击:

我们将安装Linux统一密钥设置(LUKS)软件并创建一个加密的LUKS卷。

我们将使用Debian Wheezy服务器。
更新软件包列表并安装cryptsetup:

# apt-get update && apt-get install cryptsetup

加载内核模块:

# modprobe dm_crypt

安装用于进度监控的pv软件包,该软件包将在以后使用:

# apt-get install pv

设置LUKS分区

我们的磁盘分区表如下所示:

# fdisk -l | grep -i "/dev/sd"
Disk /dev/sda: 32.0 GB, 32016047552 bytes
/dev/sda1 * 2048 60547071 30272512 fd Linux RAID autodetect
/dev/sda2 60547072 62531583 992256 82 Linux swap/Solaris
Disk /dev/sdb: 32.0 GB, 32014965696 bytes
/dev/sdb1 * 2048 60547071 30272512 fd Linux RAID autodetect
/dev/sdb2 60547072 62531182 992055+ 83 Linux

我们将在1GB分区'/dev/sdb2'上设置LUKS卷。

创建LUKS分区

我们想要两次验证密码,使用详细模式并设置密码字符串:

# cryptsetup -v -y --cipher "aes-xts-plain64:sha512" \
  --key-size 512 --hash sha512 --iter-time 5000 \
  --use-random luksFormat /dev/sdb2
WARNING!
========
This will overwrite data on /dev/sdb2 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

[更新]:cryptsetup的1.6.0版将默认设置更改为XTS模式下的AES密码。
建议不要使用以前的默认密码aes-cbc-essiv,因为它存在已知问题和针对它们的实际攻击。

解锁LUKS分区

创建分区后,让我们去解锁它:

# cryptsetup luksOpen /dev/sdb2 data 
Enter passphrase for /dev/sdb2:

上面的命令应创建以下映射器:

/dev/mapper/data

格式化LUKS卷并创建文件系统

我们想用零覆盖LUKS卷,以确保外界将其视为随机数据,从而防止使用模式的泄露:

# pv -tpreb /dev/zero | dd of=/dev/mapper/data bs=1M
dd: writing `/dev/mapper/data': No space left on device
 966MB 0:00:58 [16.6MB/s] 
0+7729 records in
0+7728 records out
1012924416 bytes (1.0 GB) copied, 70.8432 s, 14.3 MB/s

格式化操作完成后,我们可以继续创建文件系统(在这种情况下为ext4):

# mkfs.ext4 /dev/mapper/data -L data
mke2fs 1.42 (29-Nov-2011)
Filesystem label=data
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
61824 inodes, 247296 blocks
12364 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=255852544
8 block groups
32768 blocks per group, 32768 fragments per group
7728 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376
Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done

挂载LUKS音量

为LUKS卷创建一个新的挂载点:

# mkdir /data

挂载卷:

# mount /dev/mapper/data /data

可以通过以下方式卸载和关闭LUKS卷:

# umount /data
# cryptsetup luksClose data

列表上的下一件事:添加一个备份密钥并备份LUKS标头。