Ubuntu Server 18.04 installieren

Ubuntu ist eine der beliebtesten Linux-Distributionen. In diesem Artikel setzen wir einen nagelneuen Ubuntu Server 18.04 LTS auf und konfigurieren ihn so, dass eine Fernadministration per SSH möglich ist.

Einführung

Warum eigentlich Ubuntu? Ubuntu ist ein Fork des Debian-Systems und gilt momentan als die Linux-Distribution mit dem weltweit größten Marktanteil. Ubuntu ist recht einfach einzurichten und hat eine große und aktive Open Source-Community im Hintergrund. Also beste Voraussetzungen für ein neues Linux-System.

Ubuntu gibt es in den Varianten Cloud, Server, Containers, Desktop und IoT. Wir wollen einen Ubuntu Server aufsetzen.

Wir installieren bewusst die Version 18.04 LTS, sie garantiert Support bis April 2023 (Das LTS steht für long-term support), während die aktuellere Version 19.04 nur bis Juli 2020 mit Updates versorgt wird. Die nächste LTS Version 20.04 steht schon in den Startlöchern, sie ist für den 23. April 2020 angekündigt.

Die Ubuntu Server-Homepage

Die Ubuntu Server-Homepage

Beim Einrichten von Ubuntu gibt es zwei mögliche Ausgangsszenarien:

  • On Premises: Du möchtest Ubuntu auf deinem eigenen Server vor Ort installieren.

  • Cloud-basiert: Du möchtest Ubuntu bei einem Cloud-Provider installieren und nutzen.

Im ersten Fall liegt alles in Deiner Hand, im zweiten Fall triffst Du in der Regel auf ein vorkonfiguriertes Ubuntu-Image, dass Du dann komplett nach Deinen Vorstellungen anpassen kannst.

Wir behandeln in diesem Blog-Artikel nur den On Premises-Fall. Die Konfiguration eines Cloud-basierten Ubuntu Server unterscheidet sich vor allem in einem Punkt: Du hast keinen direkten Zugriff auf den Rechner, musst also von Anfang an per SSH mit Deinem Server kommunizieren. Die nötigen initialen Zugangsdaten bekommst Du von Deinem Cloud-Provider gestellt.

Womit wir auch schon beim nächsten Thema wären: SSH. Secure Shell (SSH) ist ein Netzwerkprotokoll zum sicheren Fernwarten von Netzwerkdiensten über ein unsicheres Netzwerk (z.B. das Internet). Typische Applikationen, die SSH unterstützen, sind Kommandozeilenwerkzeuge (z.B. Putty) sowie spezielle Administrationswerkzeuge (z.B. pgAdmin). SSH ist für viele Administratoren der präferierte Weg zum Fernwarten eines Linux-Servers. Da ein Ubuntu Server keine GUI besitzt, muss sowieso mit der Kommandozeile gearbeitet werden, SSH verlagert die Eingabe und Ausgabe lediglich auf Deinen lokalen Rechner.

Los geht’s

