原理:cryptsetup其实是一种设备的映射关系,我们用它来把一个设备映射成另外一个设备,然后对这个新的设备进行操作,并进行加密,这样就不会使我们的原设备直接被使用,从而达到一种安全的效果。
使用cryptsetup对分区进行了加密后,这个分区就不再允许直接挂载。LUKS也是一种基于device mapper 机制的加密方案。如果要使用这个分区,必须对这个分区做一个映射,映射到/dev/mapper这个目录里去,我们只能挂载这个映射才能使用。然而做映射的时候是需要输入解密密码的。
Crypsetup工具加密的特点:
Ø加密后不能直接挂载
Ø加密后硬盘丢失也不用担心数据被盗
Ø加密后必须做映射才能挂载
注:要解除加密需要备份分区内的文件再重新格式化LUKS分区
1、对磁盘设置密码
[root@super ~]# cryptsetup luksFormat /dev/sdb5
磁盘设置密码
注意两点:
确认一定要敲大写的“YES”;
密码要足够复杂,不能过短、基于字典等。
2、打开映射(映射到/dev/mapper)
[root@super ~]# cryptsetup luksOpen /dev/sdb5 xuegod_disk
打开映射
3、查看映射设备的状态
[root@super ~]# cryptsetup status xuegod_disk #映射也可用绝对路径
查看映射设备
4、对映射的设备进行格式化、挂载
[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
5、设置开机自动启动
① 修改配置文件/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"
6、重启系统
[root@super ~]# reboot
系统出现输入密码的界面(需要输入磁盘密码方可启动):
系统重启界面
输入正确密码,查看挂载情况:
[root@super ~]# df -Th
设备挂载情况
尝试挂载设备/dev/sdb5:
[root@super ~]# mount /dev/sdb5 /root/mount/sdb5
mount: unknown filesystem type 'crypto_LUKS'
挂载失败
报错:未知的文件系统类型,该设备无法正常挂载使用
7、设置开机自动输入磁盘密码
①创建密钥文件:
[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
此后开机时自动导入密码,不必手动输入密码
8、一些后话
(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 分区要引导管理器和内核)。
9、全篇总结
Ⅰ、cryptsetup常用参数:
luksFormat:设定磁盘密码
luksOpen:开启映射设备
luksClose:关闭映射设备
luksAddKey:给映射设备添加密钥文件
luksRemoveKey:从映射中移除密钥文件(失效)
luksUUID:打印加密设备的UUID号
status:查看映射设备信息
Ⅱ、/etc/crypttab:映射关系配置文件
在里面填入三项:映射设备名 加密设备 密钥文件
系统启动时后会自动读取该文件中的内容
当注释掉该文件内容时务必也要注释掉自动挂载文件(/etc/fstab)中与之相关的内容,否则系统开不鸟 ←o→
Ⅲ、薄主在开元中文社区找到一篇介绍磁盘加密的文章,写的很不错,推荐大家瞧一瞧 ↓o↓
https://linux/thread-14738-1-1.html
(扫盲 dm-crypt——多功能 Linux 磁盘加密工具(兼容 TrueCrypt & VeraCrypt))
更多推荐
cryptsetup
发布评论