Serveur d'Hébergement Expérimental
ProxmoxVE
Proxmox Virtual Environment (ou Proxmox VE) est une suite de logiciels permettant de mettre en place aisément un hyperviseur (ou serveur hébergeant des machines virtuelles).
Voir l'article de présentation dans la rubrique Logiciels Libres.
Une petite présentation de ProxmoxVE avait été faite l'an dernier suite à un test plutôt concluant de ce système de Virtualisation basé à la fois sur OpenVZ et KVM. ( A cette page )
Je reviens ici avec une présentation plus détaillée sur l'installation complète du système ProxmoxVE. Mon objectif aujourd'hui est de préparer une infrastructure ProxmoxVE 1.8 en installant ce dernier sur une machine virtuelle. L'objectif est de préparer un serveur de virtualisation virtuel qui pourra être totalement migré vers une machine physique dédiée ultérieurement.
Dans cette première phase, il ne sera possible d'utiliser que la partie OpenVZ de ProxmoxVE. En installant ce système sur une machine virtuelle, l'accès aux fonctions de virtualisation sera tout simplement bloqué par la machine hôte. Il faudra donc mettre une croix sur l'utilisation de KVM et donc sur les systèmes d'exploitation non-compatibles avec OpenVZ (dont Windows dans toutes ses déclinaisons).
1. Téléchargement de la dernière version de ProxmoxVE
La dernière version ProxmoxVE 1.8 est disponible à cette adresse sous forme d'ISO : http://www.proxmox.com/downloads/proxmox-ve/iso-images/89-proxmox-ve-1
Cette version 1.8 utilise le Kernel pve-kernel-2.6.32, et KVM 0.14.1 et est basée sur le système d'exploitation Debian Lenny 5.0.8.
2. Préparation de la machine virtuelle hôte
Pour cette nouvelle machine, j'ai libéré 50 Go d'espace de stockage rapide (basé sur 2 disque durs Seagate Cheetah en RAID 1, Raid-matériel je précise. Je déconseille fortement l'utilisation du RAID de votre carte mère ou d'une carte Fake-Raid qui vous apportera plus de maux de tête et d'infiabilité qu'autre chose. Un article suivra pour plus d'explications, mais vous pouvez déja scruter des milliers de posts à ce sujet).
Pour des questions de confort et techniques, mon architecture actuelle ne me permettra pas d'attribuer plus de 2 Go de mémoire vive, et 2 virtual-cores à cette nouvelle machine.
Dans le cas d'une utilisation conjointe avec KVM, bien sûr 2 Go seront clairement insuffisants.
Au niveau du réseau, de nombreux sites préconisent l'utilisation de 2 NIC, dans mon cas je ne vois pas l'intérêt, je n'en utiliserai qu'un.
Pour un cluster complet de machines ProxmoxVE, en effet, il peut être important d'installer 2 cartes réseau dans chaque serveur ! Une carte dédiée à la communication interne au cluster (si possible en Giga-bit pour des questions de confort, rapidité, temps de transfert des VM, etc.), et une seconde carte plus classique pour l'accès aux VM depuis un réseau plus ouvert (et qui devra donc être plus sécurisé !).
3. Création de la machine et installation de ProxmoxVE
Je ne m'étendrai pas sur la création de la machine virtuelle, dans d'autres cas, il peut s'agir de la préparation physique de la machine hôte.
Pour installer ProxmoxVE, démarrer la machine à partir de l'ISO ou du CD téléchargé.
Au premier écran, appuyer sur "Entrée" pour lancer l'installeur.
L'installeur vous demandera ensuite d'accepter la licence GNU pour continuer. Sur la page suivante, cliquer sur le bouton Next pour poursuivre l'installation.
Choisissez vos options géographiques et linguistiques préférées sur l'écran suivant, puis un mot de passe pour le compte root ainsi qu'une adresse e-mail.
Configurer les paramètres du réseau. Ici vous devrez utiliser un Nom de domain complet, par exemple : machine.example.com, ou machine.sous-domaine.domaine.com
L'installeur va ensuite copier les données. A la fin de la copie, cliquer sur Reboot pour redémarrer la machine.
Une fois la machine redémarrée, ouvrir une session avec le login root et le mot de passe précédement défini.
N'hésitez pas à faire une mise à jour de l'OS avant de continuer quoi que ce soit, puis rebooter:
aptitude update && aptitude upgrade, puis reboot. (Ne pas oublier de retirer le CD)
Dans mon cas, il est nécessaire également d'installer les VMWareTools pour la meilleure gestion de l'ensemble des machines contenues sur l'hôte physique. Je ne détaillerai pas cette étape car trop longue et vraiment non-intuitive.
4. Configuration de ProxmoxVE
La configuration et la gestion des machines virtuelles se fait depuis l'interface web. Pour y accéder, utiliser l'adresse https:// et l'IP de l'hôte.
Pour s'authentifier, utiliser le login root et le mot de passe déterminé auparavant.
La langue de l'interface peut être changée dans le menu Configuration > System > Options. Toutes les options configurées pendant l'installation peuvent aussi être modifiées dans les autres menus.
Dans le menu Configuration > Storage, il est possible d'ajouter d'autres espaces de stockage locaux dans le cas où plusieurs disques durs ont été installés, formatés, et configurés sur la machine hôte.
5. Téléchargement d'Appliances
Les Appliances officielles de ProxmoxVE peuvent être téléchargées dans le menu Gestionnaire de VM > Modèles d'Appliance > Télécharger.
L'Appliance d'Ubuntu Lucid 10.04 LTS peut être téléchargée ici. Il s'agit de la version 32bits. D'autres versions (Non-LTS et version 64bits) peuvent être téléchargées manuellement sur le wiki de ProxmoxVE : http://pve.proxmox.com/wiki/Get_Virtual_Appliances
Pour lancer le téléchargement, cliquer sur la flèche précédant le nom de l'Appliance, et choisir Télécharger. L'état du téléchargement sera affiché en haut de la page actuelle.
6. Création d'une Machine Virtuelle
Pour créer une nouvelle machine virtuelle à partir de l'Appliance téléchargée : Gestionnaire de VM > Machines virtuelles > Créer.
Dans mon cas, il est impossible d'utiliser la technologie KVM, la machine sera donc de type OpenVZ.
Le modèle choisi sera ici le seul téléchargé : ubuntu-10.04-standard.
La mémoire vive par défaut est réglée à 512 Mo, ce qui est suffisant pour un système contenu dans un Container OpenVZ. La Swap de 512 Mo peut être suffisante également, mais dans tous les cas, je conseille de limiter l'utilisation de la mémoire Swap dans les systèmes virtualisés. En effet lorsque le système commence à utiliser la mémoire Swap, les temps de réponse et les accès disques de toutes les autres machines sont fortement ralentis, et peuvent vite rendre le système complètement inutilisable.
Le type de réseau "Bridgé" doit être utilisé pour permettre la communication avec le reste du réseau externe.
Pour terminer, valider avec le bouton Create. L'interface montrera ensuite l'exécution de la commande, et donc les éventuels message d'erreurs qui peuvent intervenir.
Pour démarrer la machine virtuelle précédement créée, utiliser le menu Gestionnaire de VM > Machines virtuelles > Lister.
Trouver la machine dans la liste, cliquer sur la flèche précédant son nom et sur Démarrage pour démarrer la machine.
7. Se connecter à la machine virtuelle
Pour utiliser directement la machine virtuelle de type OpenVZ depuis un terminal, se connecter en SSH sur l'hôte : ssh root@machine
Une fois sur l'hôte, utiliser la commande vzlist -a pour lister toutes les machines virtuelles. Bien noter le CTID de la machine sur laquelle on souhaite se connecter.
ProxmoxHost:~# vzlist -a
CTID NPROC STATUS IP_ADDR HOSTNAME
101 9 running - VMTest.sychlora.dvrdns.org
Pour s'y connecter, taper vzctl enter et le CTID de la machine virtuelle.
ProxmoxHost:~# vzctl enter 101
entered into CT 101
root@VMTest#
8. Configuration du réseau et mises à jour
Sur la machine virtuelle, éditer le fichier de configuration réseau en utilisant VI.
root@VMTest# vi /etc/network/interfaces
Une fois dans VI, aller à la fin du fichier, appuyer sur la touche a et taper les 2 lignes suivantes :
auto eth0
iface eth0 inet dhcp
Pour sauvegarder et quitter, taper la touche "Echap", entrer la commande ":wq" et appuyer sur "Entrée".
Taper "reboot" pour relancer la machine virtuelle, celle-ci devrait maintenant prendre une adresse IP automatiquement sur votre DHCP. (Je ne détaillerai pas la configuration pour un adressage en IP fixe, mais pour plus de confort, vous pourrez installer nano !)
Comme lors de l'installation de ProxmoxVE, il faudra mettre à jour la machine virtuelle avec la commande apt-get update && apt-get upgrade.
Pour la configuration du fuseau horaire, utiliser dpkg-reconfigure tzdata.
9. Ajout d'un utilisateur principal et désactivation du compte root
Pour ajouter un uilisateur, utiliser la commande adduser et le login.
Utiliser un éditeur de texte pour ouvrir le fichier /etc/sudoers et y ajouter votre nouveau login de la même manière que l'utilisateur root est déja présent.
Pour désactiver la possibilité de se connecter en SSH avec l'utilisateur root, nous allons supprimer son mot de passe. Dans le fichier /etc/passwd, remplacer le 2ème champ de l'utilisateur root par un "*" au lieu du "x".
root:*:0:0:root: /root: /bin/bash
Et dans le fichier /etc/shadow, remplacer le 2ème champ par un "!" au lieu du mot de passe crypté.
root:!:15090:0:99999:7:::
Fermer la session; à partir de maintenant, il sera impossible de se connecter avec ssh root@machine, il faudra utiliser le nouveau login à la place de root.
10. Installation de Fail2ban
A partir de votre nouveau compte utilisateur, installer fail2ban grâce à la commande sudo apt-get install fail2ban. Pour rappel, fail2ban surveille un certain nombre de logs de sécurité sur le serveur, et est capable de bannir une adresse IP pendant un certain temps en cas d'attaque ou de brute-force sur SSH, HTTP, FTP, POP, SMTP, etc.
Par défaut, cette sécurité est activée pour les serveur SSH, Apache, Vsftpd, Proftpd, Wuftpd, Postfix, Couriersmtp et le serveur DNS. Ce qui couvre les attaque les plus fréquente sur les types de serveurs les plus courants.
11. Changes les clés SSH
Pour éviter d'utiliser des clés SSH identiques à celles de l'appliance, nous allons supprimer toutes les clés existantes et créer manuellement de nouvelles clés.
Toujours sur la machine virtuelle, exécuter sudo rm /etc/ssh/ssh_host_* pour supprimer toutes les clés SSH.
Puis, sudo dpkg-reconfigure openssh-server pour créer de nouvelles clés.
En vous déconnectant et vous re-connectant à nouveau par SSH, vous devriez avoir une alerte :
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Ouvrir le fichier /root/.ssh/known_hosts, et supprimer la dernière entrée (elle devrait normalement correspondre à la machine virtuelle).
Lors de la prochaine connexion au SSH, vous aurez alors le message suivant :
The authenticity of host '192.168.1.193 (192.168.1.193)' can't be established.
RSA key fingerprint is ...............
Are you sure you want to continue connecting (yes/no)?
Répondre "yes" pour ajouter la clé, puis quitter à nouveau la machine virtuelle.
12. Création d'une Appliance
Pour pouvoir clôner plus facilement cette machine virtuelle pour en créer de nouvelles, nous allons maintenant créer une Appliance avec cette configuration. (Pour éviter les désagréments, laisser l'adresse IP en DHCP le temps de créer l'Appliance, elle pourra être re-modifiée après.)
Avant de procéder à l'étape suivante, assurez-vous que la machine virtuelle est arrêtée.
Pour arrêter la machine virtuelle, cliquer sur la flèche qui précéde son nom, et choisir Stop.
Sur un terminal de l'hôte ProxmoxVE, tapez vzlist -a pour les machines virtuelles et trouver le CTID de la machine qui va servir à créer l'Appliance. Dans mon cas, la machine qui sera utilisée a le CTID 101.
Dans le cas où aucun répertoire par défaut n'a été changé, avec un seul disque et/ou un seul emplacement configuré, les Appliances se trouveront dans le dossier /var/lib/vz/template/cache, et les machines virtuelles à l'arrêt dans le dossier /var/lib/vz/private/.
Dans le cas où vous auriez plusieurs emplacements de stockage locaux, un df -h pourra vous aider à trouver les emplacements utilisés par votre hôte Proxmox :
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/pve-root 13G 1.1G 11G 10% /
tmpfs 1003M 0 1003M 0% /lib/init/rw
udev 10M 548K 9.5M 6% /dev
tmpfs 1003M 0 1003M 0% /dev/shm
/dev/mapper/pve-data 29G 989M 28G 4% /var/lib/vz <-- Mon emplacement principal
/dev/sda1 504M 32M 447M 7% /boot
Exécuter les commandes suivantes pour créer une Appliance directement dans le dossier des appliances de ProxmoxVE.
cd /var/lib/vz/private/101/ (remplacer ici 101 par le CTID choisi)
tar --numeric-owner -vzcf ../../template/cache/ubuntu-10.04-monAppliance_i386.tar.gz . (et ubuntu-10.04-monAppliance_i386 par le nom désiré. Je ne suis pas sûr qu'il y ait une convention/restriction dans les noms des Appliances.)
Une fois l'exécution terminée, vous trouverez votre Appliance depuis l'interface de ProxmoxVE à la page Gestionnaire de VM > Modèles d'Appliance.
13. Utilisation de l'Appliance
Répéter l'étape numéro 6 pour créer une machine virtuelle, cette fois, c'est l'Appliance qui vient d'être créée qui sera utilisée.
Une fois la machine virtuelle créée, il sera possible de s'y connecter directement en SSH avec le compte root.
En effet, ProxmoxVE réactive automatiquement le compte root lors de la création d'une nouvelle machine. Il faudra donc procéder comme dans l'étape 9 pour supprimer le mot de passe de root dans les fichier /etc/passwd et /etc/shadow.
Fermer ensuite la session root, puis se connecter avec le compte utilisateur créé auparavant.
Pour vérifier que l'utilisateur actuel possède bien les droits d'administrateur, taper sudo su pour utiliser la session root. Si l'utilisateur n'a pas les droits, la commande sudo renverra un message d'erreur.
Sources :
http://www.howtoforge.com/installing-and-using-openvz-on-ubuntu-10.04-p2
http://blog.bodhizazen.net/linux/ubuntu-10-04-openvz-templates/
http://www.developpez.net/forums/d790477/systemes/linux/distributions/ubuntu/desactiver-compte-root-ubuntu-9-04-a/
Le CD de Proxmox VE est disponible en téléchargement à : http://pve.proxmox.com/wiki/Downloads
Dans le cas d'une installation 32 ou 64 bits sur une machine Debian déjà en place :
- 32 bits (à suivre de pair avec la procédure 64 bits) : http://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Lenny_on_32-Bit_Processor
- 64 bits : http://pve.proxmox.com/wiki/Install_Proxmox_VE_on_Debian_Lenny