Die ersten Schritte:

  1. Gehe auf die Webseite https://ubuntu.com/download/server und lade dir dort das aktuelle ISO-Abbild des Ubuntu Server 18.04.3 LTS herunter. Die Größe der ISO-Datei ist weniger als 900 MB

  2. Erstelle einen bootfähigen USB-Stick mit dem eben heruntergeladenen ISO-Abbild. Es gibt zahlreiche freie Software-Tools dafür im Internet, ein schönes Open Source-Werkzeug wäre Rufus. Möchtest Du Dein Ubuntu virtualisieren, dann ist dies nicht notwendig, Du kannst in der Regel direkt die ISO-Datei verwenden.

  3. Wie auch immer: Boote Deinen Computer mit Hilfe des USB-Stick oder aber starte eine neue virtuelle Maschine direkt von Deinem ISO-Abbild. In beiden Fällen erscheint der Startbildschirm der Ubuntu-Installation.

  4. Wähle Deine präferierte Anzeigesprache aus und bestätige mit Done. In unserem Fall haben wir uns für Englisch entschieden.

    Startbildschirm der Installation

    Startbildschirm der Installation

  5. Jetzt musst Du das Tastaturlayout auswählen. Arbeitest Du mit einer deutschen QWERTZ-Tastatur, dann wähle German aus.

    Tastaturlayout auswählen

    Tastaturlayout auswählen

  6. Ist Dein Ubuntu Server in einem Netzwerk mit aktivem DHCP-Dienst eingebunden, ist der Netzwerkadapter bereits vorkonfiguriert. Für eine statische Netzwerkadresse oder bei mehreren verfügbaren Netzwerkadaptern kannst Du die Vorgaben natürlich nach Deinen Wünschen abändern.

    Netzwerkverbindungen

    Netzwerkverbindungen

  7. Sollte der Zugang zum Internet über einen Proxy Server laufen, dann must Du dessen Netzwerkadresse hier eintragen. Ansonsten einfach bestätigen.

    Proxy Server konfigurieren

    Proxy Server konfigurieren

  8. Die Ubuntu-Distribution besteht aus einer Vielzahl von Software-Paketen, die regelmäßig aktualisiert werden. Diese Software-Pakete werden in einem öffentlichen Softwarearchiv hinterlegt. Das Master-Archiv für Ubuntu befindet sich unter http://archive.ubuntu.com/ubuntu. Um jedoch nicht von einem Archivort abhängig zu sein, existieren zahlreiche Kopien dieses Archivs im Internet. So eine Kopie nennt man Archive Mirror. Diese dienen dazu, einen möglichen Ausfall des Master-Archiv zu kompensieren, aber auch dazu, eine Lastverteilung herzustellen.

    In unserem Fall ist der deutsche Country Mirror http://de.archive.ubuntu.com/ubuntu (also der zentrale Archive Mirror für Deutschland) voreingetragen. Genauso soll es sein, Du brauchst nur noch bestätigen.

    Archiv-Mirror konfigurieren

    Archive Mirror konfigurieren

  9. Als nächstes muss das Dateisystem konfiguriert werden. Wir übernehmen die Vorgabe und erstellen eine große Partition, welche die gesamte Festplatte überspannen soll.

    Dateisystem konfigurieren (Teil 1)

    Dateisystem konfigurieren (Teil 1)

  10. Tatsächlich werden zwei Partitionen erstellt. Eine kleine Partition für den Bootloader und die eigentliche von uns gewünschte Partition. Der Bootloader ist das Bindeglied zwischen BIOS und Linux-Kernel, er ist u.a. dafür verantwortlich, den Linux-Kernel zu laden. Die Größe der Festplatte können wir auf dem folgenden Bildschirm bei Bedarf anpassen.

    Dateisystem konfigurieren (Teil 2)

    Dateisystem konfigurieren (Teil 2)

  11. Da die Konfiguration des Dateisystems mehrere Bildschirmmasken umfasst, wird uns am Ende noch einmal eine Zusammenfassung angezeigt.

    Dateisystem konfigurieren (Zusammenfassung)

    Dateisystem konfigurieren (Zusammenfassung)

  12. Und jetzt geht auch schon gleich los. Mit der nächsten Bestätigung starten wir den Installationsprozess.

    Bestätigung zum Start der Installation

    Bestätigung zum Start der Installation

  13. Während Ubuntu nun fleißig vor sich hin installiert, können wir weitere Fragen zu unserem Profil beantworten. Wir müssen einen Benutzer definieren, um uns später an unserem Ubuntu Server anmelden zu können. Unser Ubuntu Server muss auch einen Netzwerknamen bekommen. All diese Identifikationsmerkmale tragen wir auf der folgenden Bildschirmmaske ein.

    Profil konfigurieren

    Profil konfigurieren

  14. Über OpenSSH hatten wir schon gesprochen. Ja, wir wollen OpenSSH installieren, damit wir zukünftig unseren Ubuntu Server von einem anderen Rechner aus sicher administrieren können.

    OpenSSH installieren

    OpenSSH installieren

  15. Wer möchte kann nun ein oder mehrere Snaps auswählen, die dann automatisch mitinstalliert werden. Ein Snap ist ein Softwarepaket bestehend aus einer Applikation und all Ihren Abhängigkeiten. Das wollen wir aber nicht, also lassen wir die Auswahl leer.

    Wir benötigen erst einmal keine weiteren Funktionen

    Wir benötigen erst einmal keine weiteren Funktionen

  16. Die Installation ist fertig. Jetzt müssen wir unseren Ubuntu Server neu starten.

    Fertig: Wir müssen neu starten

    Fertig: Wir müssen neu starten

  17. Nach dem Neustart blinkt uns die Eingabeaufforderung fröhlich an.

    Neustart: Wir können uns anmelden

    Neustart: Wir können uns anmelden

Unser Ubuntu Server läuft, super. Die nächsten Schritte dienen dazu, die Administration per SSH zu ermöglichen.

root, sudo und nano

