Einrichten eines neuen Hetzner-Servers

Motivation

Das Einrichten eines neuen Servers bei Hetzner ist für mich eine regelmäßig wiederkehrende Aufgabe: Alle paar Jahre gibt es leistungsstärkere, preisgünstigere Geräte im Angebot, so dass sich ein Umzug lohnt. Außerdem wirke ich ansteckend; im Bekanntenkreis gibt es immer wieder Kolleg*innen, die sich ebenfalls einen Server einrichten wollen. Und damit wir alle nicht ständig das Rad neu erfinden müssen, halte ich hier die nötigen Konfigurationsschritte fest, in der Hoffnung, dass beim nächsten Upgrade in ein paar Jahren die neuen Versionen noch genauso konfiguriert werden müssen.

Vorbereitungen

SSH-Schlüsselpaar erstellen

Im Terminal

tbd

Mit Putty

tbd

Namen und DNS

Hostname und Domainname

Der kanonische Name eines Rechners im Internet besteht aus verschiedenen durch Punkt getrennten Labels. Diese sind hierarchisch geordnet: Je weiter vorne ein Label steht, desto spezifischer ist es. 

Das erste Label ist der lokale Teil des Hostnamens. Dahinter folgen u.U. verschiedene Level von Subdomains, als vorletztes der Domainname und zum Schluss die Top Level Domain TLD (z.b. de).

Natürlich darf man nur Domainnamen benutzen, für die man auch Rechte hat. Dazu wird man i.d.R. eine eigene Domain registrieren. Im Hetzner-Robot kann das für .de, .com, .org und einige andere TLD erfolgen. Man registriert sich dort eine noch freie Domain und kann dann über den Namensraum beliebig verfügen. Dem neuen Server gibt man einen innerhalb der eigenen Domain eigenen Namen; dieser Rechner heißt z.B. www. Für den vollen Namen (Full Qualified Domain Name, FQDN) hängt man noch die Domain an; der FQDN dieses Rechners ist also www.qno.de.

Während ein Rechner nur genau einen „wirklichen“ Hostnamen haben kann, kann er verschiedene Aliasnamen haben, die ebenso benutzt werden können. Auf diesem Rechner läuft z.B. nicht nur ein Web-, sondern auch ein Mailserver. Der soll als mail.qno.de erreichbar sein. Also bekommt der Server www auch den Aliasnamen mail.

IP-Adressen

Rechner verbinden sich im Internet über eine Version des Internet Protocol IP. IP kennt keine Namen, sondern nur Zahlen: das veraltete, aber aus Unlust an Änderungen immer noch im Gebrauch befindliche IPv4 benutzt 32 bit breite Adressen, die üblicherweise als vier 8 bit breite, durch Punkt getrennte Dezimalzahlen (von 0 bis 255) geschrieben werden. Zum Zeitpunkt des Schreibens hat dieser Server die IPv4-Adresse 136.243.102.134. Hetzner weist jedem Server genau eine IPv4-Adresse zu, die ist auch vorkonfiguriert und macht keine Arbeit.

Es gibt maximal 4 Milliarden IPv4-Adressen. Das sind bei fast 8 Milliarden Menschen zuwenige. Daher gibt es seit 1998 IPv6, das sich auch ganz, ganz langsam durchsetzt. IPv6 benutzt 128 bit breite Adressen, die in 8 durch Doppelpunkt getrennte 4er-Gruppen von Hexadezimalzahlen geschrieben werden; Abkürzungen und spezielle Adressbereiche erklärt der Wikipedia-Artikel. Damit sind ca. 230 Sextillionen Adressen verfügbar, das sollte ein paar Jahrhunderte reichen. Dabei wird die Adresse aufgeteilt in ein 64 bit breites Präfix und einen ebenfalls 64 bit breiten Interface Identifier. Hetzner gibt dem Rechner ein Präfix. Der Benutzer kann einen oder beliebig viele Identifier festlegen und so z.B. für jeden Dienst eine eigene IPv6-Adresse festlegen; unter IPv4 war das nicht möglich. 

Hetzner liefert Ubuntu so aus, dass auf der Netzwerkkarte eine IPv6-Adresse gebunden ist. Damit kann man arbeiten. Wenn man die Möglichkeiten von IPv6 ausschöpfen möchte, sollte man systematisch vorgehen, um den Überblick nicht zu verlieren. Ich nutze z.B. für Webdienste als letzten Block 0x0a01 bis 0x0aff. Dienste auf meiner Hauptdomain haben als vorletzten Block 0x0001, weitere Domains liegen auf 0x0002 usw. Es empfiehlt sich, das Schema für IPv6-Adressen mitsamt den dazugehörigen Domainnamen schriftlich festzuhalten.

DNS

Der Domain Name Service übersetzt FQDN in IP-Adressen. Hetzner bietet im Robot unter DNS-Einträge die Möglichkeit, die Hostnamen und Aliase den geplanten Adressen zuzuweisen. Wikipedia erklärt den Aufbau eines Zonefiles und der verschiedenen Resource Records. Es ist wichtig, hier sorgfältig zu arbeiten; nur so wird der Server unter den gewünschten Namen auf den erwarteten Adressen erreicht.

Konfiguration

Wir loggen uns als root mit dem zugeteilten Passwort (oder dem vorab übermittelten Schlüssel) per SSH ein.

Updates, Grundsicherheit

Hetzners Images sind nicht immer auf dem neuesten Stand. Vor allem anderen wird daher die Software aktualisiert:

#apt update

#apt full-upgrade

Wir installieren die man-Pages und den Editor vim. Letzterer ist Geschmackssache, aber wer was anderes nutzt, muss sich von jemand anderem helfen lassen. Ein vi (abgespeckte Version) ist auf praktisch jedem *NIX vorhanden. Und wenn man sich erstmal gewöhnt hat (ok, das kann ein paar Wochen dauern), kann man ganz ordentlich mit vim arbeiten

# apt install man-db vim

Bisher können wir nur als root arbeiten, das ist ein Sicherheitsrisiko. Wir legen einen normalen Benutzer an und erlauben ihm, sudo zu benutzen. Wenn wir von einem anderen Server umsteigen, empfiehlt es sich, die GID der primären Gruppe und die UID des Nutzers von dort zu übernehmen. Ansonsten lässt man den ersten Befehl und den UID-Parameter weg:

# addgroup –gid 726 neuname

# adduser –uid 727 –ingroup neuname neuname

# gpasswd -a neuname sudo

Die Voreinstellungen des sshd, des Serverprogramms, das uns die verschlüsselte Terminalverbindung bereitstellt, sind in den letzten Jahren immer besser geworden, können aber weiter verbessert werden. Dafür gibt es eine Anleitung

Wir setzen noch die Passwörter für root und den normalen User:

# passwd

# passwd neuname

Nun können wir den oben erstellten öffentlichen Schlüssel mit einem SFTP-Programm (z.B. WinSCP) nach /home/neuname/.ssh/authorized_keys hochladen. Wir booten den Server neu und können uns nach kurzer Wartezeit erstmals als normaler User per SSH einloggen.

Schreibe einen Kommentar