Proxmox VE 全盘加密
这篇文章记录如何给Proxmox VE加密部署
在安装PVE之前要先去安装一下Debian,在此基础之上去安装PVE。
此次安装的思路是,使用debian的livecd去分区,分区好了之后通过debootstrap去安装系统以及对应的配置。完成之后验证加密和远程解锁没有问题之后再去进行安装PVE。
安装Debian
准备工作
使用debian 12 livecd standard iso进行引导,引导完成之后启动ssh:
apt install -y ssh
systemctl start ssh
passwd user
之后我们就可以使用ssh进行链接了
ssh user@ip
sudo -i
安装必要的软件,这里需要有加密的和fat32系统以及引导支持:
apt install dosfstools cryptsetup efibootmgr
分区
此次的分区方案如下:
磁盘分区 | 文件系统 | 挂载点 |
---|---|---|
/dev/sdc1 | fat32 | /boot |
/dev/sdc2 | luks | none |
/dev/mapper/cryptlvm | pv | none |
/dev/pve/root | ext4 | / |
/dev/pve/swap | swap | none |
初始化引导分区:
mkfs.fat -F32 /dev/sdc1
LUKS初始化
cryptsetup luksFormat /dev/sdc2
打开luks分区:
cryptsetup luksOpen /dev/sdc2 cryptlvm
创建对应的pv和vg:
pvcreate /dev/mapper/cryptlvm
vgcreate pve /dev/mapper/cryptlvm
创建lv:
lvcreate -L 60G pve -n root
lvcreate -L 8G pve -n swap
初始化文件系统:
# Format swap
mkswap /dev/pve/swap
# Format root drive
mkfs.ext4 /dev/pve/root
创建挂载点:
mkdir -pv /mnt/debinst
挂载:
mount /dev/pve/root /mnt/debinst
创建boot的分区:
mkdir -pv /mnt/debinst/boot
挂载:
mount /dev/sdc1 /mnt/debinst/boot
debian debootstrap
安装debootstrap
apt-get install debootstrap
运行 debootstrap
debootstrap --arch amd64 bookworm \
/mnt/debinst https://mirrors.tuna.tsinghua.edu.cn/debian/
进入chroot:
LANG=C.UTF-8 chroot /mnt/debinst /bin/bash
创建块设备:
apt install makedev
mount none /proc -t proc
cd /dev
MAKEDEV generic
安装软件
安装必要的软件
apt install apt-transport-https ca-certificates aptitude vim dosfstools cryptsetup efibootmgr lvm2 -y
fstab
修改/etc/fstab
,内容如下,当前阶段可以只写一个 / 的挂载信息:
UUID=e355fefa-2699-42a4-af4d-0f6edb04f854 / ext4 rw,relatime 0 1
时区设置
重新配置tzdata的包根据提示进行选择:
dpkg-reconfigure tzdata
网络配置
修改/etc/network/interfaces
文件,内容如下:
auto enp5s4f0
iface enp5s4f0 inet static
address 192.168.100.254
network 192.168.100.0
netmask 255.255.255.0
broadcast 192.168.100.255
gateway 192.168.100.1
对应的dns配置如下:
echo nameserver 192.168.100.1 > /etc/resolv.conf
主机名配置:
echo pve.plz.ac > /etc/hostname
hosts配置 /etc/hosts
127.0.0.1 localhost
192.168.100.254 pve pve.plz.ac
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
这里要注意的是要有这一条 192.168.100.254 pve pve.plz.ac
ip pve pve的主机名这么个格式不然后续安装pve-manager会出问题。
APT国内源配置
修改为国内的清华源:
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
# deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
本地化配置
根据配置来即可:
aptitude install locales
dpkg-reconfigure locales
内核安装
直接安装stable的内核即可:
apt-get install linux-image-amd64
bootloader
安装Grub:
aptitude install grub-efi
安装Grub到引导分区:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Proxmox
修改grub的默认配置:
GRUB_CMDLINE_LINUX="crypt_root=UUID=ba8ae089-3095-44d6-bf09-c8f1bc3946de root=/dev/pve/root root_trim=yes rhgb alpha_support=1 loglevel=7"
生成配置:
grub-mkconfig -o /boot/grub/grub.cfg
ssh服务
安装ssh:
apt install ssh -y
设置root密码:
passwd
设置允许root登录/etc/ssh/sshd_config
PermitRootLogin yes
dropbear initramfs 配置
安装对应的包:
apt install cryptsetup-initramfs dropbear-initramfs
配置加密的设备:
vi /etc/crypttab
内容如下:
cryptlvm UUID=ba8ae089-3095-44d6-bf09-c8f1bc3946de none luks,discard
这里的cryptlvm就是标识要去解锁的名称,后续这个就是luks分区的uuid。
配置对应的ssh key /etc/dropbear/initramfs/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCdN7vodQHSRillTyvO7pZbGCVv2QOxBmbfuFSL7G/AXeRO36vKKGIE8KX+kxTGoOOUeNVF2oGaWacAc4Ma/0G2LKGO7qEQNasR9+urCqEV0su6r235BCZ1Omo3I025Sa52gq7Wuq6PDSs4m+8Q1pfeutWwXnk5E+tNFgyvMG1i4luCugPh2Zf2oQRg/z+XjK3H/0hHNqe1UB4jVnkEvplvbAT45JUKRwTKQuIM5QdHjHZqASu6qFNaDJAXh2qyMTGO96Ss5aj+mJOiSjsDyMiVZlGZr8JECduVfjmvv9Iicp7MXpIPYK0yySOZPJB7grDLkolT+ccwrQMkEs//oFkA7koIMvcOzhsCBiAL2AQ5qNAi4oaBexnW482muNhs/XXnG09mFy9Q66LWguS2MC5UWGoG1G67S3Pd2YcEiJrVO+WsjnR6tsuqFmd58D0UmvrgrtwEi3a+S9HXUYYjFfB+LJdzzRs4GDGAu5ZKfQqt/sbMH+F6wY4t08HdoOEmqtU= [email protected]
修改dropbear的配置 /etc/dropbear/initramfs/dropbear.conf
,添加内容如下:
DROPBEAR_OPTIONS="-I 180 -j -k -p 2222 -s -c cryptroot-unlock"
配置静态ip修改/etc/initramfs-tools/initramfs.conf
文件,内容如下:
IP=192.168.100.254::192.168.100.1:255.255.255.0:pve.plz.ac
更新initramfs:
update-initramfs -u -v
更新grub:
grub-mkconfig -o /boot/grub/grub.cfg
清理工作
清理掉apt的缓存和下载的包:
apt clean
退出livecd
exit
umount -R /mnt/debinst
重启:
reboot -f
重启之后就可以测试使用ssh进行解锁了。
安装PVE
安装proxmox
添加源:
echo "deb [arch=amd64] http://download.proxmox.com/debian/pve bookworm pve-no-subscription" > /etc/apt/sources.list.d/pve-install-repo.list
wget https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-bookworm.gpg
apt update && apt full-upgrade
安装pve的包内核,安装完成之后重启:
apt install proxmox-default-kernel
systemctl reboot
安装pve:
apt install proxmox-ve postfix open-iscsi chrony -y
安装完成之后可以选择直接重启机器然后打开浏览器:
https://ip:8006 输入你设置的root密码就可以看到pve的登录界面了。
lvm thin volume
在之前创建卷的时候是没有配置把剩余的空间给到lvm thin data的,这里配置一下。
创建lvm thin:
lvcreate -T -l +100%FREE pve -n data
lvconvert --type thin-pool pve/data
修改/etc/pve/storage.cfg
配置,添加内容如下:
lvmthin: local-lvm
thinpool data
vgname pve
content rootdir,images
在页面上刷新就可以看到了。
故障排除
如果说遇到有问题的情况需要进入到livecd进行修复可以通过下面的操作进行:
进入livecd之后
apt install dosfstools cryptsetup efibootmgr lvm2
打开硬盘
crpytsetup luksOpen /dev/sda2 cryptlvm
挂载:
mount /dev/pve/root /mnt
mount /dev/sda1 /mnt/boot
挂载其他必要的文件系统:
mount -v -t proc none /mnt/proc
mount -v --rbind /sys /mnt/sys
mount -v --rbind /dev /mnt/dev
mount -v --make-rslave /mnt/sys
mount -v --make-rslave /mnt/dev
进入chroot:
chroot /mnt
维护结束之后:
exit
umount -R /mnt
reboot
TODO
- PVE也要整合到当前的备份方案中
- 手动输入密码的方式还是有点不太安全,后续考虑使用单独的服务来去做这个加密和解密
如果你觉得这篇文章对你有所帮助,欢迎赞赏~
Sponsor