您的位置:首页 > 运维架构 > Linux

Linux磁盘加密

2016-09-14 12:56 239 查看
使用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使其开机时使用密码文件,自动解密;

# vim /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上。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息