4 234
modifications
Aucun résumé des modifications |
|||
(47 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 2 : | Ligne 2 : | ||
[[Category:debian]] | [[Category:debian]] | ||
[[Category:virtualisation]] | [[Category:virtualisation]] | ||
* '''Cette page n'est plus maintenue, les informations contenues ici sont potentiellement obsolètes''' | |||
=Prérequis= | =Prérequis= | ||
Ligne 16 : | Ligne 19 : | ||
* <code>/etc/hosts</code> | * <code>/etc/hosts</code> | ||
* <code>/etc/fstab</code> | * <code>/etc/fstab</code> | ||
* <code>/etc/mdadm/mdadm.conf </code> | * <code>/etc/mdadm/mdadm.conf</code> si vous disposez d'un raid logiciel | ||
* tout fichier de personnalisation de grub (<code>/etc/grub.d/06_OVHkernel</code> par exemple) | * tout fichier de personnalisation de grub (<code>/etc/grub.d/06_OVHkernel</code> par exemple) | ||
Ligne 25 : | Ligne 28 : | ||
* /dev/sd*2 15 Go (/) (type de partition : FD) | * /dev/sd*2 15 Go (/) (type de partition : FD) | ||
* /dev/sd*3 4096 Go (swap) (type de partition : 82) | * /dev/sd*3 4096 Go (swap) (type de partition : 82) | ||
* /dev/sd*4 20 Go (/var) (type de partition : FD) | * /dev/sd*4 partition étendue (invisible sous cfdisk) | ||
* /dev/sd* | * /dev/sd*5 20 Go (/var) (type de partition : FD) | ||
* /dev/sd*6 reste de l'espace disque (lvm) (type de partition : FD) | |||
Nous allons créer le RAID software (raid 1) : | Nous allons créer le RAID software (raid 1) : | ||
* /dev/md0 regroupant /dev/sda1 et /dev/sdb1 (/) | * /dev/md0 regroupant /dev/sda1 et /dev/sdb1 (/boot) | ||
* /dev/md1 regroupant /dev/sda2 et /dev/sdb2 (/var) | * /dev/md1 regroupant /dev/sda2 et /dev/sdb2 (/) | ||
* /dev/ | * /dev/md2 regroupant /dev/sda5 et /dev/sdb5 (/var) | ||
* /dev/md3 regroupant /dev/sda6 et /dev/sdb6 (lvm) | |||
<pre> | <pre> | ||
mdadm --create /dev/md0 --level=1 --assume-clean --raid-devices=2 /dev/sda1 /dev/sdb1 | mdadm --create /dev/md0 --level=1 --assume-clean --raid-devices=2 /dev/sda1 /dev/sdb1 | ||
mdadm --create /dev/md1 --level=1 --assume-clean --raid-devices=2 /dev/sda2 /dev/sdb2 | mdadm --create /dev/md1 --level=1 --assume-clean --raid-devices=2 /dev/sda2 /dev/sdb2 | ||
#sd*4 est la partition étendue | #sd*4 est la partition étendue | ||
mdadm --create /dev/md2 --level=1 --assume-clean --raid-devices=2 /dev/sda5 /dev/sdb5 | mdadm --create /dev/md2 --level=1 --assume-clean --raid-devices=2 /dev/sda5 /dev/sdb5 | ||
Ligne 43 : | Ligne 46 : | ||
</pre> | </pre> | ||
==Création des systèmes de fichiers== | |||
<pre> | |||
mkfs.ext3 /dev/md0 | |||
mkfs.ext3 /dev/md1 | |||
mkfs.ext3 /dev/md2 | |||
mkswap /dev/sda3 | |||
mkswap /dev/sdb3 | |||
</pre> | |||
==Création du LVM== | |||
<pre> | |||
pvcreate /dev/md3 | |||
vgcreate main /dev/md3 | |||
</pre> | |||
Nous ne créerons pas de volume logique dans le LVM maintenant. Nous laisserons en effet proxmox et KVM se charger de créer des volumes logiques pour chaque VM. | |||
=Installation de proxmox= | |||
==Installation du système de base== | |||
<pre> | |||
mount /dev/md1 /mnt | |||
mkdir /mnt/boot | |||
mkdir /mnt/var | |||
mount /dev/md0 /mnt/boot | |||
mount /dev/md2 /mnt/var | |||
</pre> | |||
<pre>debootstrap --arch=amd64 lenny /mnt http://ftp.fr.debian.org/debian</pre> | |||
==Configuration de Debian== | |||
<pre> | |||
mount -o bind /proc /mnt/proc | |||
mount -o bind /dev /mnt/dev | |||
mount -o bind /sys /mnt/sys | |||
chroot /mnt | |||
</pre> | |||
Editez le fichier /etc/apt/sources.list : | |||
<pre> | |||
deb http://ftp.fr.debian.org/debian lenny main contrib non-free | |||
deb-src http://ftp.fr.debian.org/debian lenny main contrib non-free | |||
#Sec | |||
deb http://security.debian.org/ lenny/updates main contrib non-free | |||
deb-src http://security.debian.org/ lenny/updates main contrib non-free | |||
deb http://volatile.debian.org/debian-volatile lenny/volatile main contrib non-free | |||
</pre> | |||
Mettez à jour les paquets : | |||
<pre> | |||
aptitude update | |||
aptitude safe-upgrade | |||
</pre> | |||
Installez les locales et la configuration de console : | |||
<pre> | |||
aptitude install locales | |||
dpkg-reconfigure locales | |||
aptitude install console-data | |||
dpkg-reconfigure console-data # from arch > french > latin9) | |||
</pre> | |||
Définissez la zone horaire : | |||
<pre> | |||
tzselect | |||
dpkg-reconfigure tzdata | |||
</pre> | |||
Installez mdadm pour gérer le raid software : | |||
<pre> | |||
aptitude install mdadm | |||
</pre> | |||
Configurez votre /etc/fstab : | |||
<pre> | |||
# /etc/fstab: static file system information. | |||
# | |||
# <file system> <mount point> <type> <options> <dump> <pass> | |||
proc /proc proc defaults 0 0 | |||
/dev/md1 / ext3 defaults,errors=remount-ro 0 1 | |||
/dev/md0 /boot ext3 defaults 0 2 | |||
/dev/sda3 none swap sw 0 0 | |||
/dev/sdb3 none swap sw 0 0 | |||
/dev/md2 /var ext3 defaults 0 2 | |||
</pre> | |||
/etc/network/interfaces : | |||
<pre> | |||
# This file describes the network interfaces available on your system | |||
# and how to activate them. For more information, see interfaces(5). | |||
# The loopback network interface | |||
auto lo | |||
iface lo inet loopback | |||
# The primary network interface | |||
auto vmbr0 | |||
iface vmbr0 inet static | |||
address <IP> | |||
netmask 255.255.255.0 | |||
gateway <GW> | |||
bridge_ports eth0 | |||
bridge_stp off | |||
bridge_fd 0 | |||
</pre> | |||
/etc/hosts : | |||
<pre> | |||
127.0.0.1 localhost | |||
::1 localhost ip6-localhost ip6-loopback | |||
fe00::0 ip6-localnet | |||
ff00::0 ip6-mcastprefix | |||
ff02::1 ip6-allnodes | |||
ff02::2 ip6-allrouters | |||
<IP> <hostname> | |||
</pre> | |||
<pre> | |||
echo votrehostname > /etc/hostname | |||
echo votrehostname > /etc/mailname | |||
</pre> | |||
N'oubliez pas de configurer les dns (ceux de votre hébergeur dédié) : | |||
<pre>nameserver XX.XX.XX.XX</pre> | |||
==Installation de proxmox== | |||
Ajoutez le dépot proxmox dans le fichier /etc/apt/source.list : | |||
<pre> | |||
# PVE packages provided by proxmox.com | |||
deb ftp://download.proxmox.com/debian lenny pve | |||
</pre> | |||
Ajoutez la clé du dépôt proxmox : | |||
<pre> | |||
wget -O- "http://download.proxmox.com/debian/key.asc" | apt-key add - | |||
aptitude update | |||
</pre> | |||
<pre> | |||
aptitude install grub-pc | |||
grub-install /dev/sda | |||
grub-install /dev/sdb | |||
</pre> | |||
http://pve.proxmox.com/wiki/Proxmox_VE_Kernel | |||
Pour profiter d'openVZ, installez le kernel 2.6.32* : | |||
<pre>aptitude install pve-kernel-2.6.32-4-pve | |||
update-grub | |||
</pre> | |||
Sinon, installez le kernel pve-kernel-2.6.35-1-pve qui permet de profiter de KSM : | |||
<pre> | |||
aptitude install pve-kernel-2.6.35-1-pve | |||
update-grub | |||
</pre> | |||
Attention ! Vérifiez votre fichier /boot/grub/grub.cfg ! En particulier les directives menuentry | |||
update-grub avait configuré la ligne de boot suivante sur mon installation : | |||
<pre>linux /vmlinuz-2.6.35-1-pve root=/dev/md/1 ro</pre> | |||
a corriger en | |||
<pre>linux /vmlinuz-2.6.35-1-pve root=/dev/md1 ro</pre> | |||
Accesoirement installez les headers | |||
<pre>aptitude install pve-headers-2.6.35-1-pve | |||
</pre> | |||
<pre> | |||
aptitude install openssh-server | |||
passwd | |||
</pre> | |||
Si vous avez installé le kernel pve-kernel-2.6.35-1-pve installez proxmox-ve-2.6.35. Sinon, adaptez en fonction de votre kernel. | |||
<pre> | |||
aptitude install proxmox-ve-2.6.35 ntp lvm2 | |||
</pre> | |||
==configuration réseau avancée== | |||
===Ajout d'une IPv6 sur vmbr0=== | |||
Ajoutez les lignes suivantes dans <code>/etc/network/interfaces</code> | |||
<pre> | |||
iface vmbr0 inet6 static | |||
address <votreipv6> | |||
netmask <votre masque ipv6 (généralement 64) | |||
</pre> | |||
===Ajout d'un réseau interne=== | |||
Nous allons voir comment créer un réseau interne avec proxmox, c'est à dire, un réseau qui ne sera attaché à aucune interface réseau physique. L'intérêt est d'offrir un débit bien supérieur pour les communications entre les VMs. | |||
Ajoutez les lignes suivantes dans <code>/etc/network/interfaces</code> | |||
<pre> | |||
auto vmbr1 | |||
iface vmbr1 inet static | |||
address 192.168.0.1 | |||
netmask 255.255.255.0 | |||
broadcast 192.168.0.255 | |||
bridge_ports dummy0 | |||
bridge_stp off | |||
bridge_fd 0 | |||
#post-up /etc/pve/kvm-networking.sh | |||
</pre> | |||
Si vous voulez utiliser deux interfaces internes, ajoutez la ligne suivante dans <code>/etc/modprobe.d/local</code> : | |||
<pre>options dummy numdummies=2</pre> | |||
Note : vous pouvez faire de même en ipv6 : | |||
* il faut utiliser le range fd00::/8 (http://en.wikipedia.org/wiki/Unique_Local_Address) | |||
* pour générer votre ula : http://pfoo.csnu.org/ula/gen-ula.html | |||
==reboot et postinstallation== | |||
<pre> | |||
exit | |||
umount /mnt/boot | |||
umount /mnt/var | |||
umount /mnt/proc | |||
umount /mnt/sys | |||
umount /mnt/dev | |||
umount /mnt | |||
</pre> | |||
Rebootez votre serveur en mode normal : | |||
<pre>reboot</pre> | |||
Créez votre utilisateur : | |||
<pre>adduser pfoo</pre> | |||
Je vous conseil de commencer à sécuriser votre ssh : | |||
* désactivez le login root (directive PermitRootLogin no dans <code>/etc/ssh/sshd_config</code>) | |||
* ajoutez la directive allowusers pfoo dans <code>/etc/ssh/sshd_config</code> | |||
=Utiliser son propre certificat ssl pour l'interface web= | |||
Je vous renvoi sur http://wiki.csnu.org/index.php?title=Installation_et_configuration_de_OpenSSL pour la mise en place d'une autorité de certification. | |||
Dans l'exemple suivant, je créé un certificat proxmox et le signe avec l'autorité onyx_ca : | |||
<pre> | |||
openssl req -newkey rsa:2048 -keyout proxmox.key -out proxmox.req | |||
openssl ca -name onyx_ca -extensions PROXMOX -in proxmox.req -out proxmox.pem | |||
</pre> | |||
<pre> | |||
mkdir /etc/apache2/ssl/ | |||
mv proxmox.* /etc/apache2/ssl/ | |||
cat /etc/ssl/root_ca/root_ca.pem /etc/ssl/onyx_ca/onyx_ca.pem > /etc/apache2/ssl/cachain.pem | |||
</pre> | |||
Modifiez le fichier <code>/etc/apache2/sites-enabled/pve.conf</code> comme suit : | |||
<pre> | |||
<VirtualHost *:443> | |||
SSLEngine on | |||
SSLProtocol all -SSLv2 | |||
#SSLCertificateFile /etc/pve/pve-ssl.pem | |||
#SSLCertificateKeyFile /etc/pve/pve-ssl.key | |||
SSLCertificateFile /etc/apache2/ssl/proxmox.pem | |||
SSLCertificateKeyFile /etc/apache2/ssl/proxmox.key | |||
SSLCertificateChainFile /etc/apache2/ssl/cachain.pem | |||
RewriteEngine on | |||
RewriteCond %{REQUEST_METHOD} ^(TRACE|TRACK) | |||
RewriteRule .* - [F] | |||
</VirtualHost> | |||
</pre> | |||
=Installer un serveur dns pour ses VEs= | |||
Commencez par installer le serveur bind9 : | |||
<pre>aptitude install bind9 bind9-host dnsutils</pre> | |||
Éditez le fichier <code>/etc/bind/named.conf.options</code> et ajoutez y les lignes suivantes : | |||
<pre> | |||
allow-query { | |||
127.0.0.1; | |||
91.121.141.220; | |||
::1; | |||
2001:41d0:1:bcdc::220; | |||
192.168.0.0/24; | |||
}; | |||
allow-recursion { | |||
127.0.0.1; | |||
91.121.141.220; | |||
::1; | |||
2001:41d0:1:bcdc::220; | |||
192.168.0.0/24; | |||
}; | |||
allow-query-cache { | |||
127.0.0.1; | |||
91.121.141.220; | |||
::1; | |||
2001:41d0:1:bcdc::220; | |||
192.168.0.0/24; | |||
}; | |||
version "[SECURED]"; | |||
allow-notify { | |||
127.0.0.1; | |||
91.121.141.220; | |||
::1; | |||
2001:41d0:1:bcdc::220; | |||
192.168.0.0/24; | |||
}; | |||
//interdiction du transfère complet de zones | |||
allow-transfer {"none";}; | |||
listen-on { 127.0.0.1; 192.168.0.0/24; 91.121.141.220; }; | |||
listen-on-v6 { ::1; 2001:41d0:1:bcdc::220; }; | |||
transfer-source 91.121.141.220; | |||
transfer-source-v6 2001:41d0:1:bcdc::220; | |||
notify-source 91.121.141.220; | |||
notify-source-v6 2001:41d0:1:bcdc::220; | |||
</pre> | |||
Vous pouvez noter que j'ai autorité toutes les IPs 192.168.0.0 à interroger le serveur dns étant donné que je me servirais de cette classe pour créer un réseau interne pour mes VEs. | |||
Ajoutez les lignes suivantes dans <code>/etc/resolv.conf</code> : | |||
<pre> | |||
nameserver ::1 | |||
nameserver 127.0.0.1 | |||
nameserver 192.168.0.1 | |||
nameserver 2001:41d0:1:bcdc::220 | |||
nameserver 91.121.141.220 | |||
</pre> | |||
=Sécuriser et configurer le serveur mail de son host= | |||
Lors de l'installation de l'interface proxmox, <code>postfix</code> a été automatiquement installé. | |||
Modifiez la configuration de postfix dans <code>/etc/postfix/main.cf</code> comme suit : | |||
<pre> | |||
# See /usr/share/postfix/main.cf.dist for a commented, more complete version | |||
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) | |||
biff = no | |||
# appending .domain is the MUA's job. | |||
append_dot_mydomain = no | |||
# Uncomment the next line to generate "delayed mail" warnings | |||
#delay_warning_time = 4h | |||
readme_directory = no | |||
# TLS parameters | |||
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 | |||
# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for | |||
# information on enabling SSL in the smtp client. | |||
myhostname = onyx.csnu.org | |||
mydomain = onyx.csnu.org | |||
alias_maps = hash:/etc/aliases | |||
alias_database = hash:/etc/aliases | |||
myorigin = /etc/mailname | |||
mydestination = onyx.csnu.org, localhost | |||
relayhost = | |||
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24 | |||
mailbox_size_limit = 0 | |||
recipient_delimiter = + | |||
inet_protocols = all | |||
inet_interfaces = 127.0.0.1, [::1], 192.168.0.1, 91.121.141.220, [2001:41d0:1:bcdc::220] | |||
smtpd_sender_restrictions = | |||
reject_unknown_sender_domain, | |||
reject_non_fqdn_sender | |||
smtpd_recipient_restrictions = | |||
permit_mynetworks, | |||
permit_sasl_authenticated, | |||
reject_non_fqdn_hostname, | |||
reject_non_fqdn_sender, | |||
reject_non_fqdn_recipient, | |||
reject_unauth_destination, | |||
reject_unauth_pipelining, | |||
reject_invalid_hostname | |||
</pre> | |||
==SSL== | |||
Si vous avez votre propre autorité ssl, vous pouvez générer votre propre certificat. | |||
Ajoutez les lignes suivantes dans <code>/etc/ssl/openssl.cnf</code> : | |||
<pre> | |||
[POSTFIX] | |||
nsComment = "SMTP Server Certificate" | |||
subjectKeyIdentifier = hash | |||
authorityKeyIdentifier = keyid,issuer:always | |||
issuerAltName = issuer:copy | |||
basicConstraints = critical,CA:FALSE | |||
keyUsage = digitalSignature, nonRepudiation, keyEncipherment | |||
nsCertType = server | |||
extendedKeyUsage = serverAuth | |||
</pre> | |||
Puis générez la clé et le certificat, et signez le avec votre autorité (onyx_ca dans mon cas) : | |||
<pre> | |||
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 | |||
</pre> | |||
Déplacez les fichiers dans le répertoire <code>/etc/postfix/ssl</code>: | |||
<pre> | |||
mkdir /etc/postfix/ssl | |||
mv postfix.key /etc/postfix/ssl/ | |||
mv postfix.pem /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 | |||
</pre> | |||
Il faut encore modifier <code>/etc/postfix/main.cf</code> : | |||
<pre> | |||
smtpd_tls_cert_file=/etc/postfix/ssl/postfix.pem | |||
smtpd_tls_key_file=/etc/postfix/ssl/postfix.key | |||
smtpd_tls_CAfile=/etc/postfix/ssl/ca_chain.pem | |||
smtpd_use_tls=yes | |||
smtp_tls_cert_file=/etc/postfix/ssl/postfix.pem | |||
smtp_tls_key_file=/etc/postfix/ssl/postfix.key | |||
smtp_tls_CAfile=/etc/postfix/ssl/ca_chain.pem | |||
</pre> | |||
=Protéger votre proxmox= | |||
==sshguard== | |||
http://wiki.csnu.org/index.php?title=Prot%C3%A9ger_SSH_avec_sshguard | |||
==iptables== | |||
=Télécharger vos images= | |||
Téléchargez les iso des OS que vous souhaitez utiliser dans <code>/var/lib/vz/template/iso</code> | |||
=Créer votre première VM= | |||
Utilisez votre navigateur web pour accéder à https://ip_de_votre_serveur. C'est l'interface web de proxmox. | |||
Cliquez sur <code>Storage</code> puis ajoutez un storage de type "lvm group" | |||
Sur la page d'ajout, sélectionnez le groupe lvm que vous avez créé durant l'installation (ici, je l'avais appelé "main") puis sauvegardez. | |||
Cliquez sur <code>Virtual Machines</code> puis sur <code>create</code> | |||
Dans <code>Installation Media:</code> sélectionnez l'iso que vous avez téléchargé au préalable. | |||
Dans <code>Disk Storage:</code> selectionnez votre LVM. | |||
Configurez l'espace disque et la ram, et nommez votre VM. | |||
Dans la partie <code>Network</code> selectionnez <code>vmbr0</code> comme bridge et précisez l'adresse mac fournie par votre prestataire de service | |||
Cliquez sur <code>create</code> pour créer votre VM | |||
Sélectionnez ensuite votre VM et cliquez sur le bouton <code>Start</code> | |||
=Accéder a une VM avec un client vnc= | |||
Lorsque la VM est lancée, loguez vous en ssh sur votre proxmox et tapez : | |||
<pre>nc -l -p 5900 -c "qm vncproxy VMID PASSWORD"</pre> | |||
VMID étant le numéro de la VM, et password le mot-de-passe pour accéder au vnc. | |||
Il ne vous reste plus qu'à lancer votre client vnc préféré. | |||
Souvenez vous que dans le cas présent, la connexion vnc n'est pas chiffrée ! Il serait bon d'envisager de se connecter au travers d'un tunnel ssh. | |||
=Importer une VM depuis vmware ESXi= | |||
=qm et modification des VMs en ligne de commande= | |||
=Protéger SSH dans une VM= | |||
Reportez vous à [[Protéger SSH avec sshguard]] | |||
=Annexes= | |||
==Erreurs du type <code>IPv6 addrconf: prefix with wrong length 56</code> == | |||
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> : | |||
<pre> | <pre> | ||
net.ipv6.conf.all.autoconf = 0 | |||
net.ipv6.conf.default.autoconf = 0 | |||
net.ipv6.conf.lo.autoconf = 0 | |||
net.ipv6.conf.eth0.autoconf = 0 | |||
net.ipv6.conf.vmbr0.autoconf = 0 | |||
net.ipv6.conf.vmbr1.autoconf = 0 | |||
net.ipv6.conf.dummy0.autoconf = 0 | |||
</pre> | </pre> |