RHEL6 cryptsetup 磁盘分区加密实验

    LUKS是为Linux硬盘加密标准。通过提供一个标准的磁盘上的格式,它不仅方便之间分布的兼容性,而且还提供了多个用户密码的安全管理。必须首先对加密的卷进行解密,才能挂载其中的文件系统。

    系统加密:【工具:cryptsetup;常用参数:luksFormat、luksOpen、luksClose、luksAddKey】【涉及文件:/etc/crypttab;自己创建密码文件】
    注意:上述参数大小写不能乱用
    好了,来试试这个强大的工具吧~ 
一、划出一个分区进行测试(fdisk)
--->这里以我的机子为例,因为我把空间全做成lvm了,所以分区就不一样啦,我们取300M做实验吧。
[root@desktop21 Desktop]# vgdisplay 

  --- Volume group ---

  VG Name               vol0

  System ID             

  Format                lvm2

  Metadata Areas        2

  Metadata Sequence No  27

  VG Access             read/write

  VG Status             resizable

  MAX LV                0

  Cur LV                4

  Open LV               3

  Max PV                0

  Cur PV                2

  Act PV                2

  VG Size               55.22 GiB

  PE Size               32.00 MiB

  Total PE              1767

  Alloc PE / Size       928 / 29.00 GiB

  Free  PE / Size       839 / 26.22 GiB (还26G,够了吧,我只需要300M做实验)

  VG UUID               ZAGsPK-tIBO-08bd-RoMp-fPeC-Ei5l-x3asx6

 

[root@desktop21 Desktop]# lvcreate -L 300M -n testlv /dev/vol0 

  Rounding up size to full physical extent 320.00 MiB

  Logical volume "testlv" created
 
--->ok,生成testlv分区,320M(跟PE有关)
 
二、分区加密(cryptsetup luksFormat,注意分区先不要格式化!)
[root@desktop21 Desktop]# cryptsetup luksFormat /dev/vol0/testlv 

 

WARNING!

========

This will overwrite data on /dev/vol0/testlv irrevocably.

 

Are you sure? (Type uppercase yes): YES (注意,只能是大写字母)

Enter LUKS passphrase:  (输入密码)

Verify passphrase:  (确认密码)
 
三、好了,密码创建好了,我们解密了把它格式化一下吧,格式化了才能挂载呀。(不解密的话是不能对它进行操作的)
1、[root@desktop21 Desktop]# cryptsetup luksOpen /dev/vol0/testlv testlv

Enter passphrase for /dev/vol0/testlv:  (输入密码进行验证!)
--->注意,命令最后写了一个映射的设备名“testlv”,来看看吧
[root@desktop21 Desktop]# ll /dev/mapper/testlv  /dev/vol0/testlv 

lrwxrwxrwx. 1 root root 7 Aug  4 15:17 /dev/mapper/testlv -> ../dm-7

lrwxrwxrwx. 1 root root 7 Aug  4 15:17 /dev/vol0/testlv -> ../dm-6
--->两个其实是同一个的。命令中必须得加上映射的名称,可以自己man一下cryptsetup
2、[root@desktop21 Desktop]# mkfs.ext4 /dev/mapper/testlv 

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

81600 inodes, 325632 blocks

16281 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=67633152

40 block groups

8192 blocks per group, 8192 fragments per group

2040 inodes per group

Superblock backups stored on blocks: 

 8193, 24577, 40961, 57345, 73729, 204801, 221185

 

Writing inode tables: done                            

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done

 

This filesystem will be automatically checked every 37 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.
--->ok,很快就格式化好了,那就新建一个目录挂载吧!
3、[root@desktop21 Desktop]# mkdir /testlv

[root@desktop21 Desktop]# mount /dev/mapper/testlv /testlv/

[root@desktop21 Desktop]# df -h /testlv/

Filesystem            Size  Used Avail Use% Mounted on

/dev/mapper/testlv    308M   11M  283M   4% /testlv

--->想要开机自动挂载?写道fstable里吧

[root@desktop21 Desktop]# vim /etc/fstab  (加上这一行)

/dev/mapper/testlv      /testlv                 ext4    defaults        0 0
【就这样重启是不会挂载上的,为什么? 没有写入配置文件告诉系统我有加密分区。好,再继续测试】
 
四、写配置文件,让系统知道
[root@desktop21 Desktop]# vim /etc/crypttab (加入这一行,具体分区自己改)

testlv          /dev/sda5
--->保存退出,重启,怎么样要求你输入密码了吧。乱敲几个字符试试?不行,不能进去。好了,输入正确的密码进去吧。
--->密码忘记了怎么办呢?没关系【ctrl+c】三次看看,^_^,不要求你输入了,进入系统~
--->df看一下,没挂载上吧?当然,你密码都没有输入,分区怎么会让你看到?
【注意:当你将该分区挂载成要备份检测时,即为1 2时,取消输入会出现错误,提示让你输入管理员密码进行维护,没关系,将新加进的一行注释掉再进去改吧】
 
五、系统检测到了,但是钥输入密码呀,必须得有人敲入密码,有没有一劳永逸的,每次自动从文见获取我的密码?(这样数据就没起到保护作用了哦,很不安全的,建议不要这样)但还是来测试测试吧^_^
1、新建密码文件,路径随意啦,这里我新建了密码文件 /root/passlv
[root@desktop21 Desktop]# touch /root/passlv
2、修改配置文件,加入密码文件路径
[root@desktop21 Desktop]# vim /etc/crypttab (修改称这样,最后加入了密码文件的路径)
testlv          /dev/sda5       /root/passlv
3、执行命令,把密码写入到我的密码文件吧,修改权限,保证所属为root,且只有root可以读写
[root@desktop21 Desktop]# echo mypasswd >/root/passlv 

[root@desktop21 Desktop]# chown root /root/passlv 

[root@desktop21 Desktop]# chmod 600 /root/passlv 

[root@desktop21 Desktop]# cryptsetup luksAddKey /dev/vol0/testlv /root/passlv 

Enter any passphrase:  (输入之前密码)
--->注意这一步只能是对原分区进行密码生成,而不是映射路径 /dev/mapper/testlv,/etc/crypttab里边也必须是原分区。
--->我们看一下密码文件吧,对着吗?
[root@desktop21 Desktop]# cat /root/passlv 

mypasswd
--->ok,重启,不再输入密码了,登录成功,df看一下吧,有了没?
 
六、有问题了,密码明文的,还保密什么呀?干脆清空吧
[root@desktop21 Desktop]# echo >/root/passlv

[root@desktop21 Desktop]# cat /root/passlv 
 
--->没问题,改了,再做一个命令吧
[root@desktop21 Desktop]# cryptsetup luksAddKey /dev/vol0/testlv /root/passlv 

Enter any passphrase:  (还是输入之前的密码)
--->看看密码文件?
[root@desktop21 Desktop]# cat /root/passlv 
 
--->还是为空?管它呢,重启看看
--->竟然登录上了,没有输入密码?
--->呵呵,剩下的就自己测试吧,打字好累
【注意:为防止密码泄漏,可以在密码文件里写入任何内容,不会影响的。但是只要更改一次密码文件就必须执行一次命令cryptsetup luksAddKey,否则还是会出问题滴~】
好了,留下QQ345258361,我是作为笔记写的,胡乱写了一通,有问题的地方还请不吝指正哦。