4 234
modifications
(53 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 3 : | Ligne 3 : | ||
[[Category:virtualisation]] | [[Category:virtualisation]] | ||
Nous allons voir comment installer proxmox 7.x sur un raid 1 logiciel (md / mdadm) avec debootstrap. | |||
Nous allons voir comment installer proxmox 7.x | |||
=Prérequis= | =Prérequis= | ||
Ligne 37 : | Ligne 35 : | ||
Nous allons créer avec <code>gdisk</code> 3 partitions sur chaque disque : | Nous allons créer avec <code>gdisk</code> 3 partitions sur chaque disque : | ||
* sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type <code>EF00</code> | * sda1 et sdb1 : partitions EFI (ESP), obligatoire pour le démarrage EFI/UEFI. Il faudra leur attribuer le type <code>EF00</code>. Pour assurer une bonne compatibilité avec les multiples firmwares EFI, il est recommandé de leur attribuer une taille de 512 MiB (+512M au prompt gdisk). | ||
* sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type <code>FD00</code>. | * sda2 et sdb2 : partitions pour le raid root (/). Il faudra leur attribuer le type <code>FD00</code>. | ||
* sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type <code>8200</code>. | * sda3 et sdb3 : partitions swap séparées. Il faudra leur attribuer le type <code>8200</code>. | ||
Ligne 43 : | Ligne 41 : | ||
<br> | <br> | ||
Pour les partitions EFI, nous créons un système de fichier FAT32 | Pour les partitions EFI, nous créons un système de fichier FAT32 avec le label (nom) <code>EFI_SYSPART</code> : | ||
<pre> | <pre> | ||
mkfs.fat -F 32 /dev/sda1 | mkfs.fat -F 32 -n EFI_SYSPART /dev/sda1 | ||
mkfs.fat -F 32 /dev/sdb1 | mkfs.fat -F 32 -n EFI_SYSPART /dev/sdb1 | ||
</pre> | </pre> | ||
Ligne 73 : | Ligne 71 : | ||
Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de <code>--raid-devices</code> et ajouter les partitions des disques à la suite. | Notez que si vous souhaitez utiliser plus que 2 disques, il faut augmenter la valeur de <code>--raid-devices</code> et ajouter les partitions des disques à la suite. | ||
Attendez que le raid soit synchronisé avant de continuer. Vous pouvez surveiller facilement cela avec la commande <code>watch cat /proc/mdstat</code>. | |||
==Création des systèmes de fichiers== | ==Création des systèmes de fichiers== | ||
Ligne 144 : | Ligne 144 : | ||
apt install locales | apt install locales | ||
dpkg-reconfigure locales | dpkg-reconfigure locales | ||
apt install console-data console-setup-linux console-setup | apt install console-data console-setup-linux console-setup wget | ||
dpkg-reconfigure console-data # from arch > french > latin9) | dpkg-reconfigure console-data # from arch > french > latin9) | ||
</pre> | </pre> | ||
Ligne 164 : | Ligne 164 : | ||
Montez la partition EFI / ESP : | Montez la partition EFI / ESP : | ||
<pre>mount /boot/efi</pre> | <pre> | ||
mkdir /boot/efi | |||
mount /boot/efi | |||
</pre> | |||
Configurez les interfaces réseaux dans <code>/etc/network/interfaces</code> : | Configurez les interfaces réseaux dans <code>/etc/network/interfaces</code> : | ||
Ligne 180 : | Ligne 183 : | ||
Configurez le fichier <code>/etc/hosts</code> : | Configurez le fichier <code>/etc/hosts</code> : | ||
<pre> | <pre> | ||
# | # local | ||
127.0.0.1 localhost | |||
127.0.0.1 localhost | ::1 localhost ip6-localhost ip6-loopback | ||
ff02::1 ip6-allnodes | |||
ff02::2 ip6-allrouters | |||
::1 | # main | ||
ipdelamachine proxmox.domain.tld proxmox pvelocalhost | |||
ff02::1 ip6-allnodes | |||
ff02::2 ip6-allrouters | |||
</pre> | </pre> | ||
Ligne 215 : | Ligne 214 : | ||
<pre> | <pre> | ||
hostname -F /etc/hostname | hostname -F /etc/hostname | ||
apt install postfix | |||
</pre> | </pre> | ||
Ligne 221 : | Ligne 220 : | ||
<pre>apt install mdadm</pre> | <pre>apt install mdadm</pre> | ||
Vérifiez si votre array root s'est bien défini automatiquement dans <code>/etc/mdadm/mdadm.conf</code>. Si ce n'est pas me cas, ajoutez la configuration de l'array manuellement : | |||
<pre>mdadm --examine --scan >> /etc/mdadm/mdadm.conf</pre> | <pre>mdadm --examine --scan >> /etc/mdadm/mdadm.conf</pre> | ||
Ligne 242 : | Ligne 241 : | ||
apt full-upgrade | apt full-upgrade | ||
</pre> | </pre> | ||
===Possibilité 1 : Partitions GPT pour EFI / UEFI=== | |||
Vérifiez que <code>/boot/efi</code> est bien monté. Si ce n'est pas le cas, faites le. | |||
Installez le kernel proxmox : | Installez le kernel proxmox : | ||
<pre> | <pre> | ||
apt install pve-firmware | apt install pve-firmware | ||
apt install pve-kernel-5. | apt install pve-kernel-5.15 grub-efi-amd64 gdisk | ||
</pre> | </pre> | ||
Supprimez les paquets suivant si vous n'avez pas besoin de secureboot : | |||
<pre>apt | <pre>apt purge grub-efi-amd64-signed mokutil shim-helpers-amd64-signed shim-signed shim-signed-common shim-unsigned</pre> | ||
= | Normalement tout doit se faire avec des promps. Si ce n'était pas le cas : | ||
<pre>grub-install --bootloader-id=proxmox</pre> | |||
Si jamais vous utilisez un démarrage en PXE (c'est le cas sur un serveur OVH par exemple), utilisez l'argument <code>--no-nvram</code> pour empêcher grub de mettre à jour la NVRAM et casser votre mécanique de démarrage PXE : | |||
<pre>grub-install --bootloader-id=proxmox --no-nvram</pre> | |||
Etant donné que seul <code>/dev/sda1</code> est monté sur <code>/boot/efi</code>, il faut transférer manuellement les données sur <code>/dev/sdb1</code> : | |||
<pre> | <pre> | ||
mount /dev/sdb1 /mnt | |||
rsync -av /boot/efi/ /mnt/ | |||
umount /mnt | |||
</pre> | |||
Si pour une raison quelconque, vous aviez besoin des headers du kernel : | |||
<pre> | <pre>apt install pve-headers-5.15</pre> | ||
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS=== | |||
<pre> | <pre> | ||
apt install pve-firmware | |||
apt install pve-kernel-5.13 grub-pc | |||
</pre> | </pre> | ||
Lorsqu'on vous demandera où installer grub, choisissez <code>sda</code> ET <code>sdb</code> | Lorsqu'on vous demandera où installer grub, choisissez <code>sda</code> ET <code>sdb</code> | ||
Ligne 283 : | Ligne 285 : | ||
<pre> | <pre> | ||
hostname -F /etc/hostname | hostname -F /etc/hostname | ||
apt install openssh-server | |||
passwd | passwd | ||
sed -i "s/PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config | sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config | ||
</pre> | </pre> | ||
==Installation de proxmox - | ==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox== | ||
Si vous avez une configuration particulière à entrer dans <code>/etc/default/grub</code>, faites le maintenant. Par exemple : | Si vous avez une configuration particulière à entrer dans <code>/etc/default/grub</code>, faites le maintenant. Par exemple : | ||
Ligne 297 : | Ligne 299 : | ||
Puis régénérez la configuration de grub : | Puis régénérez la configuration de grub : | ||
<pre>update-grub</pre> | <pre>update-grub</pre> | ||
Vous pouvez vérifier que votre fstab est valide avec : | |||
<pre>findmnt --verify --verbose</pre> | |||
Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier | Vous pouvez maintenant sortir de votre chroot et démonter le système de fichier | ||
Ligne 311 : | Ligne 316 : | ||
Enfin, redémarrez le serveur sur le disque dur. | Enfin, redémarrez le serveur sur le disque dur. | ||
==Installation de ifupdown2== | |||
Le paquet <code>ifupdown2</code> est en voie de devenir le remplaçant officiel de <code>ifupdown</code> pour proxmox. | |||
<pre> | |||
apt install ifupdown2 | |||
apt purge ifupdown | |||
systemctl enable networking | |||
</pre> | |||
Pour vérifier que votre configuration est fonctionnelle : lancez <code>ifquery -a</code> | |||
Redémarrez à nouveau votre serveur | |||
==Installation de proxmox - pve== | ==Installation de proxmox - pve== | ||
Ligne 328 : | Ligne 347 : | ||
address xxxxx/24 | address xxxxx/24 | ||
gateway xxxx | gateway xxxx | ||
hwaddress AA:BB:CC:11:22:33 | |||
bridge_ports eno3 | bridge_ports eno3 | ||
bridge_stp off | bridge_stp off | ||
bridge_fd 0 | bridge_fd 0 | ||
</pre> | </pre> | ||
Définissez la ligne <code>hwaddress</code> avec l'adresse MAC de l'interface eno3. | |||
Installez votre clé SSH dans <code>/root/.ssh/authorized_keys</code> puis désactivez le login root par password de OpenSSH dans <code>/etc/ssh/sshd_config</code>. | Installez votre clé SSH dans <code>/root/.ssh/authorized_keys</code> puis désactivez le login root par password de OpenSSH dans <code>/etc/ssh/sshd_config</code>. | ||
<br><br> | |||
Une fois tout installé, je vous conseille de reconfigurer grub afin de mettre à jour la configuration interne de debian: | |||
* Pour EFI : <code>dpkg-reconfigure grub-efi-amd64</code> | |||
* Pour BIOS : <code>dpkg-reconfigure grub-pc</code> | |||
<br> | |||
Redémarrez une dernière fois pour appliquer les changements. | Redémarrez une dernière fois pour appliquer les changements. | ||
Votre proxmox sera accessible à l'adresse https://ip:8006 | Votre proxmox sera accessible à l'adresse https://ip:8006 | ||
==Nettoyage des paquets== | |||
Si vous ne comptez pas utiliser ZFS, vous pouvez supprimer les paquets suivantes : | |||
<pre>apt purge zfs-zed libnvpair3linux libuutil3linux libzfs4linux libzpool5linux zfsutils-linux</pre> | |||
==Configuration réseau avancée== | ==Configuration réseau avancée== | ||
Ligne 366 : | Ligne 399 : | ||
* utilisez la directive <code>allowusers <user></code> dans <code>/etc/ssh/sshd_config</code> pour n'autoriser que certains utilisateurs à se connecter en ssh. | * utilisez la directive <code>allowusers <user></code> dans <code>/etc/ssh/sshd_config</code> pour n'autoriser que certains utilisateurs à se connecter en ssh. | ||
Il est aussi préférable d'installer le serveur de temps NTP à la place de systemd-timesyncd: | |||
<pre> | <pre> | ||
apt install chrony | |||
apt purge systemd-timesyncd | |||
</pre> | </pre> | ||
=Configurer le serveur mail postfix= | =Configurer le serveur mail postfix= | ||
Ligne 509 : | Ligne 502 : | ||
Nous activons la surveillance globale (<code>-a</code>), la vérification automatique offline, (<code>-o on</code>), la sauvegarde automatique des attributs (<code>-S on</code> et lançons un <code>short self test</code> tous les jours à 2h du matin, et un <code>long self test</code> tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.<br> | Nous activons la surveillance globale (<code>-a</code>), la vérification automatique offline, (<code>-o on</code>), la sauvegarde automatique des attributs (<code>-S on</code> et lançons un <code>short self test</code> tous les jours à 2h du matin, et un <code>long self test</code> tous les samedi à 3h du matin. Si des erreurs sont détectés, un email est envoyé à vous@domain.tld.<br> | ||
Relancez smartd : | Relancez smartd : | ||
<pre>/etc/init.d/smartmontools restart</pre> | <pre>/etc/init.d/smartmontools restart</pre> | ||
Pour plus d'information sur SMART et ses arguments : [[Diagnostic smart d'un disque]] | |||
=Protégez votre proxmox= | =Protégez votre proxmox= | ||
==Désactiver le login root sur l'interface proxmox== | |||
Avant toute manipulation, n'oubliez pas de créer un utilisateur ayant les droits d'administration pour accéder à l'interface de proxmox | |||
===Via l'interface proxmox=== | |||
Dans Datacenter > Permissions > Users : Editez l'utilisateur root et décochez la case <code>Enabled</code> | |||
===Via les droits linux=== | |||
<pre>passwd --lock root</pre> | |||
Attention, dans ce cas, vous ne pourrez plus vous loguer en root sur le serveur par ssh (sauf si vous avez une clé ssh défini), écran ou kvm ! | |||
===Via PAM=== | |||
Vous pouvez désactiver le login pam en éditant <code>/etc/pam.d/other</code> et en y ajoutant, en début de fichier, les lignes suivantes : | |||
<pre> | |||
auth required pam_deny.so | |||
auth required pam_warn.so | |||
account required pam_deny.so | |||
account required pam_warn.so | |||
</pre> | |||
Attention, cette méthode peut avoir des effets de bord si d'autres programmes utilisent l'entité pam/other | |||
==Désactiver rpcbind== | |||
Si vous n'utilisez pas de montage NFS vous pouvez désactiver rpcbind.<br> | |||
Editez <code>/etc/default/nfs-common</code> et passez l'argument suivant : | |||
<pre>NEED_STATD=no</pre> | |||
Puis désactivez rpcbind : | |||
<pre> | |||
systemctl disable rpcbind.target | |||
systemctl disable rpcbind.socket | |||
systemctl disable rpcbind.service | |||
systemctl stop rpcbind.target | |||
systemctl stop rpcbind.socket | |||
systemctl stop rpcbind.service | |||
</pre> | |||
==Eviter les reboots accidentels avec molly-gard== | ==Eviter les reboots accidentels avec molly-gard== | ||
<pre>apt install molly-guard</pre> | <pre>apt install molly-guard</pre> | ||
==sshguard== | ==Protection SSH avec sshguard== | ||
[[Protéger SSH avec sshguard]] | [[Protéger SSH avec sshguard]] | ||
==Protéger l'interface web avec fail2ban== | |||
<pre>aptitude install fail2ban</pre> | |||
Créez le fichier <code>/etc/fail2ban/jail.local</code> contenant : | |||
<pre> | |||
[DEFAULT] | |||
# "ignoreip" can be an IP address, a CIDR mask or a DNS host | |||
ignoreip = 127.0.0.1 | |||
bantime = 1800 | |||
maxretry = 3 | |||
# | |||
# Destination email address used solely for the interpolations in | |||
# jail.{conf,local} configuration files. | |||
destemail = root@localhost | |||
action = %(action_mwl)s | |||
[ssh] | |||
enabled = false | |||
[sshd] | |||
enabled = false | |||
[proxmox] | |||
enabled = true | |||
port = https,http,8006 | |||
filter = proxmox | |||
logpath = /var/log/daemon.log | |||
maxretry = 4 | |||
bantime = 3600 #1 heure | |||
</pre> | |||
Créez le fichier <code>/etc/fail2ban/filter.d/proxmox.conf</code> : | |||
<pre> | |||
[Definition] | |||
failregex = pvedaemon\[.*authentication failure; rhost=<HOST> user=.* msg=.* | |||
ignoreregex = | |||
</pre> | |||
Vous pouvez tester votre configuration avec la commande <code>fail2ban-regex /var/log/daemon.log /etc/fail2ban/filter.d/proxmox.conf</code> | |||
Relancez fail2ban : | |||
<pre>/etc/init.d/fail2ban restart</pre> | |||
==firewall iptables== | ==firewall iptables== | ||
=VMs= | =Création d'un stockage pour les VMs= | ||
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS). | |||
Créez sur ces partitions un raid : | |||
<pre>mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4</pre> | |||
Maintenez à jour <code>mdadm.conf</code> et votre initramfs afin de conserver le bon naming du raid après reboot : | |||
<pre> | |||
mdadm --examine --scan >> /etc/mdadm/mdadm.conf | |||
update-initramfs -u | |||
</pre> | |||
Puis initialisez-y un LVM : | |||
<pre> | |||
pvcreate /dev/md4 | |||
vgcreate main /dev/md4 | |||
</pre> | |||
Il ne reste plus qu'a déclarer ce Volume Group LVM dans l'interface proxmox. | |||
=VM qemu/kvm= | |||
==Télécharger vos images== | ==Télécharger vos images== | ||
Ligne 675 : | Ligne 768 : | ||
=Annexes= | =Annexes= | ||
==Problème de layout dans la console vnc== | ==Problème de layout dans la console vnc== |