« Proxmox 8 » : différence entre les versions

Aller à la navigation Aller à la recherche
1 954 octets enlevés ,  18 août 2023
(74 versions intermédiaires par le même utilisateur non affichées)
Ligne 3 : Ligne 3 :
[[Category:virtualisation]]
[[Category:virtualisation]]


<big>'''MISE À JOUR EN COURS'''</big>
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 à la main via deboostrap avec un raid logiciel (md / mdadm)


=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>
# Do not remove the following line, or various programs
# local
# that require network functionality will fail.
127.0.0.1      localhost
127.0.0.1      localhost.localdomain localhost
::1             localhost ip6-localhost ip6-loopback
ipdelamachine    proxmox.domain.tld proxmox pvelocalhost
ff02::1         ip6-allnodes
# The following lines are desirable for IPv6 capable hosts
ff02::2         ip6-allrouters
#(added automatically by netbase upgrade)
 
::1     ip6-localhost ip6-loopback
# main
feo0::0 ip6-localnet
ipdelamachine  proxmox.domain.tld proxmox pvelocalhost
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
</pre>
</pre>


Ligne 215 : Ligne 214 :
<pre>
<pre>
hostname -F /etc/hostname
hostname -F /etc/hostname
aptitude install postfix
apt install postfix
</pre>
</pre>


Ligne 221 : Ligne 220 :
<pre>apt install mdadm</pre>
<pre>apt install mdadm</pre>


Puis ajoutez la configuration de l'array :
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.13
apt install pve-kernel-5.15 grub-efi-amd64 gdisk
</pre>
</pre>


Si pour une raison quelconque, vous aviez besoin des headers du kernel :
Supprimez les paquets suivant si vous n'avez pas besoin de secureboot :
<pre>apt install pve-headers-5.13</pre>
<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>


=== Installation de GRUB===
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>
mount /dev/sdb1 /mnt
rsync -av /boot/efi/ /mnt/
umount /mnt
</pre>


====Possibilité 1 : Partitions GPT pour EFI / UEFI====
Si pour une raison quelconque, vous aviez besoin des headers du kernel :
Vérifiez que <code>/boot/efi</code> est bien monté. Si ce n'est pas le cas, faites le.
<pre>apt install pve-headers-5.15</pre>


Installez la version EFI de GRUB:
===Possibilité 2 : Partitions GPT pour BIOS OU Partitions MBR pour BIOS===
<pre>apt install grub-efi-amd64</pre>


====Possibilité 2 : Partitionnement GPT pour BIOS====
<pre>
<pre>apt install grub-pc</pre>
apt install pve-firmware
apt install pve-kernel-5.13 grub-pc
</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 270 : Ligne 285 :
<pre>
<pre>
hostname -F /etc/hostname
hostname -F /etc/hostname
aptitude install openssh-server
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 - Redémarrage sur le kernel proxmox==
==Installation de proxmox - Vérifications finales et redémarrage sur le kernel proxmox==


Forcez l'utilisation de l'ancien nommage des interfaces réseaux (ethX) dans /etc/default/grub :
Si vous avez une configuration particulière à entrer dans <code>/etc/default/grub</code>, faites le maintenant. Par exemple :
<pre>
<pre>
GRUB_CMDLINE_LINUX="biosdevname=0 net.ifnames=0"
GRUB_CMDLINE_LINUX="nomodeset iommu=pt"
</pre>
</pre>


Puis régénérer 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


<pre>
<pre>
umount /boot/efi/
exit
exit
umount /mnt/sys
umount /mnt/sys
Ligne 296 : Ligne 315 :
</pre>
</pre>


puis rebootez sur le disque dur sur votre kernel pve
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==


Une fois le reboot effectué, vérifiez que vous etes sur le bon kernel avec <code>uname -a</code>
Une fois le redémarrage effectué, vous allez enfin pouvoir installer pve :
 
