User Tools

Site Tools


installation_proxmox_sur_debian_13_chiffrement_du_fs

DRAFT

Voici mes prises de notes lors de la préparation d'un serveur Proxmox 9.x sous Debian 13. Il y a peut être des erreurs, des approximations, et nécessite des connaissances approfondi de linux, et de la gestion des lvm pour arriver au terme de l'installation.

  • Certains volumes seront chiffrés.
  • L'installation se fait avec le déploiement d'un serveur OVH debian 13.
  • Le volume sera déchiffré au boot du serveur, avant même que le service ssh soit ouvert. Dropbear sera utilisé, au niveau de initramfs, il permet de monter une liaison ssh éphémère pour enter le code de déverrouillage du serveur.
  • Disques 2x2To en raid1 soft. J'alloue 30Go pour / , le reste sur un volume poubelle monté sur /mnt/poubelle. Il sera destiné au volume chiffré.

Copier / coller dans vim

Le copier / coller est cassé, selon le paramétrage du terminal. A tester.

echo "set clipboard+=unnamedplus" >> ~/.vimrc

Update du système et installation de quelques produits

apt update
apt install dropbear-initramfs cryptsetup-initramfs

Update du système et installation de quelques produits

umount /mnt/poubelle
vi /etc/fstab  => enlever montage de poubelle

Un lsblk fait apparaitre le volume restant de 1.8T en raid1.

├─sda5                                    8:5    0   1.8T  0 part
│ └─md5                                   9:5    0   1.8T  0 raid1

└─sdb5                                    8:21   0   1.8T  0 part
  └─md5                                   9:5    0   1.8T  0 raid1

On initialise le volume md5 pour le chiffement

La clef sera demandée, le volume sera effacé et chiffré. Si la clef est perdu, le volume sera perdu aussi.

cryptsetup luksFormat /dev/md5

La commande lsblk fait apparaitre md5_crypt

sda
├─sda5                                    8:5    0   1.8T  0 part
│ └─md5                                   9:5    0   1.8T  0 raid1
│   └─md5_crypt                         252:0    0   1.8T  0 crypt

sdb
└─sdb5                                    8:21   0   1.8T  0 part
  └─md5                                   9:5    0   1.8T  0 raid1
    └─md5_crypt                         252:0    0   1.8T  0 crypt

Ouverture du volume chiffré, la clef sera demandée

cryptsetup open /dev/md5 md5_crypt

Ajouter une 2eme clef

cryptsetup luksAddKey /dev/md5

Voir les clefs associées au volume + infos

cryptsetup luksDump /dev/md5

Voir l'id du volume chiffré et le mettre dans le /etc/crypttab

#Noter l'id du volume chiffré
blkid /dev/md5 

#On l'enregistre dans le crypttab selon le modèle ci dessous.
vi /etc/crypttab
md5_crypt UUID="xxxxxxx-xxxxx-xxxxx-xxxxx-xxxxxxxxxx" none luks,initramfs

LVM

Préparation du lvm pour notre volume de 1.8To.

#ajoute le disque au pv
pvcreate /dev/mapper/md5_crypt

#creation du vg
vgcreate vg_data /dev/mapper/md5_crypt

#on créé le thinpool
lvcreate -l 95%FREE --thinpool tp_pool_main vg_data
#changement de nom du serveur
hostnamectl set-hostname proxppov