Der root user ist unter Linux ein stets vorhandenes Benutzerkonto, das den Super-Administrator des Gesamtsystems repräsentiert. Er hat umfassende Rechte und kann auf alle Dateien, Daten und Kommandos zugreifen. Da der Benutzer root damit automatisch die Zielscheibe Nr. 1 für jeden Hackerangriff ist, kann man sich unter Ubuntu standardmäßig nicht als root anmelden. Man kann sich nur mit seinem persönlichen Konto anmelden (in unserem Fall also mit dem Benutzerkonto frank, das wir im Zuge der Installation angelegt haben), das wesentlich weniger Rechte besitzt.

Möchte man administrative Aufgaben in Ubuntu übernehmen, so kann man sich mittels des Befehls sudo Administrationsrechte (root privileges) zuweisen lassen. Sudo ist eine Abkürzung für superuser do.

Probieren wir es aus:

  1. Zunächst melde Dich mit dem Konto frank an.

    Anmeldung am System

    Anmeldung am System

  2. Jetzt wollen wir unseren Ubuntu Server auf den aktuellsten Stand bringen, d.h. wir wollen alle verfügbaren Updates installieren. Dazu tippe folgenden Befehl ein:

    $ sudo apt full-upgrade
    
  3. Du wirst erneut aufgefordert, Dich zu authentifizieren. Anschließend beginnt Ubuntu damit, das System zu analysieren und listet Dir alle Packages auf, die erneuert werden müssen.

    Bereit zum Aktualisieren?

    Bereit zum Aktualisieren?

  4. Du musst mit Y bestätigen, dass Ubuntu die notwendigen Packages herunterladen und installieren soll.

Was genau ist nun passiert?

Zum Aktualisieren des Systems benötigt man Administrationsrechte. Dazu haben wir dem eigentlichen Befehl apt full-upgrade den Befehl sudo vorgesetzt. Er ermöglicht berechtigten Benutzern, in der Rolle eines Administrators zu agieren.

Berechtigt sind alle Benutzer, die in der Datei

/etc/sudoers

registriert sind. Diese Benutzer heißen deshalb auch sudoers. Das Konto frank wurde bei der Installation automatisch in dieser Datei registriert. Andernfalls hätten wir ja keine Chance, unser Ubuntu zu administrieren.

Man muss sich übrigens nicht bei jedem sudo-Befehl neu authentifizieren. Nach dem ersten Mal wird man die nächsten 15 Minuten nicht erneut nach seinem Kennwort gefragt.

Zum Abschluss installieren wir uns einen anständigen Texteditor. Ubuntu bringt standardmäßig den Texteditor Vim mit. Diesen finde ich persönlich aber sehr umständlich zu bedienen, mir gefällt der Texteditor Nano besser. So wird er installiert:

$ sudo apt-get install nano

OpenSSH-Server unter Ubuntu

Installation

Der OpenSSH-Server sollte in unserem Fall bereits vorhanden sein, wir hatten ihn ja während der Installation von Ubuntu explizit ausgewählt.

Falls wir die Auswahl in der ganzen Aufregung doch übersehen haben, können wir den OpenSSH-Server wie folgt nachinstalliert:

  1. Tippe ein:

    $ sudo apt install openssh-server
    
  2. Unmittelbar danach sollte man testen, ob der SSH-Dienst aktiv ist:

    $ sudo systemctl status ssh
    
  3. Ist die Antwort negativ, kann man ihn manuell aktivieren:

    $ sudo systemctl enable ssh
    $ sudo systemctl start ssh
    

Key Fingerprints

SSH läuft jetzt. Tippe den folgenden Befehl ein:

$ ssh-keygen -l -f <(ssh-keyscan ubuntutest)

Dir werden alle öffentlichen Key Fingerprints (Schlüssel-Fingerabdrücke) des OpenSSH-Servers aufgelistet.

Beim Erstzugriff eines OpenSSH-Clients wird Dir ebenfalls ein Key Fingerprint angezeigt, und Du wirst gefragt, ob es sich beim angefragten Computer auch wirklich um den gewünschten SSH-Server handelt. Um diese Frage zu beantworten, muss der ausgewiesene Key Fingerprint mit einem der hier aufgelisteten Key Fingerprints übereinstimmen.

Dein Ubuntu Server ist jetzt bereit und kann auf SSH-Anfragen antworten. Bitte achte darauf, dass bei Einsatz einer Firewall der TCP-Port 22 freigeschaltet ist.

OpenSSH-Client unter Windows 10