<pre>apt install lvm2</pre>
Si c'est le cas, vous pouvez installer pve :
<pre>apt install proxmox-ve ksm-control-daemon</pre>
<pre>aptitude install lvm2</pre>
<pre>apt remove os-prober</pre>
<pre>aptitude install proxmox-ve ksm-control-daemon</pre>
<pre>aptitude remove os-prober</pre>


Supprimez eth0 de votre fichier <code>/etc/network/interfaces</code> et ajoutez y ceci :
Editez la configuration réseau <code>/etc/network/interfaces</code> afin d'y créer votre bridge :
<pre>
<pre>
auto eth0
auto eno3
iface eth0 inet manual
iface eno3 inet manual


auto vmbr0
auto vmbr0
iface vmbr0 inet static
iface vmbr0 inet static
         address xxxxx
         address xxxxx/24
        netmask 255.255.255.0
        network xxxx
        broadcast xxxx
         gateway xxxx
         gateway xxxx
         bridge_ports eth0
        hwaddress AA:BB:CC:11:22:33
         bridge_ports eno3
         bridge_stp off
         bridge_stp off
         bridge_fd 0
         bridge_fd 0
</pre>
</pre>


Installez votre clé SSH et désactivez le login root par password de OpenSSH dans <code>/etc/ssh/sshd_config</code>
Définissez la ligne <code>hwaddress</code> avec l'adresse MAC de l'interface eno3.


Rebootez une dernière fois pour appliquer les changements.
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.


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==


===Ajout d'une IPv6 sur vmbr0===
===Ajout d'une IPv6 sur vmbr0===
Ajoutez les lignes suivantes dans /etc/network/interfaces
<pre>
iface vmbr0 inet6 static
        address <votreipv6>
        netmask <votre masque ipv6 (généralement 64)
</pre>
Il est aussi capital d'adapter votre fichier /etc/hosts en fonction de toutes les IPs (qu'elles soient ipv4 ou ipv6 que vous configurez sur votre hôte). En effet, proxmox se sert du fichier /etc/hosts pour déterminer des éléments de configuration locale.


===Ajout d'un réseau interne vmbr1===
===Ajout d'un réseau interne vmbr1===
Ligne 353 : Ligne 387 :
         address  192.168.0.1
         address  192.168.0.1
         netmask  255.255.255.0
         netmask  255.255.255.0
        broadcast 192.168.0.255
        bridge_ports dummy0
        bridge_stp off
        bridge_fd 0
</pre>
</pre>


Si vous voulez utiliser deux interfaces internes, ajoutez la ligne suivante dans <code>/etc/modprobe.d/local.conf</code> :
<pre>
options dummy numdummies=2
</pre>
Note : vous pouvez faire de même en ipv6 :
Note : vous pouvez faire de même en ipv6 :
* il faut utiliser le range fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)
* il faut utiliser le range Unique Local Address (ULA) fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address)
* pour générer votre ula : http://pfoo.unscdf.org/ula/gen-ula.html
* pour générer votre ULA : http://pfoo.unscdf.org/ula/gen-ula.html


==Sécurisation de base==
==Sécurisation de base==


Je vous conseil de commencer à sécuriser votre ssh :
Je vous conseil de commencer à sécuriser votre ssh :
* désactivez le login root (directive <code>PermitRootLogin no</code> dans <code>/etc/ssh/sshd_config</code>). Pensez à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.
* désactivez le login root (directive <code>PermitRootLogin no</code> dans <code>/etc/ssh/sshd_config</code>). Pensez néanmoins à créer un utilisateur pour vous connecter en ssh avant de désactiver le login root.
* 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.
 
===Protéger l'interface web avec fail2ban===


<pre>aptitude install fail2ban</pre>
Il est aussi préférable d'installer le serveur de temps NTP à la place de systemd-timesyncd:
 
Créez le fichier <code>/etc/fail2ban/jail.local</code> contenant :
<pre>
<pre>
[DEFAULT]
apt install chrony
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
apt purge systemd-timesyncd
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>
</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/proxmox4.conf</code>
Relancez fail2ban :
<pre>/etc/init.d/fail2ban restart</pre>


