磁盘加密工具cryptsetup

原理:cryptsetup其实是一种设备的映射关系,我们用它来把一个设备映射成另外一个设备,然后对这个新的设备进行操作,并进行加密,这样就不会使我们的原设备直接被使用,从而达到一种安全的效果。


1、对磁盘设置密码

[root@super ~]# cryptsetup luksFormat /dev/sdb5

磁盘加密工具cryptsetup_第1张图片
注意两点:

  • 确认一定要敲大写的“YES”;
  • 密码要足够复杂,不能过短、基于字典等。

2、打开映射(映射到/dev/mapper)

[root@super ~]# cryptsetup luksOpen /dev/sdb5 xuegod_disk

磁盘加密工具cryptsetup_第2张图片


3、查看映射设备的状态

[root@super ~]# cryptsetup status xuegod_disk     #映射也可用绝对路径

磁盘加密工具cryptsetup_第3张图片


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

系统出现输入密码的界面(需要输入磁盘密码方可启动):
磁盘加密工具cryptsetup_第4张图片

输入正确密码,查看挂载情况:

[root@super ~]# df -Th

磁盘加密工具cryptsetup_第5张图片
尝试挂载设备/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选项打开即可:
磁盘加密工具cryptsetup_第6张图片
此外,清空配置文件/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.cn/thread-14738-1-1.html
(扫盲 dm-crypt——多功能 Linux 磁盘加密工具(兼容 TrueCrypt & VeraCrypt))

你可能感兴趣的:(linux下的小工具)