Der OpenSSH-Client unter Windows 10 (ab Version 1803) ist standardmäßig installiert und kann sofort genutzt werden. Genau das machen wir jetzt auch und versuchen unseren soeben aufgesetzten Ubuntu Server per SSH zu erreichen.

Wir gehen dabei von folgender Konfiguration aus (alles nur Beispieldaten, die es real so nicht gibt):

Server:

  • DNS-Name: ubuntutest
  • Benutzername des Administrators: frank

Client:

  • DNS-Name: localhost1
  • Benutzername: frank

Authentifizierung mit Kennwort

Öffne auf Deinem Windows 10-Rechner die Windows-Kommandozeile und tippe folgendes ein:

ssh frank@ubuntutest

Beim ersten Start wird der Key Fingerprint des Servers angezeigt, und Du wirst gefragt, ob Du dich wirklich mit diesem Server verbinden möchtest.

The authenticity of host 'ubuntutest (192.168.87.128)' can't be established.
ECDSA key fingerprint is SHA256:RtXIK/85GVUFmrbgxdToTPrd3rt2++AQIYdlOwY4ycQ.
Are you sure you want to continue connecting (yes/no)?

Du solltest zunächst überprüfen, ob der angezeigte Key Fingerprint auch wirklich von Deinem Server stammt (siehe Abschnitt “Key Fingerprints”). Bestätige anschließend mit yes und der Server wird in die lokale Liste der bekannten Rechner eingetragen. Diese Abfrage siehst Du nur beim aller ersten Zugriff auf Deinen Ubuntu Server.

Anschließend wirst Du nach dem Kennwort des Benutzers frank auf dem Server ubuntutest gefragt. Tippe es ein und Du hast Fernzugriff auf Deinen Server.

Der OpenSSH-Client speichert die Liste der bekannten Rechner (Known Hosts) in einer Textdatei. Du kannst Sie Dir mit folgendem Befehl anzeigen lassen:

notepad "%USERPROFILE%\.ssh\known_hosts"

Authentifizierung mit SSH-Schlüssel

Hierbei musst Du einmalig ein Schlüsselpaar mit einem privaten und einem öffentlichen Schlüssel generieren. Der öffentliche Schlüssel wird auf dem SSH-Server hinterlegt, der private Schlüssel bleibt auf Deinem lokalen Rechner. Die Authentifizierung erfolgt nun durch das Versenden eines mit dem öffentlichen Schlüssel kodierten Datenpakets vom SSH-Server zum SSH-Client, der dieses mit seinem privaten Schlüssel wieder dekodieren muss. Ist die Dekodierung erfolgreich, bist Du authentifiziert.

Ein Schlüsselpaar erzeugen

Öffne auf Deinem Windows 10-Rechner die Windows-Kommandozeile und tippe folgendes ein:

cd %USERPROFILE%\.ssh\
ssh-keygen -t ed25519

Du bekommst folgende Meldung angezeigt:

Generating public/private ed25519 key pair.
Enter file in which to save the key (C:\Users\frank/.ssh/id_ed25519):

Bestätige mit der Eingabetaste.

Jetzt wirst Du gefragt, ob Du ein Kennwort zum Absichern Deines privaten Schlüssels definieren möchtest. Dies ist dringend zu empfehlen.

Enter passphrase (empty for no passphrase):

Das einmal eingegebene Kennwort musst Du zur Sicherheit noch einmal wiederholen:

Enter same passphrase again:

Jetzt wird ein neues Schlüsselpaar generiert und eine Meldung wie diese erscheint in Deiner Kommandozeile:

Your identification has been saved in C:\Users\frank/.ssh/id_ed25519.
Your public key has been saved in C:\Users\frank/.ssh/id_ed25519.pub.
The key fingerprint is:
SHA256:7KMZvJiITZ+HbOyqjNPV5AeC5As2GSZES5baxy1NIe4 localhost1@Frank
The key's randomart image is:
+--[ED25519 256]--+
|E   ..o=*o.+o    |
|.   .oo+oo...    |
|....  o=..       |
| o+. o  =        |
|o .oo ooS.       |
|* ...+o oo       |
|oo.. o+o+o       |
| .   o+o+o       |
|      .o..       |
+----[SHA256]-----+

Die Meldung bedeutet, dass in der Datei C:\Users\frank\.ssh\id_ed25519 der private Schlüssel und in der Datei C:\Users\frank\.ssh\id_ed25519.pub der öffentliche Schlüssel gespeichert wurde.

