linux系统中有很多的磁盘设备,通常我们希望对它们进行加密,这样会更加的安全。LUKS(linux统一密钥设置)是标准的设备加密格式。LUKS可以对分区或者卷进行加密。尤其要注意的是:必须首先对加密的卷进行解密,才能挂载其中的文件系统。
下面我们来举个栗子看看什么是LUKS。
1.前期准备
支持LUKS的命令是cryptsetup(默认已经安装),如果我们想要看到它所支持的命令,键入命令:
注意观察这几个命令,它们在接下来的操作中将会经常用到:
为了做这个实验,我们重新生成一个设备,生成设备的步骤如下:
2.初识LUKS
cryptsetup其实是一种设备的映射关系,我们用它来把一个设备映射成另外一个设备,然后对这个新的设备进行操作,并进行加密,这样就不会使我们的原设备直接被使用,从而达到一种安全的效果。使用cryptsetup对分区进行了加密后,这个分区就不再允许直接挂载。LUKS也是一种基于device mapper 机制的加密方案。如果要使用这个分区,必须对这个分区做一个映射,映射到/dev/mapper这个目录里去,我们只能挂载这个映射才能使用。然而做映射的时候是需要输入解密密码的。具体的操作如下。
(1)首先对分区进行初始化
注意:这里要大写YES!! 然后输入该设备的密码
(2)映射分区,打开LUKS
这个步骤是把原设备转换成/dev/mapper下的设备,赋予了它新的名字,这个过程需要输入刚才设置的密码。而且操作完以后我们可以看到/dev/mapper这个目录里边确实多了一个disk。
(3)我们确实有了一个设备,但是记住这个设备是不能被直接使用的,必须要对它进行格式化。
(4)完成之后我们对disk进行挂载,挂载是成功的。
(5)之前的实验我们似乎并没有看到LUKS安全到哪里了,只是把原来的设备变了一个名字使用,接着我们关闭映射,然后把原来的设备/dev/vda7挂载上去看看有什么提示:
显然是挂不上的,因为我们已经把它映射到另外一个设备disk了,这样就极大加强了设备的安全性,接着开启luks:
刚才我们已经挂载了映射设备disk,但是却是手动的,我们想要永久的挂载,那么就必须要写入配置文件/etc/fstab中了,但是我们的挂载在开机时是需要输入密码的,显然每次都让人去输入是不合乎常理的,所以也要新建一个文件来存入luks的开启密码,并且指定该文件为密钥文件,首先演示没有进行这些操作时的情况,开机时是要输入密码的,正确的话设备会被挂载,错误的话最多设备不会被挂载,系统依然能够启动:
但这样很麻烦,我们进入永久挂载方法。
1.写入配置文件/etc/fstab
2.写入luks的配置文件/etc/crypttab
3.我们设定/root/password为密钥文件,但是这个文件是不存在的,要建立它而且要设置一些权限问题。
这个是disk的luks密码:
改变权限:
4.最后一步,我们要把这个文件增添到这个luks中,让它能够自动识别。
这样我们就实现了映射设备disk的开机后自动挂载了,但是这个在redhat6.0是官方的已知bug,每次开机时要重新输入密码。其他的版本没有问题,如果操作失败的化请确定你的selinux是否关闭。好了大家可以去尝试一下。哦,如果你测试完后不想设备继续加密,关掉luks的情况下,把原来的设备/dev/vda7重新进行格式化就可以使用了。
这个帖子就讲到这里,关于设备的安全还有很多方面需要考虑,以后再继续讨论。