=Configurer le serveur mail postfix=
=Configurer le serveur mail postfix=


==Configuration==
==Configuration==
Par défaut, postfix fournit une configuration suffisante. Voici les modifications que j'y ai apporté :
<pre>
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
mydomain = proxmox.domain.tld
append_dot_mydomain = yes
myhostname = proxmox.domain.tld
myorigin = /etc/mailname
mydestination = proxmox.domain.tld, localhost.localdomain, localhost
relayhost =
smtp_sasl_password_maps =
mynetworks = 127.0.0.0/8, [::1], ipv4_de_votre_serveur, [ipv6_de_votre_serveur]
relay_domains =
relay_recipient_maps =
inet_interfaces = 127.0.0.1, [::1], ipv4_de_votre_serveur, [ipv6_de_votre_serveur]
inet_protocols = all
alias_maps = proxy:hash:/etc/aliases
smtpd_sasl_auth_enable = no
smtpd_sasl_local_domain = $myhostname
smtpd_sender_restrictions =
  reject_unknown_sender_domain,
  reject_non_fqdn_sender
smtpd_recipient_restrictions =
  permit_inet_interfaces,
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination
smtpd_client_restrictions =
  permit_inet_interfaces,
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_pipelining
smtpd_helo_restrictions =
  permit_inet_interfaces,
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_invalid_helo_hostname,
  reject_non_fqdn_helo_hostname,
  reject_unknown_helo_hostname
smtpd_data_restrictions =
  permit_inet_interfaces,
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_unauth_pipelining
</pre>
Il faudra évidemment configurer les directives <code>inet_interfaces</code> <code>myhostname</code> et <code>mydomain</code>


==Certificats SSL==
==Certificats SSL==
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n'est pas le cas, vous pouvez toujours aller lire [http://wiki.csnu.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d'apprendre à créer votre autorité ssl.
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. Si ce n'est pas le cas, vous pouvez toujours aller lire [http://wiki.unscdf.org/index.php?title=Installation_et_configuration_de_OpenSSL ceci] afin d'apprendre à créer votre autorité ssl.


Ajoutez les lignes suivantes dans <code>/etc/ssl/openssl.cnf</code> :
Ajoutez les lignes suivantes dans <code>/etc/ssl/openssl.cnf</code> :
Ligne 510 : Ligne 425 :
</pre>
</pre>


Puis générez la clé et le certificat, et signez le avec votre autorité (onyx_ca dans mon cas) :
Puis générez la clé et le certificat, et signez le avec votre autorité (int_ca dans mon cas) :
<pre>
<pre>
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req
openssl req -config /etc/ssl/openssl.cnf -nodes -newkey rsa:2048 -keyout postfix.key -out postfix.req
openssl ca -config /etc/ssl/openssl.cnf -name onyx_ca -extensions POSTFIX -in postfix.req -out postfix.pem
openssl ca -config /etc/ssl/openssl.cnf -name int_ca -extensions POSTFIX -in postfix.req -out postfix.pem
</pre>
</pre>


