LUKS是为Linux硬盘加密标准。通过提供一个标准的磁盘上的格式,它不仅方便之间分布的兼容性,而且还提供了多个用户密码的安全管理。必须首先对加密的卷进行解密,才能挂载其中的文件系统。
系统加密:【工具:cryptsetup;常用参数:luksFormat、luksOpen、luksClose、luksAddKey】【涉及文件:/etc/crypttab;自己创建密码文件】
注意:上述参数大小写不能乱用
好了,来试试这个强大的工具吧~
一、划出一个分区进行测试(fdisk)
—>这里以我的机子为例,因为我把空间全做成lvm了,所以分区就不一样啦,我们取300M做实验吧。
[root@www.linuxidc.com 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@www.linuxidc.com 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@www.linuxidc.com 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@www.linuxidc.com Desktop]# cryptsetup luksOpen /dev/vol0/testlv testlv
Enter passphrase for /dev/vol0/testlv: (输入密码进行验证!)—>注意,命令最后写了一个映射的设备名“testlv”,来看看吧
[root@www.linuxidc.com 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@www.linuxidc.com 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@www.linuxidc.com Desktop]# mkdir /testlv
[root@www.linuxidc.com Desktop]# mount /dev/mapper/testlv /testlv/
[root@www.linuxidc.com Desktop]# df -h /testlv/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/testlv 308M 11M 283M 4% /testlv
—>想要开机自动挂载?写道fstable里吧
[root@www.linuxidc.com Desktop]# vim /etc/fstab (加上这一行)
/dev/mapper/testlv /testlv ext4 defaults 0 0【就这样重启是不会挂载上的,为什么? 没有写入配置文件告诉系统我有加密分区。好,再继续测试】
四、写配置文件,让系统知道[root@www.linuxidc.com Desktop]# vim /etc/crypttab (加入这一行,具体分区自己改)
testlv /dev/sda5—>保存退出,重启,怎么样要求你输入密码了吧。乱敲几个字符试试?不行,不能进去。好了,输入正确的密码进去吧。
—>密码忘记了怎么办呢?没关系【ctrl+c】三次看看,^_^,不要求你输入了,进入系统~
—>df看一下,没挂载上吧?当然,你密码都没有输入,分区怎么会让你看到?
【注意:当你将该分区挂载成要备份检测时,即为1 2时,取消输入会出现错误,提示让你输入管理员密码进行维护,没关系,将新加进的一行注释掉再进去改吧】
五、系统检测到了,但是钥输入密码呀,必须得有人敲入密码,有没有一劳永逸的,每次自动从文见获取我的密码?(这样数据就没起到保护作用了哦,很不安全的,建议不要这样)但还是来测试测试吧^_^
1、新建密码文件,路径随意啦,这里我新建了密码文件 /root/passlv
[root@www.linuxidc.com Desktop]# touch /root/passlv2、修改配置文件,加入密码文件路径
[root@www.linuxidc.com Desktop]# vim /etc/crypttab (修改称这样,最后加入了密码文件的路径)testlv /dev/sda5 /root/passlv
3、执行命令,把密码写入到我的密码文件吧,修改权限,保证所属为root,且只有root可以读写
[root@www.linuxidc.com Desktop]# echo mypasswd >/root/passlv
[root@www.linuxidc.com Desktop]# chown root /root/passlv
[root@www.linuxidc.com Desktop]# chmod 600 /root/passlv
[root@www.linuxidc.com Desktop]# cryptsetup luksAddKey /dev/vol0/testlv /root/passlv
Enter any passphrase: (输入之前密码)—>注意这一步只能是对原分区进行密码生成,而不是映射路径 /dev/mapper/testlv,/etc/crypttab里边也必须是原分区。
—>我们看一下密码文件吧,对着吗?
[root@www.linuxidc.com Desktop]# cat /root/passlv
mypasswd—>ok,重启,不再输入密码了,登录成功,df看一下吧,有了没?
六、有问题了,密码明文的,还保密什么呀?干脆清空吧
[root@www.linuxidc.com Desktop]# echo >/root/passlv
[root@www.linuxidc.com Desktop]# cat /root/passlv
—>没问题,改了,再做一个命令吧
[root@www.linuxidc.com Desktop]# cryptsetup luksAddKey /dev/vol0/testlv /root/passlv
Enter any passphrase: (还是输入之前的密码)—>看看密码文件?
[root@www.linuxidc.com Desktop]# cat /root/passlv
—>还是为空?管它呢,重启看看
—>竟然登录上了,没有输入密码?
—>呵呵,剩下的就自己测试吧,打字好累
【注意:为防止密码泄漏,可以在密码文件里写入任何内容,不会影响的。但是只要更改一次密码文件就必须执行一次命令cryptsetup luksAddKey,否则还是会出问题滴~】