使用LUKS加密安装ARCH LINUX与完整的硬盘加密

时间:2020-02-23 14:44:47  来源:igfitidea点击:

这是一个简短的教程,有关如何在使用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内核DSevicemapper和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