XenServer / Luks Verschlüsselung

Vorwort:
In dieser Anleitung wird ein möglicher Weg beschrieben, wie man einen XenServer installieren kann. Hierbei wird auch auf die Einrichtung des Software Raids und einer Verschlüsselung mittels Luks eingegangen. Zu guter Letzt wird beschrieben wie man die ISO Files zur Installation der Gast Systeme in XenServer einbinden kann.

Voraussetzungen:
– Minimal Betriebssysteme (z.B.: Centos)
– Zweiter Server mit Webserver (z.B.: Apache)
– XenServer 5.5 Update 2 Installationsiso

Xenserver Installation:
Zu Beginn müssen wir unseren Webserver mit den benötigten Dateien versehen. Dazu wechseln wir in unser Webverzeichnis und kopieren die Dateien des ISO Files hier herein.
mount /root/XenServer-5.5.0-Update2-install-cd.iso /mnt
cp –r /mnt/* /var/www

Anschließend platzieren wir ein Answer File im Webverzeichnis um dem XenServer Anweisungen zur Installation geben zu können.
vim /var/www/answer.xml

grub sda de
xen
ROOT-PASSWORThttp://IP-ADRESSE_des_ausgepackten_ISO-Image


EIGENE_IP-ADRESSE
EIGENE_SUBNETZ-MASKE
EIGENES-GATEWAY

NAMESERVER
Europe/Berlin
ntp
ntp
NTP-SERVER

Auf dem installierten Minimalsystem werden zuerst die Xen-Boot-Dateien installiert:
cd /boot
wget http://xxx.xxx.xxx.xxx/PfadZumImageinhalt/boot/vmlinuz
wget http://xxx.xxx.xxx.xxx/PfadZumImageinhalt/boot/xen.gz
wget http://xxx.xxx.xxx.xxx/PfadZumImageinhalt/install.img
Dann ist natürlich das Grub-Bootmenu unter
/boot/grub/menu.lst
anpassen zu:
timeout 5
default 1

title CentOS Linux (2.6.18-164.11.1.el5)
root (hd0,1)
kernel /boot/vmlinuz-2.6.18-164.11.1.el5 ro root=/dev/md2 vga=0x317
initrd /boot/initrd-2.6.18-164.11.1.el5.img

title Install Xenserver
root (hd0,1)
kernel /boot/xen.gz dom0_mem=752M acpi=off nosmp noapic noirqbalance
module /boot/vmlinuz answerfile=http://IP-ADRESSE_DES_WEBSPACE/answer.xml install
module /boot/install.img
und der Rechner neu zu starten.
Die oben durchgeführte Installation des CentOS-Minimalsystems hat drei Software-Raid-1-Systeme angelegt, deren Signaturen nun noch im System rumgeistern. Diese sind zu löschen:
mdadm -S /dev/md0
mdadm -S /dev/md1
mdadm -S /dev/md2
mdadm –zero-superblock /dev/sdb1
mdadm –zero-superblock /dev/sdb2
mdadm –zero-superblock /dev/sdb3

Dann das Software Raid anlegen:

dd if=/dev/sda of=/dev/sdb bs=512 count=1
echo -e „\nt\n1\nfd\nt\n3\nfd\nw\nx“ | fdisk /dev/sdb
[ -e /dev/md0 ] || mknod /dev/md0 b 9 0
[ -e /dev/md1 ] || mknod /dev/md1 b 9 1
mdadm –create /dev/md0 –level=1 –raid-devices=2 missing /dev/sdb1
mdadm –create /dev/md1 –level=1 –raid-devices=2 missing /dev/sdb3
pvcreate -ff /dev/md1
volume_group=`vgscan | grep VG | awk -F \“ ‚{print $2}’`
vgextend $volume_group /dev/md1
pvmove /dev/sda3 /dev/md1
vgreduce $volume_group /dev/sda3
mkfs.ext3 /dev/md0
cd / && mount /dev/md0 /mnt && rsync -a –progress –exclude=/sys –exclude=/proc –exclude=/dev/shm –exclude=/dev/pts / /mnt
mkdir /mnt/sys
mkdir /mnt/proc
sed -r -i ’s,LABEL=root-\w+ ,/dev/md0 ,g‘ /mnt/etc/fstab
mkdir /root/initrd && cd /root/initrd
zcat /boot/initrd-`uname -r`.img | cpio -i && \
cp /lib/modules/`uname -r`/kernel/drivers/md/raid1.ko lib
q=“echo Waiting for driver initialization.“
sed -r -i „s,^${q}$,\n\necho Loading raid1.ko module\ninsmod /lib/raid1.ko\n${q}\n,g“ init
q=“resume /var/swap/swap.001″
sed -r -i „s,^${q}$,${q}\necho Running raidautorun\nraidautorun /dev/md0\nraidautorun /dev/md1,g“ init
r=`grep mkroot /root/initrd/init`
sed -r -i „s|^${r}$|${r/sda1/md0}|g“ init
find . -print | cpio -o -c | gzip -c > /mnt/boot/initrd-`uname -r`.img
sed -r -i ’s,LABEL=root-\w+ ,/dev/md0 ,g‘ /mnt/etc/fstab
sed -r -i ’s,LABEL=root-\w+ ,/dev/md0 ,g‘ /etc/fstab

sed -r -i ’s,root=LABEL=root-\w+ ,root=/dev/md0 ,g‘ /mnt/boot/grub/grub.conf
sed -r -i ’s,root=LABEL=root-\w+ ,root=/dev/md0 ,g‘ /boot/grub/grub.conf
grub-install /dev/sdb

Es muss noch einmal in ein Rettungssystem (ein System welches per PXE bootet und indem man auf die Platten zugreifen kann) gestartet werden und dort die Partitionstabelle modifiziert werden sowie die Xen-Hauptpartition ins Software-Raid
/dev/md0
eingebunden werden.
echo -e "\nt\n1\nfd\nt\n3\nfd\nw\nx" | fdisk /dev/sda
mdadm -a /dev/md0 /dev/sda1
Nach einem erneuten Neustart befinden wir uns wieder im Xen-System und erzeugen dort das Software-Raid für den späteren Image-Bereich, der die VMs aufnehmen soll:
mdadm -a /dev/md1 /dev/sda3

Dateisystem verschlüsseln:
Die Verschlüsselung auf MD1 einrichten (GGf. vorher das Device mit Random Daten überschreiben):
cryptsetup -y --cipher aes-cbc-essiv:sha256 --key-size 256 luksFormat /dev/md1

Ausgabe:
WARNING!
========
This will overwrite data on /dev/md1 irrevocably.

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.

Crypted partition mounten:
cryptsetup luksOpen /dev/md1 guestdata

LVM einrichten:
pvcreate -ff /dev/mapper/guestdata

Als Storage zum Xenserver hinzufügen:
xe sr-create content-type=user host-uuid=[PRESS TAB] type=lvm device-config-device=/dev/mapper/guestdata name-label="Local storage"

Standard local storage löschen:
Herausfinden der Standard SR-UUID:
xe sr-list

Herausfinden des hinzugehörenden PBD Devices:
xe pbd-list sr-uuid=[SR-UUID]

Unplug des PBD Devices:

xe pbd-unplug uuid=[PBD UUID]

PBD Device entfernen:

xe pbd-destroy uuid=[PBD UUID]

Verknüpfung zwischen PBD und SR vergessen:
xe sr-forget uuid=[SR-UUID]

Default SR anlegen:
Folgender Befehl macht ihr SR Device zum default Storage:
xe pool-param-set default-SR=[NEW SR UUID] uuid=[PRESS TAB]
Folgender Befehl macht ihr SR Device zum default Storage für Suspended VMs:
xe pool-param-set suspend-image-SR= [NEW SR UUID] uuid=[PRESS TAB]

Cryptpartition öffnen (nach reboot):
cryptsetup luksOpen /dev/md1 rootvolume
service xapi restart

Script zum Öffnen der Crypted Partition:
Um bei künftigen Neustarts das verschlüsselte System schnell wieder einbinden zu können, können wir uns ein Startup File anlegen.
vim /startup.sh

#!/bin/bash
cryptsetup luksOpen /dev/md1 guestdata
service xapi restart

chmod +x /startup.sh

Beim nächsten Neustart starten wir einfach /startup.sh und geben unser Passwort ein. Anschließend funktioniert das System wieder wie gewohnt.

Grafische Darstellung des Dateisystems:
xenserver-dateisystem

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.