首页 > 代码库 > [cipher][archlinux][disk encryption][btrfs] 磁盘分区加密 + btrfs
[cipher][archlinux][disk encryption][btrfs] 磁盘分区加密 + btrfs
科普链接:https://wiki.archlinux.org/index.php/Disk_encryption
前面的链接关于硬盘加密,讲了几种,基本上就是选dm-crypt with LUKS
在grub中,解密根分区以及/boot分区。
dm-crypt文档:https://wiki.archlinux.org/index.php/Dm-crypt
使用 dm-crypt加密一个非根分区。https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_a_non-root_file_system
dm-crypt 的两种加密方式: PLAIN, LUKS(Linux Unified Key Setup)。
具体什么区别我也不太知道,简单来说就是LUKS在文件系统(硬盘分区?)里存储了与加密信息加密方式相关的元数据。而PLAIN中没有。LUKS是dm-crypt的默认方式。
一堆破文档,都不及man手册讲的清楚。
DESCRIPTION cryptsetup is used to conveniently setup dm-crypt managed device-mapper mappings. These include plain dm-crypt volumes and LUKS volumes. The difference is that LUKS uses a metadata header and can hence offer more features than plain dm-crypt. On the other hand, the header is visible and vulnerable to damage.
这个man,写的这么好,在我看过的man里边可以排前三。
/home/tong/bin [tong@T7] [19:24] > man cryptsetup
一: 弄了台虚拟机做实验先:
[root@t206 arch-crypt]# qemu-system-x86_64 -vnc 0.0.0.0:1 --enable-kvm -smp 1 -m 1G -drive file=disk.qcow2,if=virtio -net bridge -net nic,model=virtio -cdrom ../iso/archlinux-2017.05.01-x86_64.iso
二: 加密非根分区
1. 格式化LUKS分区
root@archiso ~ # cryptsetup luksFormat /dev/vda WARNING! ======== This will overwrite data on /dev/vda irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase: Verify passphrase: cryptsetup luksFormat /dev/vda 5.00s user 0.01s system 41% cpu 12.157 total root@archiso ~ #
后边还能加一个参数 keyfile。意思是将keyfile里边的内容作为密码。
2. 挂载加密分区(解密)
root@archiso ~ # cryptsetup open /dev/vda vd_root Enter passphrase for /dev/vda: root@archiso ~ # ll /dev/mapper/vd_root lrwxrwxrwx 1 root root 7 Jun 1 11:58 /dev/mapper/vd_root -> ../dm-0
3. 初始化文件系统
root@archiso ~ # mkfs.xfs /dev/mapper/vd_root
4. 挂载使用
root@archiso ~ # mount /dev/mapper/vd_root mnt root@archiso ~ # ll total 9 -rw-r--r-- 1 root root 8864 May 1 07:04 install.txt drwxr-xr-x 2 root root 6 Jun 2 01:56 mnt root@archiso ~ # cd mnt root@archiso ~/mnt # ll total 0 root@archiso ~/mnt # touch 123 root@archiso ~/mnt # touch txt root@archiso ~/mnt # vim txt root@archiso ~/mnt # cat txt 123456 root@archiso ~/mnt # ls 123 txt root@archiso ~/mnt # ll total 4 -rw-r--r-- 1 root root 0 Jun 2 01:57 123 -rw-r--r-- 1 root root 7 Jun 2 01:57 txt root@archiso ~/mnt # cd ..
5. 卸载关闭
root@archiso ~ # umount mnt root@archiso ~ # cryptsetup close vd_root root@archiso ~ # ll /dev/mapper total 0 crw------- 1 root root 10, 236 Jun 1 11:58 control root@archiso ~ #
三, 加密全系统
https://wiki.archlinux.org/index.php/Dm-crypt/Encrypting_an_entire_system
有多种方式,以及包括boot分区加密等。内容很多
boot分区,MBR加密:https://wiki.archlinux.org/index.php/Dm-crypt/Specialties#Securing_the_unencrypted_boot_partition
chkboot(检查分区是否被串改?)
首先,我选用简单的方法,在LUKS上创建btrfs。查看上述文档的btrfs章节。
btrfs的详细内容,branch到这里:http://www.cnblogs.com/hugetong/p/6934247.html
全系统加密的关键在于,initrd,grub,boot partition,以及kernel。
分区什么的,与非根分区没什么区别,不再叙述。
[cipher][archlinux][disk encryption][btrfs] 磁盘分区加密 + btrfs