Déplacez les fichiers dans le répertoire <code>/etc/postfix/ssl</code>:
Déplacez les fichiers dans le répertoire <code>/etc/postfix/ssl</code> :
<pre>
<pre>
mkdir /etc/postfix/ssl
mkdir /etc/postfix/ssl
Ligne 522 : Ligne 437 :
mv postfix.pem /etc/postfix/ssl/
mv postfix.pem /etc/postfix/ssl/
chmod 600 /etc/postfix/ssl/*
chmod 600 /etc/postfix/ssl/*
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/onyx_ca/onyx_ca.pem > /etc/postfix/ssl/ca_chain.pem
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/int_ca/int_ca.pem > /etc/postfix/ssl/ca_chain.pem
</pre>
</pre>


Ligne 539 : Ligne 454 :
smtpd_tls_loglevel = 1
smtpd_tls_loglevel = 1
smtp_tls_loglevel = 1
smtp_tls_loglevel = 1


#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
#smtp_tls_policy_maps = hash:/etc/postfix/tls_policy
</pre>
</pre>


=Utiliser son propre certificat SSL avec un signataire intermédiaire=
=Utiliser son propre certificat SSL proxmox avec un signataire intermédiaire=


Depuis Proxmox 5.2, il n'est plus recommandé d'adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.<br>
Depuis Proxmox 5.2, il n'est plus recommandé d'adapter manuellement les fichiers contenant les certificats et clés privés de proxmox.<br>
Ligne 552 : Ligne 466 :


Commencez par installer le paquet smartmontools :
Commencez par installer le paquet smartmontools :
<pre>aptitude install smartmontools</pre>
<pre>apt install smartmontools</pre>


Vérifiez que vos disques gèrent smart et qu'il est activé :
Vérifiez que vos disques gèrent smart et qu'il est activé :
Ligne 563 : Ligne 477 :
<pre>
<pre>
smartctl -s on /dev/sda
smartctl -s on /dev/sda
smartctl -s on /dev/sdb
</pre>
</pre>


Ligne 580 : Ligne 495 :
Si vous voyez <code>No Errors Logged</code> ou quelques erreurs, c'est bon. S'il y eu a beaucoup, il faut envisager de changer le disque.
Si vous voyez <code>No Errors Logged</code> ou quelques erreurs, c'est bon. S'il y eu a beaucoup, il faut envisager de changer le disque.


Pour autoriser le lancement de smartd, éditez le fichier <code>/etc/default/smartmontools</code> ainsi :
Le fichier de configuration de smartd est <code>/etc/smartd.conf</code>. Commentez la ligne <code>DEVICESCAN</code> puis ajoutez les lignes suivantes pour surveiller les deux disques durs :
<pre>
<pre>
# uncomment to start smartd on system startup
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld
start_smartd=yes
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m vous@domain.tld
</pre>


# uncomment to pass additional options to smartd on startup
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>
smartd_opts="--interval=1800"
 
</pre>
Relancez smartd :
<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=
 
==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 !


Le fichier de configuration de smartd est <code>/etc/smartd.conf</code>. Commentez la ligne <code>DEVICESCAN</code> puis ajoutez les lignes suivantes pour surveiller les deux disques durs :
===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>
<pre>
/dev/sda -a -o on -S on -s (S/../.././02|L/../../6/03) -m mail@domain.tld
auth        required    pam_deny.so
/dev/sdb -a -o on -S on -s (S/../.././02|L/../../6/03) -m mail@domain.tld
auth        required    pam_warn.so
account    required    pam_deny.so
account    required    pam_warn.so
</pre>
</pre>


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é à mail@domain.tld.<br>
Attention, cette méthode peut avoir des effets de bord si d'autres programmes utilisent l'entité pam/other
Notez que <code>-a</code> correspond à <code>-H -f -t -l error -l selftest -C 197 -U 198</code> avec :
* -H : SMART Health Status
* -f : Monitor for failure of any 'Usage' Attributes
* -t : Report changes in 'Prefailure' Normalized Attributes et Report changes in 'Usage' Normalized Attributes
* -l : Monitor SMART log (error et selftest ici)
* -C 197 : Report if Current Pending Sector count non-zero (attribut 197)
* -U 198 : Report if Offline Uncorrectable count non-zero (attribut 198)


Lancez smart :
==Désactiver rpcbind==
<pre>/etc/init.d/smartmontools restart</pre>


=Protéger votre proxmox=
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>aptitude 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]]


==firewall iptables==
==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


Voici un petit script pour bloquer l'accès ssh, ftp et proxmox aux ips non française
[sshd]
enabled  = false


Attention, ce script doit être lancé APRÈS sshguard, sinon sshguard ne sera plus efficace
[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>
<pre>
#! /bin/bash
[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>


trusted_ipv6="blocipv6_1 blocipv6_2"
Relancez fail2ban :
db=fr.zone
<pre>/etc/init.d/fail2ban restart</pre>
wget http://www.ipdeny.com/ipblocks/data/countries/fr.zone
trusted=$(egrep -v "^#|^$" $db)
rm $db


echo "clearing iptables"
==firewall iptables==
/sbin/iptables -t filter -D INPUT -p tcp -i vmbr0 -m multiport --dports 21,22,8006 -j firewall
/sbin/iptables -F firewall
/sbin/iptables -X firewall


echo "adding rules to iptables"
=Création d'un stockage pour les VMs=
/sbin/iptables -t filter -N firewall
/sbin/iptables -t filter -A INPUT -p tcp -i vmbr0 -m multiport --dports 21,22,8006 -j firewall


for ipblock in $trusted; do
Créez les partitions sda4 et sdb4 au moyen de gdisk (EFI) ou parted (BIOS).
        /sbin/iptables -t filter -A firewall -s $ipblock -j ACCEPT
done
/sbin/iptables -t filter -A firewall -j DROP


echo "clearing ip6tables"
Créez sur ces partitions un raid :
/sbin/ip6tables -t filter -D INPUT -p tcp -i vmbr0 -m multiport --dports 21,22,8006 -j firewall
<pre>mdadm --create --verbose /dev/md4 --level=1 --raid-devices=2 /dev/sda4 /dev/sdb4</pre>
/sbin/ip6tables -F firewall
/sbin/ip6tables -X firewall


echo "adding rules to ip6tables"
Maintenez à jour <code>mdadm.conf</code> et votre initramfs afin de conserver le bon naming du raid après reboot :
/sbin/ip6tables -t filter -N firewall
<pre>
/sbin/ip6tables -t filter -A INPUT -p tcp -i vmbr0 -m multiport --dports 21,22,8006 -j firewall
mdadm --examine --scan >> /etc/mdadm/mdadm.conf
update-initramfs -u
</pre>


for ipv6 in $trusted_ipv6; do
Puis initialisez-y un LVM :
        /sbin/ip6tables -t filter -A firewall -s $ipv6 -j ACCEPT
<pre>
done
pvcreate /dev/md4
/sbin/ip6tables -t filter -A firewall -j DROP
vgcreate main /dev/md4
</pre>
</pre>


=VMs=
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==


Vous pouvez placer les iso dans <code>/var/lib/vz/template/iso/</code> avec <code>wget</code> par exemple.
Vous pouvez placer les iso dans <code>/var/lib/vz/template/iso/</code> avec <code>wget</code> par exemple.
Notez que l'interface graphique de proxmox propose une fonction d'upload.
Notez que l'interface graphique de proxmox propose également une fonction d'upload.


==Créer votre première VM==
==Créer votre première VM==
Ligne 705 : Ligne 669 :


==qm et modification des VMs en ligne de commande==
==qm et modification des VMs en ligne de commande==
==Protéger SSH dans une VM==
Reportez vous à [[Protéger SSH avec sshguard]]


==Monter les partitions d'une VM depuis l'host==
==Monter les partitions d'une VM depuis l'host==


<pre>
<pre>
~# losetup /dev/loop0 /dev/main/vm-101-disk-1
# losetup /dev/loop0 /dev/main/vm-101-disk-1
# fdisk -lu /dev/loop0  
# fdisk -lu /dev/loop0  


Ligne 728 : Ligne 688 :


pour la partition 1 : start*blocksize = offset
pour la partition 1 : start*blocksize = offset
donc 2048*512 = 1 048 576
donc 2048*512 = 1048576


<pre>losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 </pre>
<pre>losetup /dev/loop1 -o 1048576 /dev/main/vm-101-disk-1 </pre>
Ligne 742 : Ligne 702 :
</pre>
</pre>


===Si la partition que vous voulez monter est un lvm===
===Si la partition que vous voulez monter est un LVM===


Scannez les nouveaux volumes :
Scannez les nouveaux volumes :
Ligne 786 : Ligne 746 :
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).
Sur votre nouveau serveur, créez une VM identique à celle de votre premier serveur (surtout en qui concerne la taille de disque).
Depuis server1, copiez avec un dd over ssh le disque d'origine de votre vm vers votre nouveau serveur.
Depuis server1, copiez avec un dd over ssh le disque d'origine de votre vm vers votre nouveau serveur.
<pre>dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -c blowfish -o "Compression no" root@server2.domain.tld "dd of=/dev/main/vm-102-disk-1 bs=100M"</pre>
<pre>dd if=/dev/main/vm-102-disk-1 | pv -ptrb | ssh -o "Compression no" root@server2.domain.tld "dd of=/dev/main/vm-102-disk-1 bs=100M"</pre>


Note : sur un réseauu 100Mbps utilisez plutôt <code>-o "Compressionlevel 1"</code>
Note : sur un réseauu 100Mbps utilisez plutôt <code>-o "Compressionlevel 1"</code>
Ligne 808 : Ligne 768 :


=Annexes=
=Annexes=
==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'autre programme utilise l'entité pam/other


==Problème de layout dans la console vnc==
==Problème de layout dans la console vnc==
Ligne 837 : Ligne 775 :


Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.
Cette erreur est typique sous linux si les routeurs de votre serveur annoncent des blocs IPv6 /56 alors que vous configurez des /64.
Ajouter les lignes suivantes dans votre fichier <code>/etc/sysctl.conf</code> :
Ajouter les lignes suivantes dans un fichier <code>/etc/sysctl.d/local.conf</code> :
<pre>
<pre>
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.lo.autoconf = 0
net.ipv6.conf.eno3.autoconf = 0
net.ipv6.conf.eth0.autoconf = 0
net.ipv6.conf.vmbr0.autoconf = 0
net.ipv6.conf.vmbr0.autoconf = 0
net.ipv6.conf.vmbr1.autoconf = 0
net.ipv6.conf.dummy0.autoconf = 0
</pre>
</pre>
Si vous avez créé d'autres interfaces réseau, il faudra faire selon le même modèle.


Terminez par relancer procps :
Terminez par relancer procps :
Ligne 864 : Ligne 797 :
</pre>
</pre>


==L'interface web ne fonctionne pas, apache n'est pas lancé, et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==
==L'interface web ne fonctionne pas et la commande qm retourne une erreur ipcc_send_rec failed: Connection refused==


Vérifiez la présence de fichiers et dossiers dans <code>/etc/pve/</code>. Si ce dossier est vide, c'est probablement que votre fichier <code>/etc/hosts</code> est mal configuré.
Vérifiez la présence de fichiers et dossiers dans <code>/etc/pve/</code>. Si ce dossier est vide, c'est probablement que votre fichier <code>/etc/hosts</code> est mal configuré.<br>
Essayez de relancer <code>pve-cluster</code> :
Essayez de relancer <code>pve-cluster</code> :
<pre>/etc/init.d/pve-cluster restart</pre>
<pre>/etc/init.d/pve-cluster restart</pre>
Ligne 880 : Ligne 813 :
Si par exemple <code>/etc/hostname</code> contient <code>proxmox.domain.tld</code> vous devriez avoir la ligne suivante dans <code>/etc/hosts</code> :
Si par exemple <code>/etc/hostname</code> contient <code>proxmox.domain.tld</code> vous devriez avoir la ligne suivante dans <code>/etc/hosts</code> :
<pre>VOTREIP proxmox.domain.tld proxmox</pre>
<pre>VOTREIP proxmox.domain.tld proxmox</pre>
==Surveillance des disques durs==
<pre>smartctl -t offline /dev/sda</pre>
Pour vérifier le journal d'erreur
<pre>smartctl -l error /dev/sda</pre>
Les selftests :
<pre>
smartctl -t short /dev/sda
smartctl -t long /dev/sda
smartctl -t conveyance /dev/sda
</pre>
Pour vérifier le journal d'erreur des selftests :
<pre>smartctl -l selftest /dev/sda</pre>


==Pas assez d'interfaces loopback==
==Pas assez d'interfaces loopback==
4 231

modifications

Menu de navigation