Wir haben hier bewusst einen Ed25519-Schlüssel erzeugt. Dieser wird momentan als sicherster Schlüsseltyp für OpenSSH empfohlen. Standardmäßig (also ohne Type-Option) erzeugt ssh-keygen einen RSA-Schlüssel.

Den öffentlichen Schlüssel verteilen

Der private Schlüssel ist privat und darf unter keinen Umständen veröffentlicht werden. Der öffentliche Schlüssel muss jedoch Deinem Ubuntu Server bekanntgemacht werden. Dazu musst Du die Datei

C:\Users\frank\.ssh\id_ed25519.pub

von Deinem lokalen Windows 10-Computer kopieren und auf Deinem Ubuntu Server unter dem neuen Pfad

~/.ssh/authorized_keys

ablegen (Achtung: Zieldatei hat keine Dateiendung).

Der folgende ziemlich lange und komplizierte Kommandozeilenbefehl hilft Dir dabei:

ssh frank@ubuntutest "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" < "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1" < C:\Users\frank\.ssh\id_ed25519.pub

Diese Befehlsorgie erstellt zunächst eine SSH-Verbindung zu Deinem Ubuntu Server (Kennwort-Authentifizierung). Dann wird überprüft, ob der Ordner ~/.ssh bereits existiert. Falls nicht, wird er angelegt. Zu guter Letzt wird der Inhalt der Datei id_ed25519.pub übertragen und als Datei unter dem Namen authorized_keys gespeichert. Achtung: Eine eventuell vorhandene Datei mit gleichem Namen würde dabei überschrieben werden.

Testen

Öffne auf Deinem Windows 10-Rechner die Windows-Kommandozeile und tippe folgendes ein:

ssh frank@ubuntutest

Du wirst nun nach dem Kennwort Deines privaten Schlüssels gefragt.

Enter passphrase for key 'C:\Users\frank/.ssh/id_ed25519':

Tippe es ein, und Du hast Fernzugriff auf Deinen Ubuntu Server.

Kennwort-Authentifizierung unterbinden

Tippe folgenden Befehl ein:

$ sudo nano /etc/ssh/sshd_config

Dir wird nun der Inhalt der Datei sshd_config im Texteditor Nano angezeigt. Diese enthält alle Konfigurationsparamter für den OpenSSH-Server unter Ubuntu.

Bei einer Authentifizierung per SSH-Schlüssel sollte die Authentifizierung per Kennwort unterbunden werden. Andernfalls läuft der sicherheitstechnische Vorteil des SSH-Schlüssels ins Leere. Daher ändere die Zeile

PasswordAuthentication yes

ab in

PasswordAuthentication no

Speichere die Konfigurationsdatei (Drücke dazu die Tastenkombination Strg+^+X und anschließend Y) und starte den OpenSSH-Serverdienst neu. Tippe dazu folgenden Befehl ein:

$ sudo systemctl restart ssh

Kennwort oder SSH Schlüssel?

Die meisten Tutorials empfehlen den SSH-Schlüssel als sicherste Alternative. Bei dieser Methode verlässt der SSH-Schlüssel nicht Deinen Rechner, kann also weder abgefangen noch durch einen Brute-Force-Angriff erraten werden. Dies setzt allerdings voraus, dass Dein Client-Computer abgesichert ist und auch bei einem Diebstahl nicht sofort geknackt werden kann, denn der private SSH-Schlüssel ist dort dauerhaft gespeichert. Es wird daher dringend empfohlen, den privaten SSH-Schlüssel mit einem starken Kennwort zu schützen.

Noch Fragen?

Ein Mini-FAQ:

  1. Wie füge ich weitere Benutzer zu meinem Ubuntu Server hinzu?

    $ sudo adduser matthias
    

    Im Zuge dieses Befehls musst Du das Kennwort für matthias definieren und weitere Fragen zum Profil des Benutzers beantworten.

  2. Wie kann ich diesen Benutzer auch als Sudoer registrieren?

    $ sudo usermod -aG sudo matthias
    
  3. Wie starte ich meinen Ubuntu Server neu?

    $ sudo reboot
    
  4. Wie fahre ich meinen Ubuntu Server herunter?

    $ sudo poweroff
    
  5. Mal was ohne sudo?

    $ lsb_release -a
    

    Gibt die aktuelle Version Deines Ubuntu Servers aus.

Fazit

Ubuntu Server 18.04 LTS ist nun installiert und Du kannst ihn per SSH fernwarten. Jetzt liegt es an Dir, weitere Dienste zu installieren, um Deinen Ubuntu Server produktiv werden zu lassen.

Teile diesen Artikel
comments powered by Disqus