#dropbear
/etc/dropbear/initramfs
add : authorized_keys (ssh clef public de votre machine d'administration)

/etc/initramfs-tools  
add : authorized_keys

/etc/dropbear/initramfs/dropbear.conf
add: DROPBEAR_OPTIONS="-p 2222 -s -j -k"


/etc/initramfs-tools/conf.d/resume
add: RESUME=none

update-initramfs -c -k all

Proxmox

Mise en place du repo proxmox

cat > /etc/apt/sources.list.d/pve-install-repo.sources << EOL
Types: deb
URIs: http://download.proxmox.com/debian/pve
Suites: trixie
Components: pve-no-subscription
Signed-By: /usr/share/keyrings/proxmox-archive-keyring.gpg
EOL

wget https://enterprise.proxmox.com/debian/proxmox-archive-keyring-trixie.gpg -O /usr/share/keyrings/proxmox-archive-keyring.gpg

#Vérifications
sha256sum /usr/share/keyrings/proxmox-archive-keyring.gpg
136673be77aba35dcce385b28737689ad64fd785a797e57897589aed08db6e45 /usr/share/keyrings/proxmox-archive-keyring.gpg 
md5sum /usr/share/keyrings/proxmox-archive-keyring.gpg
77c8b1166d15ce8350102ab1bca2fcbf /usr/share/keyrings/proxmox-archive-keyring.gpg

On installe Proxmox

apt modernize-sources
apt update -y && apt full-upgrade -y
apt install proxmox-default-kernel
apt install bridge-utils net-tools

Editer le /etc/hosts

Ajouter l'ip public et le hostname du serveur.

Restart et installations

systemctl reboot
apt install -y proxmox-ve ksm-control-daemon locales-all chrony libguestfs-tools

Mise en place du forwarder linux

echo 1 > /proc/sys/net/ipv4/ip_forward

cat > /etc/sysctl.d/proxmox.conf << EOL
net.ipv4.conf.all.rp_filter=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.ip_forward=1
EOF

Web Administration Proxmox

Créer un user admin en mode console

#Créer un user system linux 
useradd -m -g monadmin -s /bin/bash monadmin

#Mettre le mot de passe
passwd monadmin

#Créer le user sous proxmox
pveum user add monadmin@pam

#Le mettre dans le group admin
pveum acl modify / --user monadmin@pam --role Administrator

#lister les users proxmox
pveum user list

#delete un user proxmox
pveum user delete monuser@pam

#voir les roles
pveum role list

Le serveur ne dispose pas de 2 interfaces réseau. Tout se passe sur l'interface publique. Il y a moyen de faire autrement je pense. Je prend la main sur proxmox pour aller activer le firewall.

Avec un navigateur aller sur https:ip_public:8006

On rentre dans une zone à très haut risque

Voici ma solution. Ce n'est pas forcement la meilleur, il y a peut être mieux.

La configuration réseau OVH dépend de netplan. On retrouve un fichier de configuration netplan sous /etc/netplan. Pour ma part, j'y retrouve mon interface eno1. Le system dispose de 2 interfaces, eno1 et eno2 mais seul eno1 est active.

  • noter la macaddress de l'interface eno1.
  • on remarque que l'ip est distribuée par dhcp.
  • noter la route par defaut.
# la configuration ressemble à cela
network:
  version: 2
  ethernets:
    eno1:
      match:
        macaddress: "aa:bb:cc:dd:ee:ff"
      addresses:
      - **************************
      dhcp4: true
      accept-ra: false
      set-name: "eno1"
      routes:
      - on-link: true
        to: "default"
        via: "*************************
  • Savoir que proxmox manage /etc/network/interfaces et ne gère que des ips manuelles.
  • Editer /etc/network/interfaces et mettre en place l'adresse mac de l'interface eno1
  • On installe le bridge vmbr0 qui va supporter proxmox et l'interface public.
  • Ce fichier est très sensible, je n'ai pas utilisé dhcp car le pve proxmox contrôle ce fichier, et mettre en dur l'ip peut éviter bien des soucis.
  • On ajoute vmbr1 pour la gestion du réseau privé des vm.
source /etc/network/interfaces.d/*

auto lo
iface lo inet loopback

auto eno1
iface eno1 inet manual

iface eno2 inet manual

auto vmbr0
iface vmbr0 inet static
        address !!ip_public/24!!
        gateway !!route par defaut!!
        bridge-ports eno1
        bridge-stp off
        bridge-fd 0
        bridge-hwaddr !!Adresse Mac de ino1!!
#PUBLIC

auto vmbr1
iface vmbr1 inet static
        address 192.168.100.1/24
        bridge-ports none
        bridge-stp off
        bridge-fd 0
#PRIVATE 100

Désactiver netplan

#Attention on va perdre le réseau.
#Il faut enchainer ces actions à la suite par script, dans un screen par exemple.
#En cas de problème, ovh propose un netboot de rescue qui permet d'aller modifier les fichiers sur le serveur.

systemctl disable systemd-networkd
systemctl stop systemd-networkd
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl enable networking
systemctl start networking

Préparer le firewall proxmox

  • L'idée est dans un premier temps de fixer les régles firewall du pve proxmox pour éviter de perdre l'accès SSH , l'accès à l'interface d'admin et le ping.
  • Plus tard on fermera l'interface d'admin web et on changera le port ssh pour éviter les robots.
# Editer /etc/pve/firewall/cluster.fw et mettre.
[OPTIONS]

enable: 1

[RULES]

IN Ping(ACCEPT) -i vmbr0 -log nolog # Autorise l'icmp retour
IN ACCEPT -i vmbr0 -p tcp -dport 8006 -log nolog # Proxmox Web Admin
IN SSH(ACCEPT) -i vmbr0 -log nolog # SSH autorisé
installation_proxmox_sur_debian_13_chiffrement_du_fs.txt · Last modified: by ppj