使用crypto可以对多数类unix系统中的块设备进行底层数据加密,即在文件系统之下加密。对块设备加密完成后,再对该设备进行文件系统的格式化处理。对加密后的设备进行使用,需通过打开设备(这是需要输入密码)、挂载设备两步来实现。加密设备的退卸,反之即可。
若需开机自动挂载(即在/etc/fstab里指明),密码读取的方式可以通过两种方法:手动输入、使用/etc/crypttab指定设备对应的密码文件。接下来首先看如何一步一步实现设备加密。
一、 块设备加密
a) 创建新的块设备(磁盘、分区、块设备的文件等);
# fdisk -cu /dev/sdb
n-p-1-+100M-w
# partprobe /dev/sdb
b) 使用cryptsetup luksFormat命令把块设备格式化为加密设备,当需要输入yes时记得是大写;
cryptsetup luksFormat /dev/sdb1
YES \\确认加密
redhat \\输入密码
redhat \\重复密码
c) 使用cryptsetup luksOpen打开设备;
# cryptsetup luksOpen /dev/sdb1 newsdb1 \\与上述格式化输入的密码保持一致
d) 格式化打开的设备;
# ll /dev/mapper/
total 0
crw-rw----. 1 root root 10, 58 Sep 14 13:00 control
lrwxrwxrwx. 1 root root 7 Sep 14 13:11 newsdb1 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Sep 14 13:00 VolGroup-lv_root -> ../dm-0
lrwxrwxrwx. 1 root root 7 Sep 14 13:00 VolGroup-lv_swap -> ../dm-1
# mkfs.ext4 /dev/mapper/newsdb1
e) 修改/etc/fstab使其开机自动挂载;
# vim /etc/fstab
默认添加以下内容:
/dev/mapper/newsdb1 /home ext4 defaults 0 0
# vim /etc/crypttab
newsdb1 /dev/sdb1 none \\此时需要在开机过程中输入密码才可进入系统
f) 使用cryptsetup luksAddKey给加密设备添加密码文件;
# touch sdb1passwd
# echo -n "redhat" >> sdb1passwd
# chmod 600 sdb1passwd
# cryptsetup luksAddKey /dev/sdb1 /root/sdb1passwd \\与上述格式化输入的密码保持一致
g) 修改/etc/crypttab使其开机时使用密码文件,自动解密;
添加以下内容:
newsdb1 /dev/sdb1 /root/sdb1passwd
h) 开机测试(reboot)
# mount
/dev/mapper/newsdb1 on /home type ext4 (rw)
# cryptsetup status /dev/mapper/newsdb1
/dev/mapper/newsdb1 is active and is in use.
type: LUKS1
cipher: aes-cbc-essiv:sha256
keysize: 256 bits
device: /dev/sdb1
offset: 4096 sectors
size: 220751 sectors
mode: read/write
I) 关闭加密盘
# umount /home/
# cryptsetup luksClose newsdb1 \\移除LUKS映射
Device newsdb1 is not active.
# cat /etc/crypttab \\清空文件
# cat /etc/fstab \\删除挂载信息
#/dev/mapper/newsdb1 /home ext4 defaults 0 0
# fdisk -cu /dev/sdb \\删除/dev/sdb1分区
结论:使用useradd创建的用户是保存在设备/dev/mapper/newsdb1上。
本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/1852681,如需转载请自行联系原作者