天天看点

磁盘加密解密技术

文章目录

      • 前言:
      • 工具:
      • 原理:
      • 操作步骤:
        • 1、对磁盘进行分区格式化
      • 2、对新建的分区进行加密
      • 3、挂载测试
          • 1、 加密情况下无法挂载
          • 2、打开映射
          • 3、查看映射状态
          • 4、对映射进行格式化和挂载
          • 5、格式化后映射进行挂载
      • 使用crysetup关闭分区

前言:

因为保密需要,一般系统会对文件或者磁盘进行加密。 今天我们来一起讨论下Linux磁盘的加密技术。

工具:

cryptsetup

原理:

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

操作步骤:

1、对磁盘进行分区格式化

2、对新建的分区进行加密

3、映射挂载测试

1、对磁盘进行分区格式化

一、进行分区

[[email protected] ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 8月  24 18:55 /dev/sdb
[[email protected] ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x5ca94e43 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
           

二、进行格式化

[email protected] ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 8月  24 19:09 /dev/sdb
brw-rw----. 1 root disk 8, 17 8月  24 19:09 /dev/sdb1
[[email protected] ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

           

mkfx.xfs 是centos 7中的 文件格式,mkfs.ext(1,2,3,4) 是对于centos 6 的文件格式

2、对新建的分区进行加密

[[email protected] ~]# cryptsetup luksFormat /dev/sdb1

WARNING!
========
这将覆盖 /dev/sdb1 上的数据,该动作不可取消。

Are you sure? (Type uppercase yes): YES
输入 /dev/sdb1 的口令:
确认密码:
密码质量检查失败:
 密码未通过字典检查 - 过于简单化/系统化
[[email protected] ~]# cryptsetup luksFormat /dev/sdb1

WARNING!
========
这将覆盖 /dev/sdb1 上的数据,该动作不可取消。

Are you sure? (Type uppercase yes): YES
输入 /dev/sdb1 的口令:   #密码数8位以上,不能过于简单化
确认密码:				
           

3、挂载测试

1、 加密情况下无法挂载
[[email protected] ~]# mount /dev/sdb1 /mnt
mount: 未知的文件系统类型“crypto_LUKS”
           
2、打开映射
[[email protected] ~]# cryptsetup luksOpen /dev/sdb1 my_disk
输入 /dev/sdb1 的口令:
           
3、查看映射状态
[[email protected] ~]# cryptsetup status my_disk
/dev/mapper/my_disk is active.
  type:    LUKS1
  cipher:  aes-xts-plain64
  keysize: 256 bits
  key location: dm-crypt
  device:  /dev/sdb1
  sector size:  512
  offset:  4096 sectors
  size:    41936896 sectors
  mode:    read/write
           
4、对映射进行格式化和挂载
[[email protected] ~]# mkfs.xfs /dev/mapper/my_disk 
meta-data=/dev/mapper/my_disk    isize=512    agcount=4, agsize=1310528 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242112, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
           
5、格式化后映射进行挂载
[[email protected] ~]# mount /dev/mapper/my_disk /mnt
[[email protected] ~]# df -h
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 894M     0  894M    0% /dev
tmpfs                    910M     0  910M    0% /dev/shm
tmpfs                    910M   11M  900M    2% /run
tmpfs                    910M     0  910M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G  4.0G   14G   24% /
/dev/sda1               1014M  184M  831M   19% /boot
tmpfs                    182M  4.0K  182M    1% /run/user/42
tmpfs                    182M   24K  182M    1% /run/user/0
/dev/sr0                 4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64
/dev/mapper/my_disk       20G   33M   20G    1% /mnt
           

可以看到已经挂载成功,挂载的是一个映射关系,而不是硬盘本身。

使用crysetup关闭分区

卸载映射

[[email protected] ~]# umount /mnt/
[[email protected] ~]# ll /dev/mapper/my_disk 
lrwxrwxrwx. 1 root root 7 8月  24 19:24 /dev/mapper/my_disk -> ../dm-2
           
[[email protected] ~]# cryptsetup luksClose /dev/mapper/my_disk 
[[email protected] ~]# ll /dev/mapper/my_disk
ls: 无法访问/dev/mapper/my_disk: 没有那个文件或目录
           

这里用的是luksClose ,关闭映射分区后,之前的映射分区就不存在了。

继续阅读