使用LUKS加密安装ARCH LINUX与完整的硬盘加密
这是一个简短的教程,有关如何在使用LUKS(Linux Unified Key Setup)的完整硬盘加密的UEFI启用系统上安装Arch Linux。
luks是一种磁盘加密规范,可实现文件加密,磁盘加密,在一个捆绑中的数据加密。
Luks保护驱动器防止像盗窃等事物,但它不会在解锁后保护数据免受访问权限。
它可以与其他加密软件一起使用以实现防弹数据安全性。
在UEFI系统上使用LVM安装Arch Linux
此博客文章旨在填充磁盘加密的差距,所以绝对期待较少的理论。
这不应该在VP,VPS托管,VPS服务器,云VPS,VPS服务器上进行托管.C。
无论如何,所有这些首字母缩略词都具有相同的意义。
设置磁盘分区:
我的分区方案将具有/dev/sda1作为EFI分区,/dev/sda2为引导分区,/dev/sda3为lvm malical volume,/dev/arch/root作为root partition来安装Arch Linux,/dev/arch/home作为主分区,/dev/arch/swap作为交换分区。
分区的选择工具是分配的,我们也可以使用GDisk为MBR的EFI或者FDISK。
虽然分开了工作。
请用MBR替换GPT标签以获取正确的磁盘标签类型。
parted /dev/sda mklabel gpt mkpart ESP fat32 1MiB 200MiB set 1 boot on name 1 efi mkpart primary 200MiB 800MiB name 2 boot mkpart primary 800MiB 100% set 3 lvm on name 3 lvm print
配置luks.
下一步是加载内核模块以将Arch Linux与luks安装。
在使用频闪之前,请务必确保加载DM_CRYPT内核模块。
modprobe dm-crypt modprobe dm-mod
然后使用cryptseup命令继续创建加密设备。
cryptetup是与DM-Crypt接口的命令行工具,用于创建,访问和管理加密设备。
cryptetsup支持不同的加密类型,依赖于Linux内核D
Sevicemapper和
crypt`的oglic模块。
该工具使用如下:
# cryptsetup <OPTIONS> <action> <action-specific-options> <device> <dmname>
通过设备-Apper访问的设备称为BlockDevices。
我们可以使用以下方式查看可用选项:
$cryptsetup --help
现在让我们在/dev/sda3上创建一个新的luks设备
# cryptsetup luksFormat -v -s 512 -h sha512 /dev/sda3
使用的选项:
luksformat:格式化luks设备-v, - 鼠标:显示更详细的错误消息-s,-key-size:加密密钥的大小,在这种情况下为512位。
-h,-hash:散列用于从密码组创建加密密钥
执行上面的命令时,我们将获得警告消息。
只需输入"是"继续,然后输入和验证密码才能使用。
现在我们已创建Luks加密设备,我们需要将设备打开为映射<name>。
语法是:
# cryptsetup open <device> <name>
<name>是在/dev/mapper下创建的设备<devicer <device>是加密设备
所以我的样子看起来如下:
# cryptsetup open /dev/sda3 luks_lvm
LVM配置
对于那些新的LVM,LVM的基本构建块是:
物理卷(PV) - 在硬盘上的分区(甚至是磁盘本身或者环回文件),我们可以其中具有卷组。
- 它有一个特殊的标题,分为物理范围。
- 将物理量视为用于构建硬盘的大构件块。
卷组(vg) - 用作存储卷的物理卷组(作为一个磁盘)。
- 它们包含逻辑卷。
- 将音量组视为硬盘驱动器。
逻辑卷(LV) - 驻留在卷组中的"虚拟/逻辑分区",由物理范围组成。
- 将逻辑卷视为正常分区。
物理范围(PE) - 可以分配给逻辑卷(默认4MIB)的物理卷中的最小尺寸。
- 将物理扩展名视为可以分配给任何分区的磁盘的一部分。
配置部分:
创建物理卷:
pvcreate /dev/mapper/luks_lvm
创建名为ARCH的卷组:
vgcreate arch /dev/mapper/luks_lvm
为root,home和swap分区创建逻辑卷:
lvcreate -n home -L 70G arch lvcreate -n root -L 120G arch lvcreate -n swap -L 1G -C y arch
格式化分区:
mkfs.fat -F32 /dev/sda1 mkfs.ext4 /dev/sda2 mkfs.btrfs -L root /dev/mapper/arch-root mkfs.btrfs -L home /dev/mapper/arch-home mkswap /dev/mapper/arch-swap
安装分区:
swapon /dev/mapper/arch-swap swapon -a ; swapon -s mount /dev/mapper/arch-root /mnt mkdir -p /mnt/{home,boot} mount /dev/sda2 /mnt/boot mount /dev/mapper/arch-home /mnt/home mkdir /mnt/boot/efi mount /dev/sda1 /mnt/boot/efi
确认全部是否正确安装:
lsblk -f
安装Arch Linux:
安装基本系统:
pacstrap /mnt base base-devel efibootmgr vim dialog \ xterm btrfs-progs grub --noconfirm
生成fstab文件:
genfstav -U -p /mnt > /mnt/etc/fstab
切换到Chroot环境:
arch-chroot /mnt /bin/bash
配置mkinitcpio
vim /etc/mkinitcpio.conf
向下滚动直到找到挂钩部分。
然后在文件系统之前添加这些行:
encrypt lvm2
钩子由其名称引用,并按照它们在CONFIG文件中的挂钩设置中的顺序执行。
挂钩线看起来像这样:
HOOKS="base udev autodetect modconf block encrypt lvm2 filesystems keyboard fsck"
生成新的initramfs镜像:
mkinitcpio -v -p linux
安装grub并生成grub.cnf文件:
pacman -s grub --noconfirm grub-install --efi-directory=/boot/efi
配置内核参数
为了启用引导加密的根分区,需要设置以下内核参数的子集。
如果使用加密挂钩,请将选项添加到内核参数。
要修改的文件是/etc/default/grub。
cryptdevice=/dev/<partition>:devicemapper_name cryptkey=<path>
设备是备份加密设备的设备的路径。
devicemapper_name是解密后给设备的设备 - 映射器名称,它将可用为/dev/mapper/devicemapper_name。
例如:
GRUB_CMDLINE_LINUX_DEFAULT="quiet resume=/dev/mapper/swap \ cryptdevice=/dev/sda3:luks_lvm"
请注意,在生成引导配置之前,最能添加到/etc/default/grub中的相关参数。
在引导时解锁根分区(可选)
要在使用密钥文件中解锁root文件系统,我们必须生成密钥文件,给出合适的权限并将其添加为luks密钥:
dd if=/dev/urandom of=/crypto_keyfile.bin bs=512 count=10 chmod 000 /crypto_keyfile.bin chmod 600 /boot/initramfs-linux* cryptsetup luksAddKey /dev/sda3 /crypto_keyfile.bin
现在包括/crypto_keyfile.bin文件在mkinicpio.conf文件中指令下的文件下。
# vim /etc/mkinitcpio.conf Add: FILES=/crypto_keyfile.bin
重新生ramdisk文件。
mkinitcpio -p linux
重新生格grub.cfg文件:
grub-mkconfig -o /boot/grub/grub.cfg grub-mkconfig -o /boot/efi/EFI/arch/grub.cfg
后安装配置。
剩下的部分是安装Xorg Server,PulseAudio,Alsa实用程序,Synaptics TouchPad驱动程序,设置root密码,添加标准用户帐户,设置时区,添加AUR和Multilib存储库等基本软件包。
我写了一个简单的bash脚本来自动执行此过程。
以下是如何使用脚本的过程。
pacman -S git --noconfirm git clone https://github.com/jmutai/dotfiles.git cp dotfiles/setup/pacman.conf /etc/pacman.conf cp dotfiles/setup/live-setup.sh . chmod +x live-setup.sh ./live-setup.sh
我们可以修改Live-Setup脚本以更改TimeZone设置和系统主机名。
I3的安装可以用桌面环境替换。
安装成功后,退出Chroot环境,卸载分区并重新启动系统。
exit umount -R /mnt reboot