OpenVZ 7 mit CentOS 7 auf einem Hetzner Server

Bildschirmausgabe Hetzner Installimage

In diesem Artikel beschreibe ich, wie man auf einem Rootserver von Hetzner OpenVZ 7 mit CentOS 7 als Betriebssystem installiert. Der erste Teil befasst sich mit der Installation von CentOS. Dieser ist natürlich speziell für Hetzner-Server ausgelegt. Der Abschnitt über die Installation von OpenVZ 7 lässt sich natürlich auf jeden anderen Server mit CentOS 7 übertragen.

Installation von CentOS 7

Sofern noch nicht geschehen, booten wir den Dedi in den Rescue-Modus. Zu beachten ist für die folgende Installation, dass OpenVZ nicht zusammen mit XFS funktioniert, dem entsprechend sollten die Partitionen mit ext4 angelegt werden.

Mit installimage wird das CentOS 7 Image installiert. Auf die genaue Konfiguration gehe ich in diesem Artikel nicht weiter ein. Sinnvoll ist eine Partitionierung mit LVM.

# installimage
-> CentOS -> CentOS-74-64-minimal1

Bei der Partitionierung mit LVM ist zu beachten, dass in der Volumegroup noch mindestens 512MB, besser deutlich mehr, frei ist für Snapshots.

Ein paar Vorbereitungen

Nun kontrollieren wir, ob LVs angelegt und verfügbar sind und mounten dann das neue System:

# ls /dev/mapper
Hier sollten nun die in installimage angelegten LVs zu sehen sein. Bei mir sind es vg0-root, vg0-vz und vg0-dump.
Das root-Verzeichnis habe ich als normale Partition angelegt, folglich muss ich diese als /dev/md0 (SoftwareRaid) einbinden.

# mount /dev/mapper/vg0-root /mnt
# mount /dev/md0 /mnt/boot

Jetzt das System vorbereiten und chrooten:
# chroot-prepare /mnt
# chroot /mnt

Nun können wir einen separaten Benutzer anlegen und ein Passwort vergeben. So gehe ich grundsätzlich immer vor, weil ich den remote login von root auf allen Servern verbiete.
# useradd <deinuser>
# passwd <deinuser>

Für den Login über ssh mit public keys hinterlegen wir den key:
# cd /home/<deinuser>
# mkdir .ssh
# nano .ssh/authorized_keys

Auf dem heimischen PC:
# ssh-keygen -t rsa -b 4096
# cat <pubkey>
Copy and Paste in die neue authorized_keys auf dem Server.

Noch eben den Zugriff beschränken:
# chown -R <deinuser> .ssh
# chmod 400 .ssh/authorized_keys

Über die Absicherung von ssh könnte ich einen ganzen separaten Artikel schreiben, daher beschränke ich mich hier auf das Wesentliche. Den ssh-Server lassen wir auf einem anderen Port als den Standardport 22 lauschen, lassen nur noch PubKey zu und lassen root gar nicht erst rein:

# nano /etc/ssh/sshd_config
Port entkommentieren und auf einen anderen beliebigen Port als 22 und größer als 1024 setzen.
PubkeyAuthentication yes entkommentieren.
PermitRootLogin yes auskommentieren.
PasswordAuthentication yes auskommentieren.

Natürlich gibt es noch eine Menge anderer sicherheitsrelevanter Punkte, die noch zu beachten sind, aber hier geht es ja primär darum, die Kiste ans Laufen zu bekommen. Daher können wir jetzt den chroot verlassen und den Server rebooten.

Ctrl-d oder exit
# umount /mnt/boot
# umount /mnt
# reboot

Während der Dedi bootet löschen wir noch den ssh-fingerprint, den Rescue System hinterlassen hat:

Heimischer PC:
# nano .ssh/known_hosts
Die Zeile mit der IP des Dedis entfernen.

Installation von OpenVZ 7

Mittlerweile sollten wir uns wieder per ssh auf dem Dedi einloggen können und kontrollieren, ob das SoftwareRaid sich synchronisiert:

# cat /proc/mdstat

Nun benötigen wir noch eine Abhängigkeit und installieren diese: 1
# wget http://cbs.centos.org/kojifiles/packages/python-subprocess32/3.2.6/7.el7/x86_64/python-subprocess32-3.2.6-7.el7.x86_64.rpm
# rpm -i python-subprocess32-3.2.6-7.el7.x86_64.rpm

OpenVZ Release installieren:1
# yum localinstall https://download.openvz.org/virtuozzo/releases/openvz-7.0.6-509/x86\_64/os/Packages/o/openvz-release-7.0.6-5.vz7.x86_64.rpm

Kernel und weitere Pakete installieren:
# yum install prlctl prl-disp-service vzkernel ploop

Wenn das ganze nun geschafft ist, können wir den Server rebooten, uns zurücklehnen und einen Kaffee trinken.
# reboot

Wenn der Dedi dann endlich wieder da ist, schauen wir nach, ob er den richtigen Kernel gebootet hat:
# uname -r
3.10.0-693.11.6.vz7.40.4

Danach prüfen wir, ob OpenVZ läuft:
# systemctl status vz

Absicherung

Damit Ihr dann keine nette Absuse-Mail vom BSI bekommt, solltet Ihr den externen Zugriff auf den Portmapper unterbinden. Entweder durch entsprechende Firewallregeln oder ganz einfach durch Hinzufügen der folgenden Zeile in die /etc/hosts.deny. Sofern Ihr keine NFS shares oder ähnliches nutzen wollt, könnt Ihr den portmapper natürlich auch komplett ausschalten. Das ist die sicherste Variante.

# nano /etc/hosts.deny
rpcbind: ALL

Testen kann man den Erfolg von einem anderen Computer aus:
# rpcinfo -p ip.des.hetzner.dedi
rpcinfo: can’t contact portmapper: rpcinfo: RPC: Authentication error; why = Client credential too weak

Wenn Ihr nun anderen Servern den Zugriff ermöglichen wollt, können diese in der /etc/hosts.allow eingetragen werden.

Editor

Da ich persönlich ein Fan vom Editor nano bin, stelle ich diesen auch gleich als default ein. In der .bashrc meines Benutzers trage ich folgendes ein:

export EDITOR=/usr/bin/nano

Falls noch nicht geschehen, solltet Ihr noch im Hetzner Robot den Reverse DNS Eintrag vom Server einstellen.
Nun steht der fröhlichen Virtualisierung nichts mehr im Wege!

Update

Bei einem Update von CentOS bin ich auf ein Paket gestoßen, für das der GPG Key fehlte.
Diesen Schlüssel kann man wie folgt herunterladen:

cd cd /etc/pki/rpm-gpg/
wget https://docs.virtuozzo.com/keys/VZLINUX_GPG_KEY

Danach noch einmal yum update anstossen.
Eine Übersicht der Virtuozzo GPG Keys ist hier zu finden: Virtuozzo documentation


  1. Zum Erscheinungsdatum des Blogartikels die gerade aktuelle Version. 
0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.