4 206
modifications
Aucun résumé des modifications |
|||
(19 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 62 : | Ligne 65 : | ||
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. | 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 du système de base= | =Installation de proxmox= | ||
==Installation du système de base== | |||
<pre> | <pre> | ||
Ligne 73 : | Ligne 78 : | ||
<pre>debootstrap --arch=amd64 lenny /mnt http://ftp.fr.debian.org/debian</pre> | <pre>debootstrap --arch=amd64 lenny /mnt http://ftp.fr.debian.org/debian</pre> | ||
==Configuration de Debian== | ==Configuration de Debian== | ||
Ligne 228 : | Ligne 231 : | ||
<pre> | <pre> | ||
aptitude install proxmox-ve-2.6.35 ntp lvm2 | 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> | |||
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> |