DM-Crypt可以用于加密系统数据文件,原理是加密敏感数据存储制作便捷容器,我们可以利用DM-Crypt将物理块设备映射到虚拟块设备,当我们写入虚拟设备时,每个数据块都是被加密并存储在物理设备上的,当我们有需要从虚拟设备读取数据时候,每个数据块也都是在运行中自动解密。在这篇文章中,我们记录和实践操作如何加密磁盘、分区、交换方法。当然,使用到的服务器是Linode服务器,以及面板中需要的一些操作记录。
第一、准备工作
我们需要给服务器部署Debian 9镜像,同时我们西药预留系统大约4GB空间,其他的磁盘作为加密存储。
然后我们再到Linode面板中去创建一个新磁盘,然后在类型中选择unformatted / raw。
然后我们需要打开配置文件,查看配置文件快。
配置完毕之后我们启动Linode,然后需要运行升级镜像和安装。
apt update && apt upgrade
然后安装cryptsetup
apt install cryptsetup -y
第二、如何映射文件和分区
这里我们就可以开始使用cryptsetup命令的参数来映射磁盘。比如我们将分配一个10GB的文件。
fallocate -l 10G /root/encrypted-container
第三、在没有LUKS的模式下使用dm-crypt
1、以纯模式映射设备
cryptsetup --verify-passphrase open --type plain /dev/sdX sdX-plain
2、创建一个ext4文件系统
mkfs.ext4 /dev/mapper/sdX-plain
3、在根目录中设置安装
mkdir /root/encrypted
4、挂载
mount /dev/mapper/sdX-plain /root/encrypted/
5、完成之后卸载
cd /root/ && umount /root/encrypted && cryptsetup close sdX-plain
使用完文件系统后,需要先卸载,然后关闭映射的设备。
第四、如何在LUKS中使用dm-crypt
1、将LUKS标头添加到块设备
cryptsetup luksFormat /dev/sdX
2、打开LUKS容器并将其映射到虚拟设备
cryptsetup luksOpen /dev/sdX sdX-luks
3、创建一个ext4文件系统
mkfs.ext4 /dev/mapper/sdX-luks
4、挂载
mount /dev/mapper/sdX-luks /root/encrypted/
5、使用完就需要卸载
cd /root/ && umount /root/encrypted && cryptsetup luksClose sdX-luks
第五、加密交换分区
1、修改文件
在文本编辑器中打开/etc/crypttab并添加以下行
swap-encrypted /dev/sdX /dev/urandom swap,noearly
2、继续添加文件/etc/fstab
/dev/mapper/swap-encrypted none swap sw 0 0
最后重启服务器生效。
参考文章:https://www.linode.com/docs/security/encrypt-data-disk-with-dm-crypt/