原理:cryptsetup其实是一种设备的映射关系,我们用它来把一个设备映射成另外一个设备,然后对这个新的设备进行操作,并进行加密,这样就不会使我们的原设备直接被使用,从而达到一种安全的效果。
[root@super ~]# cryptsetup luksFormat /dev/sdb5
[root@super ~]# cryptsetup luksOpen /dev/sdb5 xuegod_disk
[root@super ~]# cryptsetup status xuegod_disk #映射也可用绝对路径
[root@super ~]# mkfs.xfs /dev/mapper/xuegod_disk #设备格式化
meta-data=/dev/mapper/xuegod_disk isize=256 agcount=4, agsize=31872 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=127488, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@super ~]# mkdir /root/mount/xuegod_disk #创建挂载点
[root@super ~]# mount /dev/mapper/xuegod_disk !$ #挂载
mount /dev/mapper/xuegod_disk /root/mount/xuegod_disk
[root@super ~]# df -Th | tail -1 #查看是否挂载成功
/dev/mapper/xuegod_disk xfs 495M 26M 470M 6% /root/mount/xuegod_disk
① 修改配置文件/etc/crypttab–>加入映射关系
[root@super ~]# vim /etc/crypttab
[root@super ~]# cat /etc/crypttab
xuegod_disk /dev/sdb5
文件/etc/crypttab中对应填入:
映射设备名 加密设备 密码文件(为空时表示开机需要手动输入密码)
②设置开机自动挂载:
[root@super ~]# blkid /dev/mapper/xuegod_disk
/dev/mapper/xuegod_disk: UUID="f6bd6551-8bbb-4f67-bcb1-dfc4ac28b6d7" TYPE="xfs"
[root@super ~]# vim /etc/fstab
[root@super ~]# tail -1 /etc/fstab
UUID="f6bd6551-8bbb-4f67-bcb1-dfc4ac28b6d7" /root/mount/xuegod_disk xfs defaults 0 0
[root@super ~]# blkid /dev/sdb5
/dev/sdb5: UUID="6b54d2b1-5b0e-4481-9cf1-35bceea12717" TYPE="crypto_LUKS"
[root@super ~]# reboot
输入正确密码,查看挂载情况:
[root@super ~]# df -Th
[root@super ~]# mount /dev/sdb5 /root/mount/sdb5
mount: unknown filesystem type 'crypto_LUKS'
①创建密钥文件:
[root@super ~]# touch xuegod_passwd
[root@super ~]# cryptsetup luksAddKey /dev/sdb5 ./xuegod_passwd
Enter any passphrase: -->输入磁盘密码
②在配置文件/etc/crypttab中加入密钥文件
[root@super ~]# vim /etc/crypttab
[root@super ~]# cat /etc/crypttab
xuegod_disk /dev/sdb5 /root/xuegod_passwd
此后开机时自动导入密码,不必手动输入密码
(1)此时已经设置完成,以后就可以像使用正常设备一样,使用虚拟出来的 /dev/mapper/xuegod_disk
来做任何操作了,直接格式化可以,拿来做pv也可以,但同时以后也就不能直接使用设备/dev/sdb5了。
若不用设备/dev/mapper/xuegod_disk时,将其关闭(先卸载后关闭):
[root@super ~]# umount /dev/mapper/xuegod_disk
[root@super ~]# cryptsetup luksClose xuegod_disk
需要使用时重新使用luksOpen选项打开即可:
此外,清空配置文件/etc/crypttab重启系统后将不会自动开启映射设备,此时同时也要注释掉/etc/fstab文件中相应的自动挂载信息,否则系统将无法正常启动。
(2)设备加密后的特点:
鉴于以上特点全都是基于加密后,故研究出加密设备解除封印之秘法:
先关闭映射设备,再进行强制格式化(-f选项)
[root@super ~]# cryptsetup luksClose xuegod_disk
[root@super ~]# mkfs.xfs -f /dev/sdb5
meta-data=/dev/sdb5 isize=256 agcount=4, agsize=32000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=128000, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal log bsize=4096 blocks=853, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@super ~]# blkid /dev/sdb5
/dev/sdb5: UUID="f6023376-7609-4b61-9d80-b4dfdab7529e" TYPE="xfs"
此时尝试开启映射设备:
[root@super ~]# cryptsetup luksOpen /dev/sdb5 xuegod_disk
Device /dev/sdb5 is not a valid LUKS device.
起飞失败 ↑o↑
(3)扩展(引用于总结Ⅲ外链):
从理论上讲:任何一种磁盘加密工具,(在不借助外部机制的情况下)都【不可能】实现真正的“自启动全盘加密”。
为啥捏?因为要想【自启动】,必须要有一个引导程序(在MBR中),至少这个引导程序不能加密(引导程序如果被加密了,就无法引导启动了)。所以,凡是能够实现“自启动全盘加密”的,其【引导程序】都是明文的(无加密的)
比如 TrueCrypt 和 VeraCrypt 进行全盘加密,都会替换原有的主引导扇区(MBR)的内容,在里面放入一段代码。这段代码会在开机启动的时候,提示你输入密码,然后用你输入的密码进行解密。
对于 dm-crypt 的全盘加密,除了“主引导扇区”【没有】加密,还包括 /boot 分区也【没有】加密(因为/boot 分区要引导管理器和内核)。
Ⅰ、cryptsetup常用参数:
Ⅱ、/etc/crypttab:映射关系配置文件
在里面填入三项:映射设备名 加密设备 密钥文件
系统启动时后会自动读取该文件中的内容
当注释掉该文件内容时务必也要注释掉自动挂载文件(/etc/fstab)中与之相关的内容,否则系统开不鸟 ←o→
Ⅲ、薄主在开元中文社区找到一篇介绍磁盘加密的文章,写的很不错,推荐大家瞧一瞧 ↓o↓
https://linux.cn/thread-14738-1-1.html
(扫盲 dm-crypt——多功能 Linux 磁盘加密工具(兼容 TrueCrypt & VeraCrypt))