且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Linux磁盘加密

更新时间:2022-09-29 23:18:23

 使用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上。



本文转自 dengaosky 51CTO博客,原文链接:http://blog.51cto.com/dengaosky/1852681,如需转载请自行联系原作者